Մենք գրում ենք բազմալեզու հավելված React Native-ում
Արտադրանքի տեղայնացումը շատ կարևոր է նոր երկրներ և տարածաշրջաններ զարգացնող միջազգային ընկերությունների համար։ Նմանապես, տեղայնացումն անհրաժեշտ է բջջային հավելվածների համար: Եթե մշակողը սկսում է միջազգային ընդլայնում, ապա կարևոր է այլ երկրի օգտատերերին հնարավորություն տալ աշխատել ինտերֆեյսի հետ իրենց մայրենի լեզվով: Այս հոդվածում մենք կստեղծենք React Native հավելված՝ օգտագործելով փաթեթը արձագանքել-բնիկ-տեղայնացնել.
Skillbox-ը խորհուրդ է տալիս. Ուսումնական առցանց դասընթաց «Մասնագիտություն Java ծրագրավորող». Հիշեցում.«Habr»-ի բոլոր ընթերցողների համար՝ 10 ռուբլի զեղչ «Habr» գովազդային կոդով Skillbox-ի ցանկացած դասընթացին գրանցվելիս:
Գործիքներ և հմտություններ
Այս հոդվածը հասկանալու համար պահանջվում են React Native-ի հիմնական հմտություններ: Աշխատանքային մեքենայի կարգավորումներին ծանոթանալու համար կարող եք օգտագործել պաշտոնական հրահանգները.
Մեզ անհրաժեշտ են ծրագրային գործիքների այս տարբերակները.
Հանգույց v10.15.0
npm 6.4.1
մանվածք 1.16.0
react-native 0.59.9
react-native-localize 1.1.3
i18n-js 3.3.0
Սկսել
Մենք կստեղծենք հավելված, որը կաջակցի անգլերենին, ֆրանսերենին և արաբերենին: Նախ մենք ստեղծում ենք նոր նախագիծ՝ օգտագործելով react-native-cli: Դա անելու համար տերմինալում դուք պետք է մուտքագրեք սա.
$ react-native init multiLanguage
$ CD բազմալեզու
Պահանջվող գրադարանների ավելացում
Առաջին քայլը react-native-localize-ի տեղադրումն է՝ մուտքագրելով հետևյալը.
$ մանվածք ավելացնել react-native-localize
React-native-localize գրադարանը ծրագրավորողին հնարավորություն է տալիս օգտվել բազմալեզու հնարավորություններից: Բայց նրան պետք է մեկ այլ գրադարան՝ i18n:
Հոդվածում նկարագրված է օգտագործումը I18n.js JavaScript-ով թարգմանություն ապահովելու համար:
$ մանվածք ավելացնել i18n-js
Դե, քանի որ i18n-js-ը չի ապահովում քեշավորում կամ հիշողություն, ես առաջարկում եմ օգտագործել lodash.memoize դրա համար.
$ մանվածք ավելացնել lodash.memoize
Աշխատեք թարգմանությունների հետ
Որպեսզի հավելվածն աշխատի այլ լեզուների հետ, նախ պետք է src-ի ներսում ստեղծել թարգմանությունների գրացուցակ, այնուհետև երեք JSON ֆայլ յուրաքանչյուր լեզվի համար:
1. en.json անգլերենի համար;
2. fr.json ֆրանսերենի համար;
3. ար.ջսոն արաբերեն.
Այս ֆայլերը պարունակում են ստեղներով և արժեքներով JSON օբյեկտներ: Բանալին նույնը կլինի յուրաքանչյուր լեզվի համար: Այն օգտագործվում է հավելվածի կողմից տեքստային տեղեկատվություն ցուցադրելու համար:
Արժեքը (արժեքը) այն տեքստն է, որը պետք է ցուցադրվի օգտագործողին:
Անգլերեն լեզու
{ "hello": "Բարև աշխարհ!"}
Французский
{ "բարև": "Salut le Monde!"}
Арабский
{ "բարև": "أهلاً بالعالم"}
Նույն կերպ կարելի է ավելացնել այլ լեզուներ:
Հիմնական կոդը
Այս պահին դուք պետք է բացեք App.js ֆայլը և ներմուծեք դրան.
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";
Դրանից հետո ավելացվում են օժանդակ ֆունկցիաներ և հաստատուններ, որոնք հետագայում օգտակար կլինեն։
Առաջին տարրը՝ setI18nConfig(), սահմանում է նախնական կոնֆիգուրացիան։
Այնուհետև մենք պետք է իրադարձության ունկնդիր ավելացնենք componentDidMount()-ում, այս տարրը կլսի թարմացումները և կկանչի handleLocalizationChange()-ը, երբ դրանք տեղի ունենան:
handleLocalizationChange() մեթոդը կանչում է setI18nConfig() և forceUpdate(): Սա անհրաժեշտ է Android սարքերի համար, քանի որ բաղադրիչը պետք է ցուցադրվի, որպեսզի փոփոխությունները տեսանելի լինեն:
Այնուհետև մենք պետք է հեռացնենք ունկնդիրը componentWillUnmount() մեթոդից։
Վերջապես, hello-ն վերադարձվում է render()-ում՝ օգտագործելով translate()-ը և դրան ավելացնելով հիմնական պարամետր: Այս քայլերից հետո հավելվածը կկարողանա «հասկանալ», թե որ լեզուն է անհրաժեշտ և հաղորդագրություններ ցույց տալ դրանում:
Դիմումի գործարկում
Այժմ ժամանակն է ստուգելու, թե ինչպես է աշխատում թարգմանությունը:
Սկզբում մենք գործարկում ենք հավելվածը սիմուլյատորում կամ էմուլյատորում՝ մուտքագրելով
$ react-native run-ios
$ react-native run-android
Այն նման տեսք կունենա.
Այժմ կարող եք փորձել փոխել լեզուն ֆրանսերենի՝ գործարկելով հավելվածը:
Նույնը անում ենք արաբերեն լեզվով, տարբերություն չկա։
Առայժմ ամեն ինչ լավ է:
Բայց ի՞նչ կլինի, եթե ընտրեք պատահական լեզու, որը չունի թարգմանություն հավելվածում:
Պարզվում է, որ findBestLanguage-ի խնդիրն է հնարավորինս լավագույն թարգմանությունն ապահովել բոլոր հասանելիներից: Արդյունքում կցուցադրվի այն լեզուն, որը սահմանվել է լռելյայն:
Խոսքը հեռախոսի կարգավորումների մասին է։ Այսպիսով, օրինակ, iOS emulator-ում դուք կարող եք տեսնել լեզուների կարգը:
Եթե ընտրված լեզուն նախընտրելի լեզուն չէ, findBestAvailableLanguage-ը վերադարձնում է չսահմանված, որպեսզի ցուցադրվի լռելյայն լեզուն:
Շահութաբաժին
react-native-localize-ն ունի API, որն ապահովում է մեծ թվով լեզվական տարրերի հասանելիություն: Նախքան աշխատանքը սկսելը, արժե կարդալ փաստաթղթերը.
Արդյունքները
Հավելվածը կարող է լինել բազմալեզու՝ առանց խնդիրների։ React-native-localize-ը հիանալի տարբերակ է, որը թույլ է տալիս ընդլայնել ձեր հավելվածի օգտատերերի շրջանակը: