एक्सपो-स्थानीयकरण और i18n-js के साथ देशी परियोजना को फिर से शुरू करें

Jan 04 2021

मैं वर्तमान में डिवाइस की सिस्टम भाषा के आधार पर स्थानीयकरण को लागू करने की कोशिश कर रहा हूं, लेकिन कुछ आवश्यकतानुसार काम नहीं कर रहा है।

मैंने एक्सपो प्रलेखन पर ठीक उसी कोड का अनुसरण किया, उदाहरण के लिए। बटन के लिए मैं मैं हो रही रखने के लिए है [MISSING "EN-GB.LOGIN" TRANSLATION]बजाय LOGIN

यहाँ मेरा कोड है:

आपका स्वागत है

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')}
    />
)}

इसलिए ऊपर दिए गए कोड के बजाय मैंने इसके साथ जाने का फैसला किया:

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')}
)}

जवाब

1 HendEl-Sahli Jan 05 2021 at 14:17

यदि आप कोशिश करते हैं console.log(Localization.locale)... यह सिर्फ en( i18n.translationsउम्मीद से महत्वपूर्ण i18n) नहीं होने वाला है ... यह इस रूप में होगा en_countryCode... तो आपको इस भाग को टुकड़ा करना होगा

  i18n.locale = Localization.locale.search(/-|_/) !== -1
    ? Localization.locale.slice(0, 2)
    : Localization.locale;