Produktu lokalizācija ir ļoti svarīga starptautiskajiem uzņēmumiem, kas pēta jaunas valstis un reģionus. Tāpat ir nepieciešama lokalizācija mobilajām lietojumprogrammām. Ja izstrādātājs sāk starptautisku paplašināšanos, ir svarīgi sniegt lietotājiem no citas valsts iespēju strādāt ar saskarni viņu dzimtajā valodā. Šajā rakstā mēs izveidosim React Native lietojumprogrammu, izmantojot paketi reaģēt-dzimtā-lokalizēt.
Lai saprastu šo rakstu, jums ir nepieciešamas pamatprasmes darbā ar React Native. Lai iepazītos ar darba mašīnas iestatījumiem, varat izmantojiet oficiālos norādījumus.
Mums būs nepieciešamas šādas programmatūras rīku versijas:
Mezgls v10.15.0
npm 6.4.1
dzija 1.16.0
reaģē-native 0.59.9
react-native-localize 1.1.3
i18n-js 3.3.0
Darba sākšana
Mēs izveidosim aplikāciju, kas atbalstīs angļu, franču un arābu valodu. Vispirms mēs izveidojam jaunu projektu, izmantojot react-native-cli. Lai to izdarītu, terminālī ir jāievada:
$ react-native init multiLanguage
$ cd daudzvalodu
Nepieciešamo bibliotēku pievienošana
Pirmais solis ir instalēt react-native-localize, ierakstot šo:
$ dzija pievienot react-native-localize
React-native-localize bibliotēka sniedz izstrādātājam piekļuvi daudzvalodu līdzekļiem. Bet viņai vajag vēl vienu bibliotēku - i18n.
Šajā rakstā ir aprakstīta izmantošana I18n.js lai nodrošinātu tulkojumu JavaScript.
$ dzija pievienot i18n-js
Tā kā i18n-js nenodrošina kešatmiņu vai iegaumēšanu, iesaku šim nolūkam izmantot lodash.memoize:
$ dzijas pievienot lodash.memoize
Darbs ar tulkojumiem
Lai lietojumprogramma varētu strādāt ar citām valodām, vispirms src iekšpusē ir jāizveido tulkojumu direktorijs, pēc tam trīs JSON faili katrai valodai.
1. en.json angļu valodai;
2. fr.json franču valodai;
3. ar.json arābu valodai.
Šajos failos ir JSON objekti ar atslēgām un vērtībām. Katrai valodai atslēga būs vienāda. Lietojumprogramma to izmanto, lai parādītu teksta informāciju.
Vērtība ir teksts, kas jāparāda lietotājam.
Angļu:
{"hello": "Sveika pasaule!"}
Французский
{"sveiki": "Sveicu le Monde!"}
Арабский
{ "sveiki": "أهلاً بالعالم"}
Tādā pašā veidā varat pievienot citas valodas.
Galvenais kods
Šajā brīdī jums ir jāatver fails App.js un jāpievieno tam importētie vienumi:
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";
Pēc tam tiek pievienotas palīgfunkcijas un konstantes, kas noderēs vēlāk.
Pirmais elements setI18nConfig() iestata sākotnējo konfigurāciju.
Pēc tam elementam componentDidMount() jāpievieno notikumu uztvērējs, šis elements uzklausīs atjauninājumus un izsauks handleLocalizationChange(), kad tie notiks.
HandLocalizationChange() metode aktivizē setI18nConfig() un forceUpdate(). Tas ir nepieciešams Android ierīcēm, jo komponents ir jāatveido, lai izmaiņas būtu pamanāmas.
Tad jums ir jānoņem klausīšanās no komponentaWillUnmount() metodes.
Visbeidzot, render() atgriež hello, izmantojot translate() un pievienojot tam galveno parametru. Pēc šīm darbībām lietojumprogramma varēs “saprast”, kāda valoda ir nepieciešama, un parādīt tajā ziņojumus.
Lietojumprogrammas palaišana
Tagad ir pienācis laiks pārbaudīt, kā tulkošana darbojas.
Pirmkārt, mēs palaižam lietojumprogrammu simulatorā vai emulatorā, ierakstot
$ react-native run-ios
$ react-native run-android
Tas izskatīsies apmēram šādi:
Tagad varat mēģināt mainīt valodu uz franču valodu, palaižot lietojumprogrammu.
Mēs darām to pašu ar arābu valodu, nav nekādas atšķirības.
Tik tālu, labi.
Bet kas notiek, ja atlasāt nejauši izvēlētu valodu, kurai lietojumprogrammā nav tulkojuma?
Izrādās, findBestLanguage uzdevums ir nodrošināt optimālo tulkojumu no visiem pieejamajiem. Rezultātā tiks parādīta noklusējuma valoda.
Mēs runājam par tālruņa iestatījumiem. Piemēram, iOS emulatorā var redzēt valodu secību.
Ja atlasītā valoda nav vēlamā valoda, FindBestAvailableLanguage atgriež nedefinētu, lai tiktu parādīta noklusējuma valoda.