Scribens multilingues application in React Accuratissima Totius

Scribens multilingues application in React Accuratissima Totius

Productus localisation valde maximus est pro societatibus internationalibus novas regiones et regiones explorandi. Similiter localisatio requiritur ad applicationes mobiles. Si elit expansionem internationalem incipit, interest ut users ex alia regione facultatem tribuat operandi cum instrumento in lingua patria. In hoc articulo, applicationem Nativam React creabimus utentes sarcina agere, patria, localise.

Skillbox commendat: Educational online course "Professio Java Developer".
admonemus; omnibus legentibus "Habr" - discount 10 rublorum cum scribendo in quavis Skillbox utens "Habr" codice promotivo.

Instrumenta et artes

Ad hunc articulum intelligendum, basic artes debes operari cum React Nativam. Adsuescere te cum fundis machinae laborantis, potes uti instructiones.

His versionibus instrumentorum programmatum egebimus:

  • Node v10.15.0
  • npm 6.4.1
  • bis 1.16.0
  • agere-patria 0.59.9
  • agere, patria, localize 1.1.3
  • i18n-js 3.3.0

questus Coepi

Applicationem creabimus quae Anglicam, Gallicam et Arabicam feret. Primum novum consilium utentes react-native-cli creamus. Hoc facere debes ut hoc in terminali typum sit;

$ react-native init multiLanguage
$ cd multiLanguage

Addens necessarias bibliothecas

Primus gradus est institutionem react-nandi-colificandam per typing sequentes:
$ bis tinctum addendi react-nativa localise

Si difficultates fiunt per processum institutionem, Est dignum legere institutionem manual.

Bibliotheca react-nativa localise aditum elit cum multilinguis notis dat. Sed una magis indiget bibliotheca — i18n.

Hic articulus describitur usus I18n.js ut translationem in JavaScript.

$ bis tinctum adde i18n-js

Bene, quoniam i18n-js non praebet caching aut memoization, admoneo utendo lodash.memoize pro hoc:

$ bis tinctum adde lodash.memoize

Operatio cum translationibus

Ut applicationis cum aliis linguis laborare possit, primum debes translationes directorium intra src creare, deinde tres fasciculi JSON pro unaquaque lingua.

1. en.json pro Latine;

2. fr.json for Gallicum;

3. ar.json pro Arabico.

Hae tabulae insunt obiecti JSON cum clavibus et valoribus. Eadem clavis utriusque linguae erit. Ponitur in applicatione ad informationes textuum exhibitarum.

Valor est textus usoris exhibendus.

Anglice:

{"Salve": "Salve Orbis!"}

Gallica

{"Salve": "Salve le Monde!"}

Арабский

{ "salve": " "}

Alias ​​linguas eodem modo addere potes.

Praecipuum signum

Hic, necesse est tabellam App.js aperire et ei importare adde:

import React from "react";
import * as RNLocalize from "react-native-localize";
import i18n from "i18n-js";
import memoize from "lodash.memoize"; // Use for caching/memoize for better performance
 
import {
  I18nManager,
  SafeAreaView,
  ScrollView,
  StyleSheet,
  Text,
  View
} from "react-native";

Post haec munera auxilia et constantes accedunt quae postea usui erunt.

const translationGetters = {
  // lazy requires (metro bundler does not support symlinks)
  ar: () => require("./src/translations/ar.json"),
  en: () => require("./src/translations/en.json"),
  fr: () => require("./src/translations/fr.json")
};
 
const translate = memoize(
  (key, config) => i18n.t(key, config),
  (key, config) => (config ? key + JSON.stringify(config) : key)
);
 
const setI18nConfig = () => {
  // fallback if no available language fits
  const fallback = { languageTag: "en", isRTL: false };
 
  const { languageTag, isRTL } =
    RNLocalize.findBestAvailableLanguage(Object.keys(translationGetters)) ||
    fallback;
 
  // clear translation cache
  translate.cache.clear();
  // update layout direction
  I18nManager.forceRTL(isRTL);
  // set i18n-js config
  i18n.translations = { [languageTag]: translationGetters[languageTag]() };
  i18n.locale = languageTag;
};

Bene, nunc faciamus elementum App classis:

export default class App extends React.Component {
  constructor(props) {
    super(props);
    setI18nConfig(); // set initial config
  }
 
  componentDidMount() {
    RNLocalize.addEventListener("change", this.handleLocalizationChange);
  }
 
  componentWillUnmount() {
    RNLocalize.removeEventListener("change", this.handleLocalizationChange);
  }
 
  handleLocalizationChange = () => {
    setI18nConfig();
    this.forceUpdate();
  };
 
  render() {
    return (
      <SafeAreaView style={styles.safeArea}>
        <Text style={styles.value}>{translate("hello")}</Text>
      </SafeAreaView>
    );
  }
}
 
const styles = StyleSheet.create({
  safeArea: {
    backgroundColor: "white",
    flex: 1,
    alignItems: "center",
    justifyContent: "center"
  },
  value: {
    fontSize: 18
  }
});

Primum elementum, setI18nConfig(), configurationem initialem constituit.

Tunc debes addere eventum auditorem componentDidMount(), hoc elementum pro updates audiet et in manubrium LocalizationCange() cum fiet.

The handleLocalizationChange() methodus setI18nConfig() operatur et forceUpdate(). Haec MASCULINUS adinventiones necessariae sunt ut component reddendae sunt mutationes notabiles.

Tunc necesse est audientiam e methodo componentWillUnmount removere.

Denique redde () salve utendo transferendo et addendo ei modulo clavem. Post hos gradus applicationis "intelligere" poterit quid opus sit verbis, ac nuntiis in ea proponere.

Applicationem Lorem

Nunc tempus est reprimere quomodo translatio operatur.

Primum applicationem in simulatoris vel aemulatoris typing deducimus

$ React-patria run-ios
$ React-patria run-Android

Videbit aliquid simile hoc;

Scribens multilingues application in React Accuratissima Totius

Nunc experiri potes linguam Gallicam mutato applicatione deducendo.

Scribens multilingues application in React Accuratissima Totius

Arabice idem facimus, nulla differentia.

Sic tantum bonum.

Sed quid fit si linguam temere decerpas cui nulla est interpretatio in applicatione?

Evenit ut munus inveniendiBestLanguage sit optimalem translationem ab omnibus in promptu praebere. Quam ob rem lingua defalta ostendetur.

Loquimur de occasus telephonicus. Exempli gratia, in iOS aemulatorem videre potes ordinem linguarum.

Scribens multilingues application in React Accuratissima Totius

Si lingua electa lingua praelata non est, indefinitum reperiesBestAvailableLanguage ut lingua defalta ostendatur.

bonus

react-nativa localise habet API qui aditum praebet ad magnum numerum linguarum elementorum. Prius quam incipias opus, Suus 'dignitas reprehendo sicco documenta.

Inventiones

Applicatio multilingui sine ullis quaestionibus fieri potest. React-nativa localise optio magna est quae te permittit ut basim usoris appi tuam expandas.

Project source code adest.

Skillbox commendat:

Source: www.habr.com

Add a comment