La localització de productes és molt important per a les empreses internacionals que desenvolupen nous països i regions. De la mateixa manera, la localització és necessària per a les aplicacions mòbils. Si un desenvolupador comença l'expansió internacional, és important oferir als usuaris d'un altre país l'oportunitat de treballar amb la interfície en la seva llengua materna. En aquest article, crearem una aplicació React Native utilitzant el paquet reaccionar-natiu-localitzar.
Skillbox recomana: Curs educatiu en línia "Desenvolupador Java professional". Recordem:per a tots els lectors de "Habr": un descompte de 10 rubles en inscriure's a qualsevol curs de Skillbox amb el codi promocional "Habr".
Eines i habilitats
Entendre aquest article requereix habilitats bàsiques de React Native. Per familiaritzar-se amb la configuració de la màquina de treball, podeu utilitzar instruccions oficials.
Necessitem aquestes versions d'eines de programari:
Node v10.15.0
npm 6.4.1
fil 1.16.0
reaccionar-natiu 0.59.9
reaccionar-natiu-localitzar 1.1.3
i18n-js 3.3.0
Introducció
Crearem una aplicació que admetrà anglès, francès i àrab. Primer creem un nou projecte amb react-native-cli. Per fer-ho, al terminal heu d'escriure això:
$ react-native init multiLanguage
$ cd multiidioma
Afegint les biblioteques necessàries
El primer pas és instal·lar react-native-localize escrivint el següent:
$ fil afegir react-native-localize
La biblioteca react-native-localize ofereix al desenvolupador accés a funcions multilingües. Però necessita una altra biblioteca: i18n.
L'article descriu l'ús I18n.js per tal de proporcionar traducció en JavaScript.
$ fil afegir i18n-js
Bé, com que i18n-js no proporciona memòria cau ni memorització, suggereixo utilitzar lodash.memoize per a això:
$ fil afegir lodash.memoize
Treballar amb traduccions
Perquè l'aplicació funcioni amb altres idiomes, primer heu de crear un directori de traduccions dins de src i després tres fitxers JSON per a cadascun dels idiomes.
1. en.json per a anglès;
2. fr.json per al francès;
3. ar.json per a àrab.
Aquests fitxers contenen objectes JSON amb claus i valors. La clau serà la mateixa per a cada idioma. L'utilitza l'aplicació per mostrar informació textual.
El valor (valor) és el text que cal mostrar a l'usuari.
Anglès:
{ "hello": "Hola món!"}
Французский
{ "hello": "Salut le Monde!"}
Арабский
{ "hola": "أهلاً بالعالم"}
Es poden afegir altres idiomes de la mateixa manera.
Codi principal
En aquest punt, heu d'obrir el fitxer App.js i afegir-hi importacions:
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";
Després d'això, s'afegeixen funcions i constants auxiliars, que seran útils més endavant.
El primer element, setI18nConfig(), estableix la configuració inicial.
Aleshores hem d'afegir un escolta d'esdeveniments a componentDidMount() , aquest element escoltarà les actualitzacions i trucarà a handleLocalizationChange() quan es produeixin.
El mètode handleLocalizationChange() invoca setI18nConfig() i forceUpdate(). Això és necessari per als dispositius Android, ja que el component s'ha de representar perquè els canvis siguin visibles.
Aleshores hem d'eliminar l'oient del mètode componentWillUnmount().
Finalment, hello es retorna a render() utilitzant translate() i afegint-hi un paràmetre clau. Després d'aquests passos, l'aplicació podrà "entendre" quin idioma es necessita i mostrar-hi missatges.
Llançament de l'aplicació
Ara és el moment de comprovar com funciona la traducció.
Primer executem l'aplicació al simulador o emulador escrivint
$ run-ios natiu de reacció
$ react-native run-android
Es veurà com això:
Ara podeu provar de canviar l'idioma al francès iniciant l'aplicació.
Fem el mateix amb la llengua àrab, no hi ha diferència.
Fins aquí tot va bé.
Però què passa si seleccioneu un idioma aleatori que no té traducció a l'aplicació?
Resulta que la tasca de findBestLanguage és proporcionar la millor traducció possible entre totes les disponibles. Com a resultat, es mostrarà l'idioma establert per defecte.
Es tracta de la configuració del telèfon. Així, per exemple, a l'emulador d'iOS, podeu veure l'ordre dels idiomes.
Si l'idioma seleccionat no és l'idioma preferit, findBestAvailableLanguage retorna sense definir de manera que es mostra l'idioma predeterminat.
prima
react-native-localize té una API que proporciona accés a un gran nombre d'elements del llenguatge. Abans de començar a treballar, val la pena llegir la documentació.
Troballes
L'aplicació es pot fer multilingüe sense cap problema. React-native-localize és una gran opció que us permet ampliar el ventall d'usuaris de la vostra aplicació.