Ndepụta ngwaahịa dị ezigbo mkpa maka ụlọ ọrụ mba ụwa na-enyocha obodo na mpaghara ọhụrụ. N'otu aka ahụ, achọrọ mpaghara maka ngwa mkpanaka. Ọ bụrụ na onye nrụpụta amalite mgbasawanye mba ụwa, ọ dị mkpa inye ndị ọrụ si mba ọzọ ohere iji rụọ ọrụ na interface n'asụsụ ala nna ha. N'isiokwu a, anyị ga-emepụta ngwa Native React site na iji ngwugwu meghachi omume-nwa afọ-localize.
Skillbox na-atụ aro: Usoro nkuzi n'ịntanetị "Ọkachamara Java onye nrụpụta". Anyị na -echetara:maka ndị na-agụ Habr niile - ego 10 ruble mgbe ị na-edebanye aha na nkuzi Skillbox ọ bụla site na iji koodu mgbasa ozi Habr.
Ngwá ọrụ na nkà
Iji ghọta akụkọ a, ịchọrọ nkà ndị bụ isi n'ịrụ ọrụ na React Native. Iji mara onwe gị na ntọala nke igwe na-arụ ọrụ, ị nwere ike jiri ntuziaka ntuziaka.
Anyị ga-achọ ụdị ngwa ngwanrọ ndị a:
Ọnụ v10.15.0
npm 6.4.1
yarn 1.16.0
meghachi omume-nwa afọ 0.59.9
meghachi omume-nwa afọ-localize 1.1.3
i18n-js 3.3.0
Na-amalite
Anyị ga-emepụta ngwa ga-akwado Bekee, French na Arabic. Nke mbụ, anyị na-emepụta ọrụ ọhụrụ site na iji react-native-cli. Iji mee nke a, ịkwesịrị pịnye nke a na njedebe:
$ react-nwa afọ init multiLanguage
$ cd ọtụtụ asụsụ
Na-agbakwụnye ọba akwụkwọ ndị dị mkpa
Nzọụkwụ mbụ bụ ịwụnye react-native-localize site na ịpị ihe ndị a:
$ yarn tinye mmeghachi omume-nwaafọ-localize
Ọbá akwụkwọ na-emeghachi omume-nwaafọ-na-enye onye nrụpụta ohere ịnweta atụmatụ asụsụ ọtụtụ. Mana ọ chọrọ otu ọba akwụkwọ ọzọ - i18n.
Isiokwu a na-akọwa ojiji I18n.js iji nye ntụgharị asụsụ Javascript.
$ yarn tinye i18n-js
Ọ dị mma, ebe ọ bụ na i18n-js anaghị enye caching ma ọ bụ ntughari, ana m atụ aro iji lodash.memoize maka nke a:
$ yarn tinye lodash.memoize
Na-arụ ọrụ na ntụgharị asụsụ
Ka ngwa ahụ wee nwee ike iji asụsụ ndị ọzọ rụọ ọrụ, ị ga-ebu ụzọ mepụta ndekọ ntụgharị asụsụ n'ime src, wee mechaa faịlụ JSON atọ maka asụsụ ọ bụla.
1. en.json maka Bekee;
2. fr.json maka French;
3. ar.json maka Arabic.
Faịlụ ndị a nwere ihe JSON nwere igodo na ụkpụrụ. Igodo ga-abụ otu maka asụsụ ọ bụla. Ngwa na-eji ya gosi ozi ederede.
Uru bụ ederede kwesịrị igosi onye ọrụ.
Igbo:
{"ndewo": "Ndewo ụwa!"}
French
{"ndewo": "Salut le Monde!"}
Арабский
{"ndewo": "أهلاً بالعالم"}
Ị nwere ike itinye asụsụ ndị ọzọ n'otu ụzọ ahụ.
Koodu isi
N'oge a, ịkwesịrị imepe faịlụ App.js wee tinye mbubata na ya:
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";
Mgbe nke a gasịrị, a na-agbakwunye ọrụ inyeaka na nkwụsịtụ nke ga-aba uru mgbe e mesịrị.
Mgbe ahụ ịkwesịrị ịgbakwunye ihe omume na-ege ntị na componentsDidMount(), ihe a ga-ege ntị maka mmelite wee kpọọ handleLocalizationChange() mgbe ha mere.
Usoro handleLocalizationChange() na-arụ ọrụ setI18nConfig() na forceUpdate(). Nke a dị mkpa maka ngwaọrụ gam akporo dị ka akụrụngwa ga-emerịrị maka mgbanwe ndị a ga-ahụ anya.
Mgbe ahụ ịkwesịrị iwepu ege ntị na usoro componentsWillUnmount().
N'ikpeazụ, nyeghachi() weghachi ndewo site na iji ntụgharị asụsụ () ma tinye otu isi ihe na ya. Mgbe usoro ndị a gasịrị, ngwa ahụ ga-enwe ike "ịghọta" asụsụ achọrọ ma gosipụta ozi na ya.
Mwepụta ngwa
Ugbu a bụ oge ịlele ka ntụgharị asụsụ si arụ ọrụ.
Nke mbụ, anyị na-amalite ngwa na simulator ma ọ bụ emulator site na ịpị
Ugbu a ị nwere ike ịgbalị ịgbanwe asụsụ ka ọ bụrụ French site na ịmalite ngwa ahụ.
Anyị na Arabic na-eme otu ihe ahụ, ọ dịghị ihe dị iche.
Dị nnọọ mma.
Mana gịnị ga - eme ma ọ bụrụ na ịhọrọ asụsụ enweghị atụ nke enweghị ntụgharị asụsụ na ngwa a?
Ọ tụgharịrị na ọrụ chọtaBestLanguage bụ ịnye ntụgharị asụsụ kacha mma sitere na ndị niile dị. N'ihi ya, a ga-egosipụta asụsụ ndabara.
Anyị na-ekwu maka ntọala ekwentị. Dịka ọmụmaatụ, na emulator iOS ị nwere ike ịhụ usoro asụsụ.
Ọ bụrụ na asụsụ ahọpụtara abụghị asụsụ kacha amasị, chọtaBestAvailableLanguage na-eweghachite akọwapụtaghị ya ka edepụta asụsụ ndabara.
Daashi
react-native-localize nwere API nke na-enye ohere ịnweta nnukwu ọnụọgụ asụsụ. Tupu ịmalite ọrụ, Ọ bara uru ịlele akwụkwọ ahụ.
Nchoputa
Enwere ike ịme ngwa ahụ ka ọ bụrụ ọtụtụ asụsụ na-enweghị nsogbu ọ bụla. React-native-localize bụ nnukwu nhọrọ na-enye gị ohere ịgbasa ntọala onye ọrụ ngwa gị.