Lokalizasyon pwodwi trè enpòtan pou konpayi entènasyonal yo eksplore nouvo peyi ak rejyon yo. Menm jan an tou, lokalizasyon nesesè pou aplikasyon mobil. Si yon pwomotè kòmanse ekspansyon entènasyonal, li enpòtan pou bay itilizatè ki soti nan yon lòt peyi opòtinite pou yo travay ak koòdone nan lang natif natal yo. Nan atik sa a, nou pral kreye yon aplikasyon React Native lè l sèvi avèk pake a reyaji-natif-lokalize.
Skillbox rekòmande: Kou edikatif sou entènèt "pwofesyon Java pwomotè". Nou raple:pou tout lektè "Habr" - yon rabè nan 10 rubles lè w ap enskri nan nenpòt kou Skillbox lè l sèvi avèk kòd pwomosyon "Habr".
Zouti ak konpetans
Pou w konprann atik sa a, ou bezwen konpetans debaz nan travay ak React Native. Pou familyarize tèt ou ak anviwònman yo nan machin nan k ap travay, ou kapab sèvi ak enstriksyon ofisyèl yo.
Nou pral bezwen vèsyon sa yo nan zouti lojisyèl:
Node v10.15.0
npm 6.4.1
fil 1.16.0
reyaji-natif 0.59.9
reyaji-natif-lokalize 1.1.3
i18n-js 3.3.0
Pou kòmanse
Nou pral kreye yon aplikasyon ki pral sipòte angle, franse ak arab. Premyèman, nou kreye yon nouvo pwojè lè l sèvi avèk react-native-cli. Pou fè sa, ou bezwen tape sa a nan tèminal la:
$ reyaji-natif init plizyè lang
$ cd miltilang
Ajoute bibliyotèk ki nesesè yo
Premye etap la se enstale react-native-localize pa tape sa ki annapre yo:
$ fil ajoute reyaji-natif-localize
Bibliyotèk reyaji-natif-lokalize bay pwomotè aksè a karakteristik plizyè lang. Men, li bezwen yon lòt bibliyotèk - i18n.
Atik sa a dekri itilizasyon an I18n.js yo nan lòd yo bay tradiksyon nan JavaScript.
$ fil ajoute i18n-js
Oke, depi i18n-js pa bay kachèt oswa memoization, mwen sijere itilize lodash.memoize pou sa a:
$ fil ajoute lodash.memoize
Travay ak tradiksyon
Pou aplikasyon an kapab travay ak lòt lang, premye bezwen kreye yon anyè tradiksyon andedan src, apresa twa fichye JSON pou chak lang.
1. en.json pou angle;
2. fr.json pou franse;
3. ar.json pou arab.
Fichye sa yo genyen objè JSON ak kle ak valè. Kle a ap menm pou chak lang. Li itilize pa aplikasyon an pou montre enfòmasyon tèks.
Valè se tèks la ki bezwen montre itilizatè a.
Angle:
{"hello": "Bonjou lemonn!"}
Французский
{"hello": "Salut le Monde!"}
Арабский
{ "bonjou": "أهلاً بالعالم"}
Ou ka ajoute lòt lang nan menm fason an.
Kòd prensipal la
Nan pwen sa a, ou bezwen louvri dosye a App.js epi ajoute enpòtasyon nan li:
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";
Apre sa, fonksyon oksilyè ak konstan yo ajoute ki pral itil pita.
Premye eleman, setI18nConfig(), mete konfigirasyon inisyal la.
Lè sa a, ou bezwen ajoute yon koute evènman nan componentDidMount (), eleman sa a pral koute mizajou epi rele handleLocalizationChange () lè yo rive.
Metòd handleLocalizationChange() aktive setI18nConfig() ak forceUpdate(). Sa a se nesesè pou aparèy android kòm eleman nan dwe rann pou chanjman yo dwe aparan.
Lè sa a, ou bezwen retire koute nan metòd la componentWillUnmount().
Finalman, render() retounen alo lè l sèvi avèk translate() epi ajoute yon paramèt kle nan li. Apre etap sa yo, aplikasyon an pral kapab "konprann" ki lang ki nesesè epi montre mesaj ladan l.
Lansman aplikasyon an
Kounye a se moman pou tcheke kijan tradiksyon an fonksyone.
Premyèman, nou lanse aplikasyon an nan similatè a oswa emulateur pa tape