غیر واضح ایپاس میں ایک ملتانی زبان کی حمایت کا نظام تشکیل دینا
Table of Contents
غیر منظم ایپس میں ایک ملٹی-لنگج حمایت نظام کی تخلیق کرتے ہوئے
تعمیر کرنے والے موبائل اطلاقات جو کئی زبانوں کی مدد کرتے ہیں اب کوئی بھی اپ ڈیٹ نہیں کر سکتے—یہ عالمی مقبولیت کے لیے کسی بھی ایپ کے مقصد کا تقاضا ہے.
مقامی انتظامیہ کے کور کنساس
مقامی طور پر سادہ متن ترجمہ سے بھی آگے بڑھتا ہے اس میں فارمیٹنگ نمبر، تاریخ، کرایہ، دستی متن کی ہدایت، دستیشن، جنسی شکل، اور حتی کہ UI درج شدہ UU درج شدہ مواد کو آپ کے کوڈ کیbase سے جدا کرتا ہے، کلیدی حوالہ جات استعمال کرتا ہے اور ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ ساتھ وقتی زبان بھی بھی بھی استعمال کرتا ہے۔
مایوسی میں اہم چیلنج
- آلات کی ساخت (IOS اور اینڈروئیڈ کے درمیان میں موجود علامات) کے لیے struction medicons.
- اِس کے علاوہ اُس نے ترجمہ کرنے اور اِسے کرنے کی فائلوں کو بھی اِستعمال کِیا ۔
- پوری ایپ میں فعال زبان کیلئے ملک کی دیکھبھال کرنا ( بشمول غیرضروری اور مستقل ترجیحات شامل ہیں ) ۔
- دستی طور پر RTL setts -- ری ایکٹر کی مدد کرتا ہے لیکن احتیاط کے ساتھ اس کے لیے ضروری ہے۔
- ( ب ) ہم کن سوالوں پر غور کریں گے ؟
درست یـن لائبریری کا انتخاب کرنا
جبکہ کئی لیبارٹریاں موجود ہیں، react-i18 [1] سب سے زیادہ مقبول اور مکمل انتخاب ہے ]، ، او پی ایل ایل ٹی کے لیے درکار ہے، [1]، او پی ٹی وی کے لیے استعمال کے لیے درکار معلوماتی نام ہیں، [1]، [1].
مرکزی لائبریریوں کو نصب کرنا
ضروری پیکجوں کی تنصیب کے لیے شروع کریں:
npm install react-i18next i18next i18next-http-backend react-native-localize
[1] Ai18 q-Browser- زبان میں امتیازی صلاحیت کے لیے ] خودکار زبان کے لیے استعمال ہونے والی ترجیحات پر مبنی معلومات کے لیے آپ کو دیکھیے کہ آپ کو وفاقی میکانیات کو عملے میں لانے کے لیے رموزی ہندسہ (Auto-link in RN 0.60+) سے ملانا ہوگا ۔
آئین کو مزید فروغ دینا
کوئي فا ئل بنا ئيں، مثلاً :
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import * as RNLocalize from 'react-native-localize';
import en from './translations/en.json';
import es from './translations/es.json';
import fr from './translations/fr.json';
const resources = { en: { translation: en }, es: { translation: es }, fr: { translation: fr } };
const detectionOptions = {
order: ['localStorage', 'navigator'],
caches: ['localStorage'],
};
i18n
.use(initReactI18next)
.use(require('i18next-browser-languagedetector').default) // for RN, you may replace with custom detector
.init({
resources,
fallbackLng: 'en',
interpolation: { escapeValue: false },
detection: {
// For RN, we'll override detection manually (see below)
},
});
// Detect device language at startup
const detectLanguage = () => {
const locales = RNLocalize.getLocales();
if (locales && locales.length > 0) {
const langCode = locales[0].languageCode;
const supportedLanguages = Object.keys(resources);
const lang = supportedLanguages.includes(langCode) ? langCode : i18n.options.fallbackLng[0];
i18n.changeLanguage(lang);
}
};
detectLanguage();
// Listen to app focus for locale changes
export default i18n;
استعمال کرتے ہوئے آپ کی app کو یقینی بنایا جاتا ہے ڈیوائس کی علاقائی ترتیبات کو یقینی بنایا جاتا ہے ایک بار جاری اور ابتدائی زبان کو مرتب کرتا ہے. (اگر صارف اپنی اوزار تبدیل کرتا ہے تو) آپ [[FLT5] تبدیل کر سکتے ہیں۔
ترجمہنگاروں کی تعداد :
زبان اور نام کے ذریعے سے spaces and spaces. کے لیے مثال:
{
"common": {
"welcome": "Welcome",
"greeting": "Hello, {{name}}!"
},
"home": {
"title": "Home Screen",
"description": "This is a multi-language React Native app."
},
"errors": {
"network": "Network error. Please try again."
}
}
نام کے استعمال سے (جیسے، ، ، بڑے بڑے بڑے بڑے اداروں کو منظم کرنے میں مدد کرتا ہے اور ترجمہ کرنے کے لیے سستے لوڈ کرنے کے قابل ہوتا ہے۔
ترجمے کو مجموعی کتابوں میں استعمال کرنا
استعمالشُدہ
کسی بھی عملی اجزاء میں:
import { useTranslation } from 'react-i18next';
const MyComponent = () => {
const { t, i18n } = useTranslation('common');
return (
{t('welcome')}
{t('greeting', { name: 'John' })}
i18n.changeLanguage('es')}>
Switch to Spanish
);
};
t سرگرمیوں میں تبدیلی اور دستی مرکبات کو تبدیل کرنے کے لیے، کو فون کریں تاکہ تمام تر قابل استعمال اجزاء کی ایک دوبارہ تقسیم ہو جائے۔
ٹرانسمیٹر کا استعمال
جن میں کیمیائی مرکبات یا انواع کے ساتھ پیچیدہ مرکبات ہیں:
import { Trans } from 'react-i18next';
// In translations: "welcome_html": "Welcome, {user} !"
Welcome, {user} !
ہاتھلنگ پلورالس، جنسدر اور کنسکرپٹ
پس منظر کے ساتھ ساتھ آئندہ ترقیاتی ایجناس کو باکس سے باہر کرنے میں مدد کرتا ہے۔
{
"item": "{{count}} item",
"item_plural": "{{count}} items",
"item_other": "{{count}} items"
}
استعمال: خودبخود اختیار کرنے والی صحیح صورت اختیار کر لی۔ جنسی اور دیگر سیاق و سباق انتخاب کے ذریعے حل کیا جا سکتا ہے۔
ٹیکنالوجی زبان سویتچی اور پر زور دیتی ہے۔
صارف کی زبان کو ترجیح دینے کے لیے، منتخب زبان کو میں محفوظ کرنا[1] Async Storage[1:1] [ یا پر react-native-mkv] اور اسے شروع میں اپلوڈ کرنا.
import AsyncStorage from '@react-native-async-storage/async-storage';
const languageDetector = {
type: 'languageDetector',
async: true,
detect: async (callback) => {
const storedLang = await AsyncStorage.getItem('user-language');
callback(storedLang || 'en');
},
init: () => {},
cacheUserLanguage: async (lng) => {
await AsyncStorage.setItem('user-language', lng);
},
};
i18n.use(initReactI18next).use(languageDetector).init({
fallbackLng: 'en',
resources,
interpolation: { escapeValue: false },
});
اب جب صارف کی زبان بدلتی ہے تو ترجیحی حفاظتی عمل کو محفوظ کر کے اگلے لانچ پر خودبخود بحال کر دیا جاتا ہے۔
دائیں-Let (RRTL) حمایت کرتا ہے۔
کے ذریعے RTL کی حمایت کرتا ہے. جب زبان عربی، عبرانی یا فارسی ہے، زور آور:
import { I18nManager } from 'react-native';
const changeLanguage = async (lng) => {
await i18n.changeLanguage(lng);
const isRTL = i18n.dir(lng) === 'rtl';
I18nManager.forceRTL(isRTL);
// On Android, you may need to restart the app for full RTL effect
};
مکمل آر ٹی ایل تجربہ کے لیے استعمال کرو[FLT:PLT] اور . ایک لائبریری کا استعمال کریں جیسے
سرور سے ترجمے (دور آیر) لوڈ کیے۔
کے لئے کہ زبانوں کو بغیر app اسٹور اپ اپ ڈیٹ کے شامل کرنے کی ضرورت ہے، struction transsion J کچھس کو بیک وقت سے استعمال کریں
import HttpBackend from 'i18next-http-backend';
i18n.use(HttpBackend).init({
backend: {
loadPath: 'https://your-api.com/locales/{{lng}}/{{ns}}.json',
},
fallbackLng: 'en',
ns: ['common', 'home'],
defaultNS: 'common',
});
بار بار درخواستوں سے بچنے کے لیے Async Storage میں موجود آسان ترجمے کا انعقاد۔ کوبینے کے ساتھ ایک نسخہسازی کے ساتھ
پیشگی تجاویز
- Gmails Name space : موجودہ سکرین کے لیے صرف لوڈ شدہ تراجم۔ لازی لوڈنگ ابتدائی کیمیائی حجم کو کم کرتا ہے۔
- [Annel re-rends: [fousss] پہلے ہی سے زبان تبدیل کرنے کے لیے استعمال کی جانے والی اصطلاحات کو استعمال کرتے ہیں۔
- Pre-campile ترجمہ فائل: دوران تعمیر، جونس کو منٹو فارمیٹ میں تبدیل کر دیتا ہے۔
- For بڑے بڑے بڑے ایم ایل ٹی[1]، ، ، [1] [i18 q-schanner آپ کے کوڈ بیس سے خودبخود ترجمہ کی کلیدیں نکالنے کے لیے دیکھیے۔
ٹیسٹ ملٹی-لانگ فیکلٹی (انگریزی:
آپ کے ترجمہ کردہ فائل کے لیے یونٹ ٹیسٹ لکھیں: کسی بھی گمشدہ کلیدوں کو یقینی بنانے کے لیے، تمام مقام کي تمام تر سہولیات فراہم نہیں کی جا سکتی اور کام درست کر نے کا درست استعمال مثال کے طور پر استعمال کریں۔
بہترین مشقیں
- ترجمہ کلیدیں [GOFLT] ہارڈ کوڈ صارف-GBE.
- ترجمہ کرنے والے کو خصوصیت یا اسکرین (نامس) سے منظم کیا جاتا ہے۔
- [FLT [1] نامکمل ترجمے کو توڑنے سے روکنے کے لیے.
- اصل اوزاروں پر ڈسکس مختلف تراکیب کے ساتھ.
- ثقافتی اختلافات زبان کے علاوہ: تاریخ کی تشکیل، رنگا معنی، تصاویر۔
- [ اپنے i18n کامکائل ترجمہ کاروں اور ترقی کاروں کے لیے.
اور [FLT]] کے ساتھ ساتھ ساتھ آپ ایک ایسے منظم نظام بنا سکتے ہیں جو آپ کے فراہم کردہ بوجھ کے ساتھ توازن قائم کر سکتے ہیں. [18] [18] آپ اپنے صارف کے ساتھ مل کر کام کرنے والے کے لئے