Scrivere un'applicazione multilingue in React Native
La localizzazione del prodotto è molto importante per le aziende internazionali che esplorano nuovi paesi e regioni. Allo stesso modo, la localizzazione è necessaria per le applicazioni mobili. Se uno sviluppatore inizia l'espansione internazionale, è importante offrire agli utenti di un altro paese l'opportunità di lavorare con l'interfaccia nella loro lingua madre. In questo articolo creeremo un'applicazione React Native utilizzando il pacchetto reagire-nativo-localizzare.
Skillbox consiglia: Corso didattico online "Sviluppatore Java professionista". Ti ricordiamo:per tutti i lettori di "Habr" - uno sconto di 10 rubli al momento dell'iscrizione a qualsiasi corso Skillbox utilizzando il codice promozionale "Habr".
Strumenti e abilità
Per comprendere questo articolo, sono necessarie competenze di base per lavorare con React Native. Per familiarizzare con le impostazioni della macchina funzionante, puoi utilizzare le istruzioni ufficiali.
Avremo bisogno di queste versioni di strumenti software:
Nodo v10.15.0
npm 6.4.1
filato 1.16.0
reattivo-nativo 0.59.9
reagire-nativo-localizzare 1.1.3
i18n-js 3.3.0
Начинаем
Creeremo un'applicazione che supporterà inglese, francese e arabo. Per prima cosa creiamo un nuovo progetto utilizzando react-native-cli. Per fare ciò è necessario digitare nel terminale:
$ react-native init multilingua
$ cd multilingue
Aggiunta delle librerie necessarie
Il primo passo è installare react-native-localize digitando quanto segue:
$ filato aggiungi react-native-localize
La libreria react-native-localize offre allo sviluppatore l'accesso a funzionalità multilingue. Ma ha bisogno di un'altra libreria: i18n.
Questo articolo descrive l'uso I18n.js per fornire la traduzione in JavaScript.
$ filato aggiungi i18n-js
Bene, poiché i18n-js non fornisce memorizzazione nella cache o memorizzazione, suggerisco di utilizzare lodash.memoize per questo:
$ filato aggiungi lodash.memoize
Lavorare con le traduzioni
Affinché l'applicazione possa funzionare con altre lingue, è necessario prima creare una directory delle traduzioni all'interno di src, quindi tre file JSON per ciascuna lingua.
1. en.json per l'inglese;
2. fr.json per il francese;
3. ar.json per l'arabo.
Questi file contengono oggetti JSON con chiavi e valori. La chiave sarà la stessa per ogni lingua. Viene utilizzato dall'applicazione per visualizzare informazioni di testo.
Il valore è il testo che deve essere mostrato all'utente.
Inglese:
{"ciao": "Ciao mondo!"}
Francese
{"ciao": "Salut le Monde!"}
arabo
{ "ciao": "أهلاً بالعالم"}
Puoi aggiungere altre lingue allo stesso modo.
Codice principale
A questo punto è necessario aprire il file App.js e aggiungervi le importazioni:
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";
Successivamente vengono aggiunte funzioni e costanti ausiliarie che saranno utili in seguito.
Il primo elemento, setI18nConfig(), imposta la configurazione iniziale.
Quindi devi aggiungere un ascoltatore di eventi a componenteDidMount(), questo elemento ascolterà gli aggiornamenti e chiamerà handleLocalizationChange() quando si verificano.
Il metodo handleLocalizationChange() attiva setI18nConfig() e forceUpdate(). Ciò è necessario per i dispositivi Android poiché è necessario eseguire il rendering del componente affinché le modifiche siano evidenti.
Quindi è necessario rimuovere l'ascolto dal metodo ComponentWillUnmount().
Infine, render() restituisce ciao utilizzando Translate() e aggiungendovi un parametro chiave. Dopo questi passaggi, l'applicazione sarà in grado di “capire” quale lingua è necessaria e visualizzare i messaggi al suo interno.
Avvio dell'applicazione
Ora è il momento di verificare come funziona la traduzione.
Innanzitutto, avviamo l'applicazione nel simulatore o nell'emulatore digitando
$ run-ios react-nativo
$ run-android nativo di reazione
Sembrerà qualcosa del genere:
Ora puoi provare a cambiare la lingua in francese avviando l'applicazione.
Facciamo la stessa cosa con l'arabo, non c'è differenza.
Fin qui tutto bene.
Ma cosa succede se selezioni una lingua a caso per la quale non è presente alcuna traduzione nell'applicazione?
Si scopre che il compito di findBestLanguage è fornire la traduzione ottimale tra tutte quelle disponibili. Di conseguenza, verrà visualizzata la lingua predefinita.
Stiamo parlando delle impostazioni del telefono. Ad esempio, nell'emulatore iOS puoi vedere l'ordine delle lingue.
Se la lingua selezionata non è la lingua preferita, findBestAvailableLanguage restituisce undefinito in modo che venga visualizzata la lingua predefinita.
premio
react-native-localize ha un'API che fornisce l'accesso a un gran numero di elementi linguistici. Prima di iniziare a lavorare, Vale la pena consultare la documentazione.
risultati
L'applicazione può essere resa multilingue senza problemi. React-native-localize è un'ottima opzione che ti consente di espandere la base utenti della tua app.