एक्सपो-स्थानीयकरण और i18n-js के साथ देशी परियोजना को फिर से शुरू करें
मैं वर्तमान में डिवाइस की सिस्टम भाषा के आधार पर स्थानीयकरण को लागू करने की कोशिश कर रहा हूं, लेकिन कुछ आवश्यकतानुसार काम नहीं कर रहा है।
मैंने एक्सपो प्रलेखन पर ठीक उसी कोड का अनुसरण किया, उदाहरण के लिए। बटन के लिए मैं मैं हो रही रखने के लिए है [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
यदि आप कोशिश करते हैं console.log(Localization.locale)
... यह सिर्फ en
( i18n.translations
उम्मीद से महत्वपूर्ण i18n
) नहीं होने वाला है ... यह इस रूप में होगा en_countryCode
... तो आपको इस भाग को टुकड़ा करना होगा
i18n.locale = Localization.locale.search(/-|_/) !== -1
? Localization.locale.slice(0, 2)
: Localization.locale;