Lokalisasi produk penting pisan pikeun perusahaan internasional anu ngajalajah nagara sareng daérah anyar. Nya kitu, lokalisasi diperlukeun pikeun aplikasi mobile. Lamun pamekar dimimitian ékspansi internasional, hal anu penting pikeun masihan pamaké ti nagara sejen kasempetan pikeun digawekeun ku panganteur dina basa asli maranéhanana. Dina tulisan ieu, urang bakal nyiptakeun aplikasi React Native nganggo pakét meta-pribumi-lokalkeun.
Skillbox nyarankeun: Kursus online atikan "Pamekar Profesi Java". Kami ngingetan:pikeun sakabéh pamiarsa "Habr" - diskon 10 rubles nalika enrolling dina sagala Tangtu Skillbox ngagunakeun "Habr" kode promosi.
Alat jeung kaahlian
Pikeun ngartos tulisan ieu, anjeun peryogi kaahlian dasar dina damel sareng React Native. Pikeun familiarize diri jeung setélan tina mesin kerja, anjeun tiasa ngagunakeun parentah resmi.
Urang peryogi vérsi alat parangkat lunak ieu:
Node v10.15.0
npm 6.4.1
benang 1.16.0
meta-pribumi 0.59.9
meta-asli-localize 1.1.3
i18n-js 3.3.0
Mimiti
Kami bakal nyiptakeun aplikasi anu bakal ngadukung Inggris, Perancis sareng Arab. Kahiji urang nyieun hiji proyék anyar maké react-native-cli. Jang ngalampahkeun ieu, anjeun kedah ngetik ieu dina terminal:
$ react-native init multiLanguage
$ cd multiBasa
Nambahkeun perpustakaan perlu
Hambalan munggaran nyaéta masang react-native-localize ku ngetikkeun ieu:
$ benang tambahkeun meta-native-localize
Perpustakaan réact-native-localize masihan pamekar aksés kana fitur multibasa. Tapi anjeunna peryogi hiji deui perpustakaan - i18n.
Artikel ieu ngajelaskeun pamakéan I18n.js pikeun nyadiakeun tarjamahan kana JavaScript.
$ benang nambahkeun i18n-js
Nya, saprak i18n-js henteu nyayogikeun cache atanapi memoization, kuring nyarankeun ngagunakeun lodash.memoize pikeun ieu:
$ benang nambahkeun lodash.memoize
Gawe sareng tarjamahan
Supados aplikasi tiasa dianggo sareng basa sanés, anjeun kedah nyiptakeun diréktori tarjamahan di jero src, teras tilu file JSON pikeun unggal basa.
1. en.json pikeun basa Inggris;
2. fr.json pikeun Perancis;
3. ar.json pikeun basa Arab.
File ieu ngandung objék JSON sareng konci sareng nilai. Koncina bakal sami pikeun unggal basa. Hal ieu dianggo ku aplikasi pikeun nampilkeun inpormasi téks.
Nilai mangrupikeun téks anu kedah ditingalikeun ka pangguna.
Inggris:
{"Halo": "Halo Dunya!"}
Perancis
{"halo": "Salut le Monde!"}
Арабский
{ "halo": "أهلاً بالعالم"}
Anjeun tiasa nambihan basa sanés dina cara anu sami.
Kodeu utama
Dina titik ieu, anjeun kedah muka file App.js sareng nambihan impor kana:
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";
Sanggeus ieu, fungsi bantu sarta konstanta ditambahkeun anu bakal mangpaat engké.
Unsur kahiji, setI18nConfig (), Nyetél konfigurasi awal.
Lajeng anjeun kudu nambahan hiji pangdéngé acara pikeun componentDidMount (), unsur ieu bakal ngadangukeun apdet sarta nelepon handleLocalizationChange () nalika aranjeunna lumangsung.
Metoda handleLocalizationChange () ngaktifkeun setI18nConfig () sarta forceUpdate (). Ieu diperlukeun pikeun alat Android salaku komponén kudu rendered pikeun parobahan jadi noticeable.
Satuluyna anjeun perlu nyabut déngékeun ti componentWillUnmount () métode.
Tungtungna, render () mulih halo ku ngagunakeun tarjamah () jeung nambahkeun parameter konci na. Saatos léngkah-léngkah ieu, aplikasi bakal tiasa "ngartos" basa naon anu diperyogikeun sareng nampilkeun pesen di jerona.
peluncuran aplikasi
Ayeuna nya éta waktu pikeun pariksa kumaha tarjamahan jalan.
Kahiji, urang ngajalankeun aplikasi dina simulator atawa émulator ku ngetikkeun
$ meta-pribumi run-ios
$ meta-pribumi run-android
Éta bakal katingali sapertos kieu:
Ayeuna anjeun tiasa nyobian ngarobih basa ka Perancis ku ngaluncurkeun aplikasina.
Urang sami sareng Arab, teu aya bédana.
Dugi ayeuna mah saé.
Tapi naon anu kajantenan upami anjeun milih basa acak anu henteu aya tarjamahan dina aplikasina?
Tétéla yén tugas findBestLanguage nyaéta nyayogikeun tarjamahan anu optimal tina sadaya anu sayogi. Hasilna, basa standar bakal dipintonkeun.
Urang ngobrol ngeunaan setelan telepon. Contona, dina émulator ios anjeun tiasa ningali urutan basa.
Lamun basa nu dipilih lain basa nu dipikaresep, findBestAvailableLanguage balik deui teu ditangtukeun ku kituna basa standar ditémbongkeun.
Bonus
meta-native-localize boga API nu nyadiakeun aksés ka angka nu gede ngarupakeun elemen basa. Sateuacan anjeun ngamimitian damel, Éta patut pariksa kaluar dokuméntasi.
papanggihan
Aplikasina tiasa dilakukeun multibasa tanpa aya masalah. React-native-localize mangrupikeun pilihan anu saé anu ngamungkinkeun anjeun ngalegaan basa pangguna aplikasi anjeun.