बहुभाषी इंटरफेस और स्थानीयकरण
1) सिद्धांत
1. भाषा त्वचा नहीं है। ग्रंथ, प्रारूप, लेखन की दिशा, चित्र, कानूनी ब्लॉक और यहां तक कि नेविगेशन भी बदल रहे हैं।
2. पहले कुंजी, फिर ग्रंथ। संरचना शब्दार्थ कुंजियाँ और मापदंड - अनुवाद बाद में आते हैं।
3. स्यूडोलोकलाइजेशन - बाहर निकलने से पहले। ओवरफ्लो, "हार्ड-सिलाई" लाइनों और छिपे हुए एंग्लिक्म को पकड़ें।
4. फोलबैक अनुमानित हैं। 'ru-UA → ru → en'। कोई "शांत" विफलता नहीं।
5. सुरक्षा। स्वच्छता के बिना अनुवाद से डोम तक कोई एचटीएमएल नहीं; प्लेसहोल्डर केवल स्थिति/नाम हैं।
6. A11y-equivalence। ऑल्ट ग्रंथ, आरिया लेबल, संक्षिप्ताक्षर - सब कुछ स्थानीयकृत है।
2) लोकेल रणनीति
सिस्टम कोड: 'भाषा-क्षेत्र' (उदाहरण के लिए, 'पीटी-बीआर', 'एन-जीबी')।
लोकेल चयन: उपयोगकर्ता प्रोफ़ाइल - सेटिंग; स्पेयर - ब्राउज़र/जियो (पुष्टि के साथ) द्वारा ऑटो-डिटेक्शन।
बहु-क्षेत्र: कानून से अलग भाषा: 'एस-ईएस' ≠ 'एस-एमएक्स' (विभिन्न कानून/भुगतान/सीमा)।
फोलबैक श्रृंखला: यूआई निकटतम भाषा है; कानूनी ग्रंथ - सख्ती से क्षेत्रीय संस्करण, अन्यथा ब्लॉक और पुष्
3) सूचना वास्तुकला और सामग्री
मुख्य क्षेत्र: नेविगेशन, सीटीए, बग, फॉर्म, प्रांप्ट, सूचनाएं, पत्र, पीडीएफ/बैनर।
पाठ एक्सटेंशन: + 30-40% चौड़ाई आरक्षित (जर्मन/फिनिश)। लेआउट - लोचदार (फ्लेक्स/ग्रिड)।
टोन/शैली: ब्रांड शब्दकोश (शब्द, महत्वपूर्ण स्थानों में "स्लैंग अनुवाद" के बिना)।
चित्र/प्रतीक: चित्रों में पाठ से बचें; यदि आवश्यक हो, तो स्थानीय संस्करण रखें।
4) i18n वास्तुकला
कुंजियाँ: 'डोमेन। अनुभाग। इरादा '→' भुगतान। वापस लेना। त्रुटि। insufficient_funds'।
प्लेसहोल्डर्स: नाम ('{monity}', '{minits}'), जिसे लाइन से बाहर स्वरूपित किया गया है।
आईसीयू मैसेजफॉर्मेट: बहुलता, लिंग, सहमति।
फ़ाइलें: लोकेल और डोमेन ('/i18n/{ locale }/{ domain} .json ') द्वारा, चंक को आलसी रूप से लोड किया जाता है।
सर्वर/क्लाइंट: सार्वभौमिक रेंडर, कुकी + HTTP-Vary में लोकेल।
उदाहरण कुंजी (आईसीयू):json
{
"betslip": {
"placed": "{amount} {currency} bid accepted,"
"timeout": "Waiting for confirmation... ~ {seconds, plural, one {# sec} few {# sec} many {# sec} other {# sec}}"
}
}
5) स्वरूपण: संख्या, तिथि, मुद्राएँ, इकाइयाँ
इस्तेमाल करें 'Intl। ':js const nf = new Intl. NumberFormat('uk-UA', { style:'currency', currency:'UAH' });
nf. format(2000); // 2 000,00 ₴
const df = new Intl. DateTimeFormat('tr-TR', { dateStyle:'medium', timeStyle:'short' });
df. format(new Date());
const pl = new Intl. PluralRules('ru-RU');
मामूली इकाइयाँ: सेंट/कोपेक में मात्रा रखें; क्लाइंट पर प्रारूप।
सापेक्ष समय: 'Intl। ReleVoveTimeFormat '।
इकाइयाँ: 'Intl। नंबर प्रारूप ({syle: 'unite', इकाई: 'मीटर'})।
कैलेंडर/सप्ताह: सप्ताह का पहला दिन और तारीख प्रारूप - लोकेल द्वारा।
6) आरटीएल और लेखन निर्देशन
'dir =' rtl '' 'के लिए' ar ',' he ',' fa 'का समर्थन करें; कस्टम सामग्री के लिए 'dir = "ऑटो" का उपयोग करें।
उलटा प्रतीक/शेवरॉन; हिंडोला और स्टेपर दर्पण।
मुद्रा संख्या/प्रतीक - एलटीआर विंडो (मिश्रित बीडीआई अराजकता से बचें)।
सीएसएस बूलियन गुण ('इनलाइन-स्टार्ट/एंड') बाएँ/दाएँ के बजाय.
7) फॉर्म और इनपुट
नाम/पते: apostrophes/diacritics/डबल उपनाम की अनुमति दें।
टेलीफोन: E.164 भंडारण; मुखौटे - नरम, सम्मिलित समर्थन के साथ।
पता प्रारूप: देश द्वारा क्षेत्र क्रम; सूचकांक/स्थिति गायब हो सकती है।
कीबोर्ड: 'इनपुटमोड', लोकेल के लिए 'स्वतः पूर्ण' सही।
प्लेसहोल्डर्स: स्थानीय भाषा/प्रारूप में उदाहरण।
8) स्यूडोलोकलाइजेशन और परीक्षण
स्वचालित रूप से पंक्तियों को ' ' + एक्सटेंशन '+ + +' (~ 35%) से बदलें।
देव विधानसभा में स्यूडोलोकल को 'qps-ploc' के रूप में शामिल करें।
अनुवादकों के लिए संदर्भ के साथ स्क्रीनशॉट: प्लेसहोल्डर्स और लंबे ग्रंथों को उजागर करना।
टेस्ट: ट्रिमिंग, हाइफ़नेशन, ओवरफ्लो, "हार्ड-स्टिक्ड" स्ट्रिंग्स, आरटीएल।
9) सूचनाएं, पत्र, टेम्पलेट
अक्षर और विषय का साँचा - प्रत्येक स्थान के लिए; अलग ग्रंथ और लेआउट।
विषय में दिनांक/मात्रा - स्थान द्वारा स्वरूपित।
कॉन्फ़िगर अधिसूचना लिंक हमेशा अक्षर की भाषा में होते हैं।
एसएमएस: संक्षिप्त, बिना मल्टीलाइन उद्धरण के; UTM - कोई स्थानीयकरण नहीं।
10) सुरक्षा और विश्वसनीयता
अनुवाद को HTML के रूप में कभी व्याख्या न करें, सुरक्षित आवेषण का उपयोग करें।
प्लेसहोल्डर्स - केवल डेटा, मार्कअप नहीं।
लॉग/मैट्रिक्स अवर्गीकृत हैं, लेकिन समस्याओं का पता लगाने के लिए एक स्थान के साथ।
जब अनुवाद फ़ाइल उपलब्ध नहीं है - "शांत" (अंग्रेजी + टेलीमेट्री दिखाएं)।
11) प्रदर्शन
मार्गों/डोमेन द्वारा स्थानान्तरण; अक्सर के लिए प्रीलोड करें।
Кеш CDN с 'ETag '/' कैश-कंट्रोल'।
स्थान बदलते समय पुनर्विक्रेताओं से बचें - संस्मरण के साथ i18n संदर्भ।
12) iGaming की बारीकियाँ
अस्वीकरण और जिम्मेदार नाटक: शब्द देश (18 +/21 +, नियामक अधिकारियों, सहायता लाइनों) पर निर्भर करता है।
KYC/AML: कानूनी रूप से सही शब्द (उदाहरण के लिए, "धन का स्रोत", "लाभकारी स्वामी"), केस/जन्म विकल्प।
भुगतान के तरीके: स्थानीय नाम (PIX, पापारा, SEPA) और शर्तें (ETA/कमीशन) - क्षेत्र द्वारा सख्ती से।
गुणांक और प्रारूप: 'दशमलव/भिन्नात्मक/अमेरिकी' - स्थानीय स्पष्टीकरण और उदाहरण।
कानूनी ग्रंथ: अपरिवर्तित क्षेत्रीय संस्करण; अन्य क्षेत्राधिकार से लोगों पर प्रतिबंध लगाना।
13) डिजाइन प्रणाली टोकन (उदाहरण)
json
{
"i18n": {
"fallback": ["en"],
"rtl": ["ar", "he", "fa"],
"textExpansionPct": 0. 35,
"screenshotHints": true
},
"typography": {
"lineHeight": { "ui": 1. 4, "dense": 1. 3 },
"hyphens": "auto",
"tabularNums": true
},
"layout": {
"minLabelWidth": 96,
"gap": { "sm": 8, "md": 12, "lg": 16 }
},
"a11y": {
"ariaMirroring": true,
"altTranslate": true,
"contrastAA": true
}
}
14) स्निपेट्स
प्रतिक्रिया + i18next (आलसी बूट, आईसीयू):ts import i18n from 'i18next';
import ICU from 'i18next-icu';
import { initReactI18next } from 'react-i18next';
i18n. use(ICU). use(initReactI18next). init({
lng: 'uk-UA',
fallbackLng: ['ru', 'en'],
load: 'languageOnly',
interpolation: { escapeValue: false },
resources: {}//empty - loadim lazy
});
export async function loadNamespace(ns: string, lng = i18n. language){
const mod = await import(`/i18n/${lng}/${ns}.json`);
i18n. addResourceBundle(lng, ns, mod. default, true, true);
}
आईसीयू बहुलकरण (rus/ukr):
json
{
"notifications": "{count, plural, one {# notification} few {# notifications} many {# notifications} other {# notifications}}"
}
मुद्राओं/तिथियों के लिए इंटल:
js const money = (v, c, l) => new Intl. NumberFormat(l, {style:'currency', currency:c}). format(v/100);
const rel = (v, unit, l) => new Intl. RelativeTimeFormat(l, {numeric:'auto'}). format(v, unit);
// money(250000,'EUR','de-DE') → 2. 500,00 €
रूट पर आरटीएल क्लास:
js const rtl = new Set(['ar','he','fa']);
document. documentElement. dir = rtl. has(locale. split('-')[0])? 'rtl': 'ltr';
स्यूडोलोकल (देव):
js const pseudo = s => s. replace(/[aAeEiIoOuU]/g, m => ({a:'à',e:'ê',i:'ï',o:'ô',u:'û'}[m. toLowerCase()] m)). replace(/([^\s])/g,'$1\u0301');
15) खाली/त्रुटि/भूरे रंग का क्षरण
कोई कुंजी अनुवाद नहीं है: हम अंग्रेजी + लॉग 'लापता (_ key) दिखाते हैं।
कोई लोकेल फ़ाइल: फोलबैक और बैनर "अंग्रेजी में इंटरफ़ेस का हिस्सा"।
पाठ बहुत लंबा: मल्टी-लाइन, 'लाइन-क्लैंप' जगह में, पूर्ण पाठ के साथ टूलटिप।
16) मेट्रिक्स और गुणवत्ता नियंत्रण
कुंजी/स्थान द्वारा कवरेज% (लक्ष्य ≥ 98%)।
नई रिलीज के लिए टाइम-टू-ट्रांसलेट (TTT)।
बग दर L10n: दृश्य कतरन, आरटीएल दोष, गलत प्रारूप।
पढ़ ने में आसानी (व्यक्तिपरक सर्वेक्षण) और एनपीएस प्रति स्थान।
क्षेत्र द्वारा कानूनी सत्यापन (अनुपालन चेकलिस्ट)।
17) एंटीपैटर्न
कोड में स्ट्रिंग्स की समानता ("आपने जीता" + राशि + "!") - व्याकरण को तोड़ ता है।
बिना स्थानीय संस्करणों के छवियों/प्रतीकों में पाठ।
अंग्रेजी के लिए कठिन चौड़ाई।
भाषा के साथ देश कानून का प्रतिस्थापन (मेक्सिको के लिए 'एस-ईएस' का उपयोग करें)।
स्वच्छता के बिना सीएमएस से एचटीएमएल अनुवाद।
विभिन्न स्थानों में विभिन्न अर्थों के साथ एक ही कुंजी।
18) क्यूए चेकलिस्ट
पंक्तियाँ और कुंजियाँ
- नामित प्लेसहोल्डर्स; कोई सहमति नहीं।
- आईसीयू-बहुलकरण/जीनस जहां जरूरत है।
- फोलबैक श्रृंखला काम करती है।
लेआउट और उपलब्धता
- चौड़ाई + 30-40% का मार्जिन; 'लाइन-क्लैंप', शब्द रैपिंग।
- Alt/aria लेबल स्थानीयकृत हैं।
- आरटीएल प्रतीक/नेविगेशन दर्पण; संख्या पढ़ ने योग्य हैं।
प्रारूप
- दिनांक/मुद्राएँ 'Intl के माध्यम से। '; मामूली इकाइयों से मात्रा।
- पता/फोन/नाम - लचीला देश नियम।
सुरक्षा/निष्पादन
- अनुवाद एचटीएमएल निष्पादित नहीं करते हैं; XSS को बाहर रखा गया।
- आलसी चंक, सीडीएन कैश, अनावश्यक पुनर्विक्रेताओं के बिना।
iGaming विशिष्टता
- Disclaimers/18 +/हेल्प लाइन - अधिकार क्षेत्र द्वारा।
- KYC/AML ग्रंथों को कानूनी रूप से सामंजस्य स्थापित किया जाता है।
- भुगतान नाम/ईटीए/शुल्क - स्थानीय।
19) डिजाइन प्रणाली में प्रलेखन
Разделы: i18n टोकन, गाइड (आईसीयू/बहुवचन/आरटीएल), पैटर्न (ईमेल/एसएमएस/टोस्ट), प्रति क्षेत्र कानूनी स्ट्रिंग्स।
उपकरण: स्यूडोलोकल, स्क्रीन का स्क्रीनशॉट, कवरेज रिपोर्ट, कुंजी लिंटर।
प्रक्रिया: शब्दावली, अनुवाद स्मृति, प्रासंगिक स्क्रीनशॉट, एक देशी वक्ता द्वारा समीक्षा।
संक्षिप्त सारांश
बहुभाषी यूआई वास्तुकला, डिजाइन, सामग्री और कानून के स्तर पर एक व्यवस्थित काम है। कुंजियों और फोलबैक का आयोजन करें, आईसीयू और 'इंटल' का उपयोग करें, आरटीएल का समर्थन करें, अग्रिम में छद्म-स्थान चलाएं और क्षेत्रीय शब्दों की कानूनी शुद्धता सुनिश्चित करें। फिर उत्पाद देशी महसूस करेगा - गुणांक और भुगतान से लेकर पत्र और मदद तक - प्रत्येक देश में और प्रत्येक उपयोगकर्ता के लिए।