Если вы не отставали от моего блога и учебных пособий, вы будете знать, что я написал немало постов по Ionic Framework . В последнее время я много слышал о React Native, поэтому решил, что пришло время попробовать .
В мире насчитывается 6500 языков и примерно семь миллиардов человек . Скорее всего, ваш родной язык известен только небольшой части населения мира. Вы можете ускорить загрузку своего приложения и общую оптимизацию App Store (ASO), применив большее количество языков.
В прошлом году я провел урок по локализации (l10n) и интернационализации (i18n) в приложениях Ionic Framework для Android и iOS. На этот раз я собираюсь повторить то же самое, но в приложении React Native для iOS.
Если вы впервые рассматриваете React Native, вам следует помнить, что на данный момент он совместим только с iOS. Я верю, что Android появится в будущем, но пока нет. Это означает, что вам понадобится Mac для любой разработки.
Давайте начнем этот урок с первого создания нового проекта React Native. Предполагая, что на вашем компьютере установлен React Native, запустите следующее из приложения Mac Terminal:
react-native init ReactProject
cd ReactProject
В этом проекте будет использован плагин React Native response -native-i18n Александра Зайцева для любого перевода. С проектом в качестве текущего рабочего каталога в вашем Терминале выполните следующую команду:
npm install react-native-i18n --save
Теперь зависимости находятся в каталоге вашего проекта, но их также необходимо добавить в проект Xcode.
Откройте ReactProject.xcodeproj, найденный в корне вашего проекта. Теперь щелкните правой кнопкой мыши по каталогу библиотек, найденному в дереве проекта XCode, и выберите « Добавить файлы в« ReactProject »…» . Вы хотите добавить RNI18n.xcodeproj, найденный в каталоге вашего проекта node_modules / реагировать-native-i18n .
Затем добавьте libRNI18n.a через раздел « Связать двоичные файлы с библиотеками » фаз сборки в Xcode.
Плагин был добавлен в ваш проект, но не в код вашего проекта.
Откройте файл index.ios.js, найденный в корне вашего проекта, и включите следующую строку:
var I18n = require('react-native-i18n');
Многое из того, что будет дальше, исходит из документации плагина.
Согласно документации рекомендуется использовать языковые запасные варианты. Например, вы можете добавить переводы для en_US и en_GB , но с включенными запасными вариантами вы можете вместо этого иметь более общий перевод для en . Этот запасной вариант можно включить, добавив следующее:
I18n.fallbacks = true;
Теперь давайте посмотрим, что нужно для добавления некоторых переводов. По сути, мы будем просто создавать объект с родительскими свойствами для любой локали, которую мы хотим использовать. Например:
I18n.translations = {
en: {
greeting: "Hello",
goodbye: "Bye"
},
fr: {
greeting: "Bonjour",
goodbye: "Au Revoir"
},
es: {
greeting: "Hola",
goodbye: "Adios"
}
}
В приведенном выше объекте у нас есть три разных языка, все из которых используют запасное значение. У нас есть приветственное и интересное слово для английского, испанского и французского языков. Эти переведенные переменные могут использоваться следующим образом:
<Text>{I18n.t("greeting")}</Text>
<Text>{I18n.t("goodbye")}</Text>
Чтобы лучше понять все это вместе, ваш полный файл index.ios.js может выглядеть следующим образом:
'use strict';
var React = require('react-native');
var I18n = require('react-native-i18n');
var {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
var ReactProject = React.createClass({
render: function() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
{I18n.t("greeting")}
</Text>
<Text style={styles.goodbye}>
{I18n.t("goodbye")}
</Text>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
goodbye: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
I18n.fallbacks = true;
I18n.translations = {
en: {
greeting: "Hello",
goodbye: "Bye"
},
fr: {
greeting: "Bonjour",
goodbye: "Au Revoir"
},
es: {
greeting: "Hola",
goodbye: "Adios"
}
}
AppRegistry.registerComponent('ReactProject', () => ReactProject);
Я пошел вперед и выделил важные строки кода.
Вывод
Как и в случае Angular Translate для Ionic Framework, мы можем добавить функции локализации и интернационализации в наше приложение React Native. Это потрясающий способ повысить оптимизацию вашего магазина приложений (ASO), поскольку теперь ваше приложение будет охватывать больше аудитории.
Видео-версию этой статьи можно увидеть ниже.