Πολυγλωσσικές διεπαφές και εντοπισμός
1) Αρχές
1. Η γλώσσα δεν είναι επιδερμίδα. Τα κείμενα, οι μορφές, η κατεύθυνση της γραφής, οι εικονογραφήσεις, τα νομικά μπλοκ, ακόμη και η πλοήγηση αλλάζουν.
2. Πρώτα τα κλειδιά, μετά τα κείμενα. Δομή σημασιολογικών κλειδιών και παραμέτρων - μεταφράσεις έρχονται αργότερα.
3. Ψευδοαποικιοποίηση - πριν την έξοδο. Αλιεύονται υπερχείλιση, «σκληρές» γραμμές και κρυμμένοι αγγλικισμοί.
4. Τα folbacks είναι προβλέψιμα. «ru-UA → ru → en». Καμία «ήσυχη» αποτυχία.
5. Ασφάλεια. Δεν υπάρχει HTML από τη μετάφραση σε DOM χωρίς απολύμανση. οι κάτοχοι θέσης έχουν μόνο θέση/ονοματεπώνυμο.
6. . Alt κείμενα, aria ετικέτες, συντομογραφίες - όλα είναι τοπικά.
2) Στρατηγική σε τοπικό επίπεδο
Κωδικοί συστήματος: «ΓΛΩΣΣΙΚΗ ΠΕΡΙΦΕΡΕΙΑ» (για παράδειγμα, «pt-BR», «en-GB»).
Επιλογή τόπου: ρύθμιση προφίλ χρήστη. εφεδρική - αυτόματη ανίχνευση από περιηγητή/γεω (με επιβεβαίωση).
Πολυπεριφέρεια: διάκριση γλώσσας από το νόμο: «es-ES» ≠ «es-MX» (διαφορετικοί νόμοι/πληρωμές/όρια).
Αλυσίδα Folback: UI είναι η πλησιέστερη γλώσσα. νομικά κείμενα - αυστηρά περιφερειακή έκδοση, διαφορετικά μπλοκάρισμα και αίτηση επιβεβαίωσης.
3) Αρχιτεκτονική και περιεχόμενο πληροφοριών
Βασικά πεδία: πλοήγηση, CTA, σφάλματα, έντυπα, κίνητρα, κοινοποιήσεις, γράμματα, PDF/πανό.
Επέκταση κειμένου: + αποθεματικό πλάτους 30-40% (γερμανικά/φινλανδικά). Διάταξη - ελαστική (ευέλικτη/πλέγμα).
Τόνος/στυλ: λεξικό μάρκας (όροι, χωρίς «αργκό μετάφραση» σε κρίσιμα σημεία).
Εικόνες/εικονίδια: αποφυγή κειμένου σε εικόνες. εάν χρειάζεται, διατηρήστε τις τοπικές εκδόσεις.
4) i18n αρχιτεκτονική
Κλειδιά: 'domain. τμήμα. πρόθεση πληρωμής «→». αποσύρεται. σφάλμα. .
Κάτοχοι θέσεων: ονομάζονται ('{ποσό}', '{λεπτά}'), μορφοποιημένα εκτός γραμμής.
Μορφή μηνύματος ICU: πολλαπλότητα, φύλο, συμφωνία.
Αρχεία: από τοπικό και domains ('/i18n/{ locale }/{ domain} .json '), τα κομμάτια φορτώνονται τεμπέλικα.
Εξυπηρετητής/πελάτης: universal render, locale in cookie + HTTP-Vary.
json
{
"betslip": {
"placed": "Ставка на сумму {amount} {currency} принята",
"timeout": "Ожидаем подтверждение… ~{seconds, plural, one {# сек} few {# сек} many {# сек} other {# сек}}"
}
}
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');
Μονάδες ήσσονος σημασίας: Διατήρηση ποσών σε λεπτά/kopecks. Μορφότυπος για τον πελάτη.
Σχετικός χρόνος: 'Intl. TimeFormat '.
Μονάδες: 'Intl. NumberFormat ({style: 'unit', unit: 'meter'}) '.
Ημερολόγιο/εβδομάδα: 1η ημέρα της εβδομάδας και μορφή ημερομηνίας - ανά τόπο.
6) RTL και κατεύθυνση γραφής
Υποστήριξη 'dir = «rtl»' για 'ar', 'he', 'fa'; χρήση 'dir = «auto»' για προσαρμοσμένο περιεχόμενο.
Ανεστραμμένα εικονίδια/ακίδες. Καθρέφτες καρουζέλ και στέπας.
Αριθμοί/σύμβολα νομίσματος - παράθυρα LTR (αποφυγή μεικτού χάους BiDi).
Ιδιότητες CSS Boolean ('inline-start/end') αντί αριστερά/δεξιά.
7) Έντυπα και εισροές
Ονόματα/διευθύνσεις: να επιτραπούν απόστροφοι/διακριτικά/διπλά επώνυμα.
Τηλέφωνα: αποθήκευση E.164. μάσκες - μαλακές, με ένθετο.
Μορφότυποι διευθύνσεων: επιτόπια εντολή ανά χώρα. ο δείκτης/κατάσταση μπορεί να λείπει.
Πληκτρολόγια: 'inputmode', 'autocplete' σωστά για τοπική χρήση.
Κάτοχοι θέσεων: παραδείγματα σε τοπική γλώσσα/μορφή.
8) Ψευδοεντοπισμός και δοκιμές
Να αντικατασταθούν αυτόματα οι γραμμές με '【 】 "+ επέκταση' + + + '(~ 35%).
Συμπεριλάβετε το ψευδοεστιακό στη συναρμολόγηση dev ως 'qps-ploc'.
Στιγμιότυπα οθόνης με πλαίσιο για μεταφραστές: ανάδειξη των κατόχων θέσεων και μακρά κείμενα.
Δοκιμή: στολίδια, υφαινώσεις, υπερχείλιση, «σκληρές» συμβολοσειρές, RTL.
9) Κοινοποιήσεις, επιστολές, υποδείγματα
Υπόδειγμα γράμματος και αντικειμένου - για κάθε τόπο· χωριστά κείμενα και διάταξη.
Ημερομηνίες/ποσά του θέματος - μορφοποιημένα ανά τόπο.
Οι σύνδεσμοι ειδοποιήσεων ρυθμίσεων είναι πάντα στη γλώσσα του γράμματος.
SMS: σύντομες, χωρίς τιμές πολλαπλών γραμμών· UTM - καμία τοπικοποίηση.
10) Ασφάλεια και αξιοπιστία
Ποτέ μην ερμηνεύετε τη μετάφραση ως HTML, χρησιμοποιήστε ασφαλή ένθετα.
Κάτοχοι θέσεων - μόνο δεδομένα, όχι σήμανση.
Τα αρχεία καταγραφής/μέτρησης δεν ταξινομούνται, αλλά έχουν τοπικό χαρακτήρα για την ανίχνευση προβλημάτων.
Folback όταν το αρχείο μετάφρασης δεν είναι διαθέσιμο - «quiet» (show english + telemetry).
11) Επιδόσεις
Κομμάτια μεταφορών ανά διαδρομές/τομείς. Προφορτώσεις για συχνές.
CDN 'ETag '/' Cache-Control'.
Αποφυγή επαναπροσδιορισμών όταν αλλάζει τοπικό πλαίσιο - i18n με απομνημόνευση.
12) Οι ιδιαιτερότητες του iGaming
Αποκηρύκτες και υπεύθυνοι: η διατύπωση εξαρτάται από τη χώρα (18 +/21 +, ρυθμιστικές αρχές, γραμμές βοήθειας).
KYC/AML: νομικά ορθοί όροι (για παράδειγμα, «Πηγή Ταμείων», «Πραγματικός Δικαιούχος»), επιλογές περίπτωσης/γέννησης.
Μέθοδοι πληρωμής: τοπικές ονομασίες (PIX, Papara, 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) Snippets
Αντίδραση + i18next (τεμπέλης εκκίνησης, ICU):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: {} // пусто — грузим лениво
});
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);
}
Πολυφωνία της ICU (rus/ukr):
json
{
"notifications": "{count, plural, one {# уведомление} few {# уведомления} many {# уведомлений} other {# уведомления}}"
}
Intl για νομίσματα/ημερομηνίες:
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 €
Κατηγορία RTL στη ρίζα:
js const rtl = new Set(['ar','he','fa']);
document.documentElement.dir = rtl.has(locale.split('-')[0])? 'rtl': 'ltr';
Pseudolocal (dev):
js const pseudo = s => s.replace(/[aAeEiIoOuU]/g, m => ({a:'à',e:'ê',i:'ï',o:'ô',u:'û'}[m.toLowerCase()] m)).replace(/([^\s])/g,'$1\u0301');
15) Κενό/σφάλμα/γκρίζα υποβάθμιση
Δεν υπάρχει μετάφραση κλειδιού: δείχνουμε αγγλικά + ημερολόγιο 'λείπει _ κλειδί'.
Δεν υπάρχει τοπικό αρχείο: folback και banner «Μέρος της διεπαφής στα αγγλικά».
Κείμενο υπερβολικά μακρύ: εφαρμογή πολλαπλών γραμμών, «σφιγκτήρας γραμμής», εργαλειοθήκη με πλήρες κείμενο.
16) Μετρήσεις και ποιοτικός έλεγχος
Κάλυψη% ανά κλειδί/τοποθεσία (στόχος ≥ 98%).
Time-to-Translate (TTT) για νέες κυκλοφορίες.
Ρυθμός L10n: οπτικά αποκόμματα, ελαττώματα RTL, εσφαλμένες μορφές.
Ευκολία ανάγνωσης (υποκειμενική έρευνα) και NPS ανά τόπο.
Νομική επικύρωση ανά περιφέρεια (κατάλογος ελέγχου συμμόρφωσης).
17) Αντιπατερίδια
Συγχώνευση συμβολοσειρών σε κωδικό («Κέρδισες» + ποσό + «!») - σπάει η γραμματική.
Κείμενο σε εικόνες/εικονίδια χωρίς τοπικές εκδόσεις.
Σκληρό πλάτος για τα αγγλικά.
Αντικατάσταση του εθνικού δικαίου με τη γλώσσα (χρήση του «es-ES» για το Μεξικό).
Μετάφραση HTML από το CMS χωρίς αποχέτευση.
Το ίδιο κλειδί με διαφορετικές έννοιες σε διαφορετικά μέρη.
18) Κατάλογος ελέγχου QA
Γραμμές και κλειδιά
- Κατονομαζόμενοι κάτοχοι θέσεων, καμία συγχώνευση.
- πλουραλισμός/γένος ICU όπου απαιτείται.
- Η αλυσίδα folback λειτουργεί.
Διάταξη και διαθεσιμότητα
- Περιθώριο πλάτους + 30-40%· 'line-clamp', περιτύλιγμα λέξεων.
- Οι ετικέτες alt/aria είναι εντοπισμένες.
- Τα κάτοπτρα RTL εικονίδια/πλοήγηση. οι αριθμοί είναι αναγνώσιμοι.
Μορφότυποι
- Ημερομηνίες/νομίσματα μέσω 'Intl. '; ποσά από μονάδες ήσσονος σημασίας.
- Διεύθυνση/τηλέφωνο/όνομα - Ευέλικτοι κανόνες χώρας.
Ασφάλεια/επιδόσεις
- Οι μεταφράσεις δεν εκτελούν HTML. Δεν περιλαμβάνεται το XSS.
- Τεμπέλικα κομμάτια, CDN cache, χωρίς περιττές επαναλήψεις.
Ιδιαιτερότητες iGaming
- Disclaimers/18 +/γραμμές βοήθειας - κατά δικαιοδοσία.
- Τα κείμενα KYC/AML συμφιλιώνονται νομικά.
- Ονόματα πληρωμής/ETA/τέλη - τοπικά.
19) Τεκμηρίωση στο σύστημα σχεδιασμού
: i18n Tokens, Guides (ICU/Plural/RTL), μοτίβα (Emails/SMS/Toasts), Νομικές χορδές ανά Περιφέρεια.
Εργαλεία: ψευδοεστιακό, στιγμιότυπο οθόνης, αναφορά κάλυψης, βασικό χιτώνιο.
Διαδικασία: γλωσσάριο, μνήμη μετάφρασης, στιγμιότυπα οθόνης πλαισίου, αξιολόγηση από μητρικό ομιλητή.
Σύντομη περίληψη
Η πολύγλωσση ΚΠΕ είναι ένα συστηματικό έργο σε επίπεδο αρχιτεκτονικής, σχεδιασμού, περιεχομένου και δικαίου. Οργανώστε κλειδιά και folbacks, χρησιμοποιήστε ICU και 'Intl', υποστηρίξτε RTL, εκτελέστε ένα ψευδο-τοπικό εκ των προτέρων και εξασφαλίστε τη νομική ορθότητα της περιφερειακής διατύπωσης. Στη συνέχεια, το προϊόν θα αισθάνεται ντόπιο - από τους συντελεστές και τις πληρωμές μέχρι τα γράμματα και τη βοήθεια - σε κάθε χώρα και για κάθε χρήστη.