Қолданбаңызға немесе веб-сайтыңызға бірнеше тіл қосу
Қолданбаға бірнеше тіл қосу үшін интерфейстің барлық мәтінін аударма файлдарына (әр тілге бір файл) көшіріңіз, оларды i18n кітапханасы арқылы жүктеңіз және таңдауды есте сақтайтын тіл ауыстырғыш қосыңыз. Іздеуде табылуы керек ашық беттер үшін әр тілге /fr/ сияқты бөлек URL беріп, нұсқаларын hreflang тегтері арқылы байланыстырыңыз. Содан кейін жиі ұмытылатын бөліктерді өңдеңіз: күн, сандар мен валюта, кейбір тілдердегі ұзын мәтін, оңнан солға жазылатын жазулар және дерекқордағы мазмұн.
Жиі кездесетін терминдер
- Интернационализация (i18n): кодты кез келген тілді қолдауға дайындау — қатты кодталған жолдар жоқ, жергілікті форматтау, икемді макет. «18» саны i мен n арасындағы әріптер санын білдіреді.
- Локализация (l10n): қолданбаны нақты тілге немесе нарыққа бейімдеу, негізінен аударма, кейде валюта, суреттер және заңи мәтіндер де.
- Локаль: тіл және қажет болса аймақ, мысалы
en-GBнемесеpt-BR.
i18n-ді бір рет дайындасаңыз, әр жаңа тілді қосу негізінен аударма жұмысына айналады.
Нұсқалар мен компромисс
| Тәсіл | Қалай жұмыс істейді | Не үшін жарайды | Кемшілігі |
|---|---|---|---|
| i18n кітапханасы + аударма файлдары (мысалы react-i18next, next-intl, vue-i18n) | Мәтін тілге қарай JSON файлдарында сақталады; компоненттер кілт бойынша іздейді | Көп қолданбалар | Алғашқы қайта құру; аудармаларды ұстау керек |
| Аударманы басқару жүйесі (мысалы Crowdin, Lokalise, Phrase) | Аудармашыларға арналған онлайн редактор, файлдармен синхрондалады | Көп тіл, бірнеше аудармашы | Ақылы; тағы бір құрал орнату керек |
| Құрастыру кезінде машиналық немесе ЖИ-аударма | ЖИ API арқылы алғашқы аударма жасалады, содан кейін тексеріледі | Көп тілге тез шығу | Сапаны тексеру керек; API шығындары |
| Браузердегі немесе виджеттегі автоаударма | Келушінің браузері бетті лезде аударады | Сізге бақылау жоқ | Сапаны бақылау мүмкін емес; аударылған беттер сіздікі ретінде индекстелмейді |
| Әр тілге бөлек сайттар | Әр нарыққа бөлек сайт | Өте өзгеше нарықтар | Барлығын екі рет ұстау керек |
Көп қолданба үшін аударма файлдары бар стандартты i18n кітапханасы дұрыс негіз. Қаласаңыз, машиналық немесе ЖИ-аударманы алғашқы нұсқа үшін пайдаланыңыз, содан кейін клиенттер ең көп көретін мәтінді тілді жетік білетін адамға тексертіңіз.
Көптілді қолданбаның бөліктері
Аударма файлдары
<h1>Қош келдіңіз</h1> орнына код t('dashboard.welcome') деп жазады, ал әр локальдың файлында сол мәтін болады:
{
"dashboard": {
"welcome": "Қайта оралуыңызбен, {{name}}",
"items_one": "{{count}} элемент",
"items_other": "{{count}} элемент"
}
}
Айнымалылар үшін сөйлем бөліктерін жалғастырмай, плейсхолдерлерді пайдаланыңыз — сөз реті тілдерде әртүрлі. Сондай-ақ кітапхананың көпше түр ережелерін қолданыңыз: ағылшын тілінде екі түр бар (1 элемент, 2 элемент), ал кейбір тілдерде үш, төрт немесе одан да көп түр бар.
Күнді, сандарды және ақшаны форматтау
Мұны қолмен форматтамаңыз. Браузердің кірістірілген Intl API-і кез келген локальға арналып форматтайды: ағылшынша 1,234.5 неміс тілінде 1.234,5 болады; күн күн-ай немесе ай-күн ретімен көрінеді; валюта белгісі орнын ауыстырады. Күнді UTC уақытында сақтаңыз, ақшаны валюта коды бар сан ретінде сақтаңыз және тек көрсету үшін форматтаңыз.
Созылатын макет
Аударылған мәтін көбінесе ағылшын тілінен ұзын болады — әсіресе неміс және фин тілдерінде. Тұрақты ені бар түймелерден және кесілген белгілерден аулақ болыңыз, ең ұзын тіліңізде тексеріңіз.
Оңнан солға жазылатын тілдер
Араб, иврит, парсы және урду тілдері оңнан солға оқылады. Осы локальдар үшін бетте dir="rtl" орнатыңыз және макет өзін айна ретінде көрсету үшін CSS логикалық қасиеттерін (margin-inline-start орнына margin-left; Tailwind-та ml-4 орнына ms-4) пайдаланыңыз. Бағытты білдіретін белгішелер, мысалы көрсеткілер, да аударылуы керек.
Тіл ауыстырғыш және анықтау
Тіл ауыстырғышты әр бетте көрсетіңіз, оны жалаушалар емес, әр тілдің өз атымен белгілеңіз («Deutsch», «Français», «العربية»). Жалаушалар елдерді білдіреді, тілдерді емес. Алғашқы кіруде браузердің қалаған тілін анықтап, сәйкес нұсқаны ұсыну керек, бірақ келушінің нақты таңдауы басым болып, сақталуы керек.
URL-дер және SEO
Іздеу нәтижелерінде көрінуі керек беттер үшін әр тілдің өз URL-і болуы керек. 2026 жылдың қыркүйегі бойынша көп тілді сайттар үшін Google нұсқауы:
- Әр тілге бөлек URL — ішкі каталогтар (
example.com/fr/) ең қарапайым нұсқа; субдомендер мен ел домендері де жұмыс істейді. URL параметрлері (?lang=fr) ұсынылмайды. - Тілді тек кукимен немесе браузер параметрімен ауыстырмаңыз, әйтпесе Google краулері басқа нұсқаларды көрмеуі мүмкін.
- Тіл бойынша автоматты бағыттамаңыз; оның орнына нұсқалар арасында сілтеме жасаңыз.
- hreflang қолданыңыз, Google-ға қай беттердің бір-бірінің аудармасы екенін айту үшін. Әр нұсқа өзін және басқа барлық нұсқаларды тізуі керек, әйтпесе аннотациялар елеусіз қалуы мүмкін. Резервтік бет үшін
x-defaultқосыңыз. - Google беттің тілін көрінетін мазмұнынан анықтайды,
langнемесе hreflang атрибутынан емес — сондықтан тек мәзірді ғана емес, бүкіл бетті аударыңыз.
Әр нұсқаға бәрібір <html lang="fr"> орнатыңыз: экран оқу құралдары дұрыс айтылымды таңдау үшін оны пайдаланады, бұл қолжетімділік талабы.
Кіргізілген қолданба экрандарын индекстеудің қажеті жоқ, сондықтан оларға тілді пайдаланушы профиліне сақтау жеткілікті. Ашық беттердің краулингі туралы ЖИ арқылы салынған веб-сайттарға арналған SEO бөлімін қараңыз.
Дерекқордағы мазмұн
Интерфейс мәтіні файлдарда тұрады; өнім атаулары, блог жазбалары және санаттар сияқты мазмұн дерекқорда сақталады. Екі жиі кездесетін үлгі:
- Аудармалар кестесі:
product_translations (product_id, locale, name, description). Таза және көп тілге масштабталады. - Әр өріске арналған JSON бағанасы:
name: {"en": "...", "fr": "..."}. Бірнеше тіл үшін қарапайымырақ.
Аударма жоқ болған жағдайда не болатынын шешіңіз — әдетте бос орынды көрсетудің орнына әдепкі тілге қайта оралу керек.
Хабарламалар мен хабарландырулар
Әр пайдаланушының тілін сақтап, оны хабарламаларда, хабарландыруларда және PDF-терде де қолданыңыз. Қолданбаны аудару оңай, бірақ қош келдіңіз хабарламасы әлі ағылшын тілінде келетінін ұмыту да оңай.
Жұмыс істейтін промпттар
react-i18next арқылы i18n қосыңыз. Пайдаланушыға көрінетін әр жолды атаулы кілттермен locales/en.json ішіне көшіріңіз, жолдарды қосудың орнына интерполяция мен көпше түр ережелерін қолданыңыз, күн, сандар және бағаларды ағымдағы локальға сай Intl арқылы форматтаңыз. Әзірге ешбір сөзді өзгертпеңіз.
Француз және неміс тілдерін қосыңыз. Ашық маркетингтік беттерге /fr/ және /de/ URL префикстері, ағылшын тілі түбірде қалсын, әр бетте hreflang сілтемелері (өзіне сілтеме және x-default қоса), әр бетке бөлек html lang. Әр тілдің өз атымен көрсетілетін тіл ауыстырғышын қосыңыз. Кіріп тұрған беттер үшін тілді пайдаланушы профиліне сақтаңыз.
Араб тілін оңнан солға қолдаумен қосыңыз: араб тілі үшін dir="rtl" орнатыңыз, сол және оң жақ маржиналар мен падингтерді логикалық қасиеттермен ауыстырыңыз, бағытты білдіретін белгішелерді айна бейнеде көрсетіңіз, формалар мен кестелердің әлі де дұрыс оқылатынын тексеріңіз.
Қадам-қадаммен
- Бірінші қосымша тілді таңдаңыз — шын сұраныстың негізінде, яғни келушілеріңіз немесе клиенттеріңіз қайда екеніне қарап.
- Кодты интернационализациялаңыз: жолдарды файлдарға көшіріңіз, көпше түр мен
Intlформаттауын қосыңыз. Мұны тек ағылшын тілімен жіберіңіз және ештеңе өзгермегенін тексеріңіз. - Ашық беттер үшін URL құрылымын шешіңіз және hreflang қосыңыз.
- Аударыңыз: машиналық немесе ЖИ-аударма жасаңыз, содан кейін тілді жетік білетін адамға тексертіңіз. Аудармашыларға контекст беріңіз — мысалы, «Book» сөзі бір экранда зат есім, басқасында етістік болуы мүмкін.
- Дерекқор мазмұнын аударыңыз және резервтік мәндерді белгілеңіз.
- Қалғанын локализациялаңыз: хабарламалар, қате мәтіндері, заңи беттер, мәтіні бар суреттер.
- Әр тілді телефон ені бойынша тексеріңіз, қажет болса оңнан солға бағытты да.
- Процесті белгілеңіз, сонда жаңа мүмкіндіктер аудармаларымен бірге шығады, айлар өткен соң емес.
Жиі кездесетін қателер
- Сөйлемдерді жалғастыру (
"You have " + n + " messages"), ол басқа тілдерде бұзылады. - Компоненттерде, қате хабарларында және валидация жолдарында қалған қатты кодталған мәтін.
- Күн мен бағаны қолмен форматтау.
- Тілдер үшін жалаушалар, және адамдарды қате нұсқаға қамап қоятын автоматты бағыттау.
- Индекстелуі керек беттерге барлық тіл үшін бір URL.
- hreflang қайтару сілтемелерінің жоқтығы, сондықтан Google аннотацияларды елемейді.
- Интерфейсті аударып, мазмұнды аудармау немесе керісінше.
- Бағаға, заңи және төлем беттеріне тексерілмеген машиналық аударма.
Көптілді тексеру парағы
- Пайдаланушыға көрінетін қатты кодталған жолдар жоқ; көпше түр ережелері мен плейсхолдерлер қолданылған
- Күн, сандар және валюта
Intlарқылы форматталған - Әр бетте әр тілдің өз атымен тіл ауыстырғыш бар; таңдау сақталады
- Ашық беттер үшін әр тілге бөлек URL; мәжбүрлі бағыттау жоқ
- Әр нұсқада hreflang бар, өзіне және x-default қоса
- Әр бетте
html lang(қажет болсаdir="rtl") орнатылған - Дерекқор мазмұны аударылған және ақылға қонымды резервтері бар
- Хабарламалар мен хабарландырулар пайдаланушының тілінде жіберіледі
- Клиентке көрінетін мәтінді тілді жетік білетін адам тексерген
Mythex-те көптілділік
Mythex-те тілдерді чатта сұрау арқылы қосасыз — бөлек аударма панелі жоқ, сондықтан жоғарыдағы промпттар дәл осылай жұмыс істейді. Бұл үлкен қайта құру болғандықтан, алдымен i18n қадамын жасап, оны Preview-де тексеріңіз; чат checkpoint-і қате кетсе, қайтып оралуға мүмкіндік береді (чат және checkpoint-тер). Егер қолданба мазмұнды ЖИ немесе аударма API-імен автоматты түрде аударуын қаласаңыз, бұл жоба параметрлерінде сақталған өз API кілтіңізді пайдаланады (орта айнымалылары мен құпиялар); шығындары туралы LLM API-лерін қалай пайдалану керек бөлімінде жазылған. Жаңа тілдер дайын болғанда қайта жариялаңыз.
Сұрақтар
Интернационализация (i18n) мен локализация арасында қандай айырмашылық бар?
Интернационализация (i18n) — кодты көптеген тілдерді қолдай алатындай дайындау: қатты кодталған мәтін жоқ, күн мен сандар жергілікті форматта көрсетіледі, макет ұзын сөздер мен оңнан солға жазылатын тілдерді көтереді. Локализация (l10n) — нақты бір тілге немесе нарыққа бейімдеу жұмысы, негізінен аударма.
Қолданбаны аудару үшін машиналық аударманы немесе ЖИ-ді қолдануға бола ма?
Алғашқы нұсқа үшін иә — заманауи машиналық және ЖИ-аударма интерфейс мәтініне жақсы жарайды. Клиенттерге көрсетілетін мәтіндерді, әсіресе заңи мәтіндерді, бағаны және маркетингтік мәтіндерді тілді жетік білетін адам тексеруі керек, өйткені мұнда өңдеу мәнері мен кішкентай қателер маңызды.
Әр тілдің өз URL-і болуы керек пе?
Іздеу нәтижелерінде көрінуі керек ашық беттер үшін — иә. Google кукиді немесе браузер параметрін арқылы тіл ауыстырудың орнына, мысалы /fr/ және /de/ сияқты, әр тілге бөлек URL ұсынады, себебі оның краулері тек бір нұсқаны көріп қалуы мүмкін.
Келушілерді браузер тіліне қарай басқа бетке бағыттау керек пе?
Ұсыныңыз, мәжбүрлемеңіз. Google автоматты тілдік бағыттауға қарсы кеңес береді, себебі ол адамдар мен краулерлерді басқа нұсқаларға жеткізбеуі мүмкін. Сәйкес тілді ұсынатын шағын хабарлама және әр бетте көрінетін тіл ауыстырғыш қойыңыз.