Rydym yn ysgrifennu cymhwysiad amlieithog ar React Native
Mae lleoleiddio cynhyrchion yn bwysig iawn i gwmnΓ―au rhyngwladol sy'n datblygu gwledydd a rhanbarthau newydd. Yn yr un modd, mae angen lleoleiddio ar gyfer cymwysiadau symudol. Os yw datblygwr yn dechrau ehangu rhyngwladol, mae'n bwysig rhoi cyfle i ddefnyddwyr o wlad arall weithio gyda'r rhyngwyneb yn eu hiaith frodorol. Yn yr erthygl hon, byddwn yn creu app React Native gan ddefnyddio'r pecyn adweithio-brodorol-lleoli.
Mae Skillsbox yn argymell: Cwrs addysgol ar-lein "Datblygwr Java Proffesiynol". Rydym yn atgoffa:i holl ddarllenwyr "Habr" - gostyngiad o 10 rubles wrth gofrestru ar unrhyw gwrs Skillbox gan ddefnyddio'r cod hyrwyddo "Habr".
Offer a sgiliau
Mae deall yr erthygl hon yn gofyn am sgiliau React Brodorol sylfaenol. I ddod yn gyfarwydd Γ’ gosodiadau'r peiriant gweithio, gallwch chi defnyddio cyfarwyddiadau swyddogol.
Mae angen y fersiynau hyn o offer meddalwedd arnom:
Nod v10.15.0
npm 6.4.1
edafedd 1.16.0
adweith-frodorol 0.59.9
adweithio-brodorol-leoli 1.1.3
i18n- js 3.3.0
Dechrau arni
Byddwn yn creu cymhwysiad a fydd yn cefnogi Saesneg, Ffrangeg ac Arabeg. Yn gyntaf rydym yn creu prosiect newydd gan ddefnyddio react-native-cli. I wneud hyn, yn y derfynell mae angen i chi deipio hwn:
$ adweith-frodorol init amlIaith
$cd amlieithog
Ychwanegu'r llyfrgelloedd gofynnol
Y cam cyntaf yw gosod react-native-localize trwy deipio'r canlynol:
$ edafedd ychwanegu react-native-localize
Mae'r llyfrgell ymateb-frodorol-leoli yn rhoi mynediad i'r datblygwr i nodweddion amlieithog. Ond mae angen llyfrgell arall arni - i18n.
Mae'r erthygl yn disgrifio'r defnydd I18n.js er mwyn darparu cyfieithiad yn JavaScript.
$ edafedd ychwanegu i18n-js
Wel, gan nad yw i18n-js yn darparu caching neu memoization, rwy'n awgrymu defnyddio lodash.memoize ar gyfer hyn:
$ edafedd ychwanegu lodash.memoize
Gweithio gyda chyfieithiadau
Er mwyn i'r rhaglen weithio gydag ieithoedd eraill, yn gyntaf mae angen i chi greu cyfeiriadur cyfieithiadau y tu mewn i src, yna tair ffeil JSON ar gyfer pob un o'r ieithoedd.
1. en.json ar gyfer Saesneg;
2. fr.json ar gyfer Ffrangeg;
3. ar.json ar gyfer Arabeg.
Mae'r ffeiliau hyn yn cynnwys gwrthrychau JSON gydag allweddi a gwerthoedd. Yr un fydd yr allwedd ar gyfer pob iaith. Fe'i defnyddir gan y rhaglen i arddangos gwybodaeth destunol.
Gwerth (gwerth) yw'r testun y mae angen ei ddangos i'r defnyddiwr.
Saesneg:
{ "helo": "Helo Fyd!"}
Π€ΡΠ°Π½ΡΡΠ·ΡΠΊΠΈΠΉ
{ "helo": "Salut le Monde!"}
ΠΡΠ°Π±ΡΠΊΠΈΠΉ
{ "helo": "Ψ£ΩΩΨ§Ω Ψ¨Ψ§ΩΨΉΨ§ΩΩ "}
Gellir ychwanegu ieithoedd eraill yn yr un modd.
Prif god
Ar y pwynt hwn, mae angen ichi agor y ffeil App.js ac ychwanegu mewnforion ato:
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";
Ar Γ΄l hynny, ychwanegir swyddogaethau ategol a chysonion, a fydd yn ddefnyddiol yn ddiweddarach.
Mae'r elfen gyntaf, setI18nConfig(), yn gosod y cyfluniad cychwynnol.
Yna yn componentDidMount() mae angen i ni ychwanegu gwrandawyr digwyddiad, bydd yr elfen hon yn gwrando am ddiweddariadau ac yn galw handleLocalizationChange() pan fyddant yn digwydd.
Mae'r dull handleLocalizationChange() yn galw setI18nConfig() a forceUpdate(). Mae hyn yn angenrheidiol ar gyfer dyfeisiau Android, gan fod yn rhaid i'r gydran gael ei rendro er mwyn i'r newidiadau ddod yn weladwy.
Yna mae angen i ni dynnu'r gwrandΓ€wr o'r dull componentWillUnmount().
Yn olaf, dychwelir hello mewn rendrad () trwy ddefnyddio translate() ac ychwanegu paramedr allweddol ato. Ar Γ΄l y camau hyn, bydd y rhaglen yn gallu βdeallβ pa iaith sydd ei hangen a dangos negeseuon ynddi.
Lansio cais
Nawr yw'r amser i wirio sut mae'r cyfieithiad yn gweithio.
Yn gyntaf rydym yn rhedeg y rhaglen yn yr efelychydd neu'r efelychydd trwy deipio
Nawr gallwch chi geisio newid yr iaith i Ffrangeg trwy lansio'r rhaglen.
Rydyn ni'n gwneud yr un peth gyda'r iaith Arabeg, does dim gwahaniaeth.
Hyd yn hyn mae popeth yn mynd yn dda.
Ond beth sy'n digwydd os dewiswch iaith ar hap nad oes ganddi gyfieithiad yn yr ap?
Mae'n troi allan mai tasg findGorau Iaith yw darparu'r cyfieithiad gorau posibl ymhlith popeth sydd ar gael. O ganlyniad, bydd yr iaith a osodwyd yn ddiofyn yn cael ei harddangos.
Mae'n ymwneud Γ’ gosodiadau ffΓ΄n. Felly, er enghraifft, yn yr efelychydd iOS, gallwch weld trefn yr ieithoedd.
Os nad yr iaith a ddewiswyd yw'r dewis iaith, mae findBestAvailableLanguage yn dychwelyd heb ei ddiffinio fel bod yr iaith ddiofyn yn cael ei dangos.
Bonws
Mae gan react-native-localize API sy'n darparu mynediad i nifer fawr o elfennau iaith. Cyn dechrau gweithio, mae'n werth darllen y ddogfennaeth.
Canfyddiadau
Gellir gwneud y cais yn amlieithog heb unrhyw broblemau. Mae React-native-localize yn opsiwn gwych sy'n eich galluogi i ehangu ystod defnyddwyr eich cais.