Yerel projeye expo-yerelleştirme ve i18n-js ile tepki verin
Jan 04 2021
Şu anda aygıtın sistem diline bağlı olarak yerelleştirmeyi uygulamaya çalışıyorum ancak bir şey gerektiği gibi çalışmıyor.
Expo dokümantasyonunda tam olarak aynı kodu takip ettim, örneğin. [MISSING "EN-GB.LOGIN" TRANSLATION]
yerine almaya devam ettiğim düğme için LOGIN
.
İşte kodum:
welcomeScreen.js
import * as Localization from 'expo-localization';
import i18n from 'i18n-js';
i18n.translations = {
en: { login: 'LOGIN'},
ar: { login: 'تسجيل الدخول'},
};
i18n.locale = Localization.locale;
i18n.fallbacks = true;
function WelcomeScreen() {
return (
<Button
title={i18n.t('login')}
/>
)}
Bu yüzden yukarıdaki kod yerine şuna karar verdim:
i18n.js
import i18n from 'i18n-js';
import * as Localization from 'expo-localization';
import ar from './locales/ar';
import en from './locales/en';
i18n.translations = {
'en': en,
'ar': ar,
};
i18n.locale = Localization.locale.search(/-|_/) !== -1?
Localization.locale.slice(0, 2): Localization.locale;
i18n.fallbacks = true;
export default i18n;
en.js
const en = {
'SignUp':{
SignUp:"Sign Up"
}}
ar.js
const ar = {
'SignUp':{
SignUp:"الاشتراك"
}}
SignUpScreen.js
import I18n from '../config/i18n';
function RegisterScreen(props) {
return(
<Button title={I18n.t('SignUp.SignUp')}
)}
Yanıtlar
1 HendEl-Sahli Jan 05 2021 at 14:17
Eğer denersen console.log(Localization.locale)
... bu sadece olmayacak en
( i18n.translations
beklenen anahtar i18n
) ... şeklinde olacak en_countryCode
... bu yüzden o kısmı dilimlemelisin
i18n.locale = Localization.locale.search(/-|_/) !== -1
? Localization.locale.slice(0, 2)
: Localization.locale;
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'