Tena zava-dehibe ho an'ny orinasa iraisam-pirenena mikaroka firenena sy faritra vaovao ny fametrahana ny vokatra. Toy izany koa, ilaina ny localization ho an'ny fampiharana finday. Raha manomboka fanitarana iraisam-pirenena ny developer iray, dia zava-dehibe ny manome fahafahana ireo mpampiasa avy amin'ny firenena hafa hiara-miasa amin'ny interface amin'ny fitenin-drazany. Amin'ity lahatsoratra ity dia hamorona rindranasa React Native mampiasa ny fonosana isika react-native-localize.
Mba hahatakarana ity lahatsoratra ity dia mila fahaiza-manao fototra ianao amin'ny fiaraha-miasa amin'ny React Native. Mba hahafantaranao ny toetry ny milina miasa, azonao atao ampiasao ny torolΓ lana ofisialy.
Mila ireto fitaovana rindrambaiko ireto izahay:
Node v10.15.0
npm 6.4.1
kofehy 1.16.0
react-native 0.59.9
react-native-localize 1.1.3
i18n-js 3.3.0
Manomboka
Hamorona fampiharana izay hanohana ny teny anglisy, frantsay ary arabo izahay. Voalohany dia mamorona tetikasa vaovao mampiasa react-native-cli. Mba hanaovana izany dia mila manoratra ity amin'ny terminal ianao:
$ react-native init multiLanguage
$ cd multilanguage
Manampy ireo tranomboky ilaina
Ny dingana voalohany dia ny fametrahana react-native-localize amin'ny fanoratana ireto manaraka ireto:
$ yarn add react-native-localize
Ny tranomboky react-native-localize dia manome ny mpamorona ny fidirana amin'ny endri-javatra amin'ny fiteny maro. Saingy mila tranomboky iray hafa izy - i18n.
Ity lahatsoratra ity dia mamaritra ny fampiasana I18n.js mba hanomezana dikanteny amin'ny JavaScript.
$ yarn ampio i18n-js
Eny, satria i18n-js tsy manome caching na fahatsiarovana, dia manoro hevitra aho ny hampiasa lodash.memoize amin'ity:
$ yarn ampio lodash.memoize
Miasa amin'ny fandikan-teny
Mba hahafahan'ny fampiharana miasa amin'ny fiteny hafa dia mila mamorona lahatahiry fandikan-teny ao anaty src ianao, avy eo rakitra JSON telo isaky ny fiteny.
1. en.json amin'ny teny anglisy;
2. fr.json amin'ny teny frantsay;
3. ar.json amin'ny teny arabo.
Ireo rakitra ireo dia misy zavatra JSON misy fanalahidy sy soatoavina. Ny fanalahidy dia hitovy amin'ny fiteny tsirairay. Izy io dia ampiasain'ny fampiharana hanehoana fampahalalana amin'ny lahatsoratra.
Ny sanda dia ny lahatsoratra mila aseho amin'ny mpampiasa.
Anglisy:
{"hello": "Manahoana izao tontolo izao!"}
frantsay
{"hello": "Salut le Monde!"}
Arabo
{ "hello": "Ψ£ΩΩΨ§Ω Ψ¨Ψ§ΩΨΉΨ§ΩΩ "}
Azonao atao ny manampy fiteny hafa amin'ny fomba mitovy.
Kaody fototra
Amin'izao fotoana izao, mila manokatra ny rakitra App.js ianao ary ampio fanafarana azy:
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";
Aorian'izany dia ampiana ireo fiasa fanampiny sy tsy miova izay ho ilaina any aoriana.
Ny singa voalohany, setI18nConfig(), dia mametraka ny configuration voalohany.
Avy eo ianao dia mila manampy mpihaino hetsika amin'ny componentDidMount (), ity singa ity dia hihaino ny fanavaozana ary hiantso ny handleLocalizationChange () rehefa mitranga izany.
Ny fomba handleLocalizationChange() dia manetsika ny setI18nConfig() sy forceUpdate(). Ilaina izany ho an'ny fitaovana Android satria tsy maintsy adika ny singa mba ho tsikaritra ny fiovana.
Avy eo dia mila manala ny fihainoana amin'ny fomba componentWillUnmount().
Farany, ny render() dia mamerina miarahaba amin'ny fampiasana translate() ary manampy paramètre lehibe aminy. Aorian'ireo dingana ireo dia ho afaka "mahatakatra" ny fiteny ilaina ny fampiharana ary mampiseho hafatra ao anatiny.
Fandefasana fampiharana
Fotoana izao hijerena ny fomba fiasan'ny fandikan-teny.
Voalohany, manomboka ny fampiharana amin'ny simulator na emulator isika amin'ny fanoratana
$ react-native run-ios
$ react-native run-android
Ho toy izao izany:
Azonao atao izao ny manandrana manova ny fiteny ho frantsay amin'ny alΓ lan'ny fandefasana ny fampiharana.
Toy izany koa no ataontsika amin'ny Arabo, tsy misy fahasamihafana.
Hatreto aloha dia mbola mety tsara.
Fa inona no mitranga raha misafidy fiteny kisendrasendra izay tsy misy dikanteny ao amin'ny fampiharana ianao?
Hita fa ny andraikitry ny findBestLanguage dia ny manome ny fandikan-teny tsara indrindra avy amin'ireo rehetra misy. Vokatr'izany dia haseho ny fiteny mahazatra.
Fametrahana telefaona no resahinay. Ohatra, ao amin'ny emulator iOS ianao dia afaka mahita ny filaharan'ny fiteny.
Raha tsy ilay fiteny nofantenana no fiteny tiana, findBestAvailableLanguage dia miverina tsy voafaritra mba haseho ny fiteny mahazatra.
Ny fampiharana dia azo atao amin'ny fiteny maro tsy misy olana. React-native-localize dia safidy tsara ahafahanao manitatra ny fototry ny mpampiasa anao.