Beimbet

2026 ж. 28 қыркүйек · 4 мин оқу

Қазақ, орыс және ағылшын тілдерінде сайт: қалай дұрыс жасау керек

Біз мемлекеттік органдарға, мердігерлерге және сервистерге үш тілде сайттар жасаймыз - Жылыой ауданының полиция басқармасына арналған сайттан бастап 19 тілдегі QR-мәзірге дейін. Төменде толыққанды көптілділікті «аудару» батырмасынан не ажырататыны және өзіміз сабақ алған қателер туралы.

Әр тілге - өз мекенжайы

Ең басты қате - тілді бір беттің ішінде скриптпен ауыстыру. Іздеу жүйесі батырманың күйін емес, мекенжайларды индекстейді: ол бір ғана нұсқаны, әдетте әдепкі бойынша көрсетілетінін көреді, ал қазақша немесе ағылшынша нұсқа іздеуге түспейді.

Дұрысы - әр тілге жеке мекенжай: /kk, /ru, /en немесе субдомендер. Сонда әр нұсқа бөлек индекстеледі, әрқайсысында өз title мен description бар және оны өз тіліндегі сұраныс бойынша іздеп табады.

hreflang: іздеу қажетті нұсқаны көрсетуі үшін

Бір беттің тілдік нұсқалары hreflang белгілеуі арқылы байланыстырылады. Әр нұсқа барлық нұсқаны, соның ішінде өзін де, және әдепкі x-default нұсқасын тізіп көрсетеді. Тіл кодтары: қазақ тілі үшін kk, орыс тілі үшін ru, ағылшын тілі үшін en.

Белгілеу өзара болуы керек: егер қазақша бет орысша бетті көрсетсе, орысша бет те қазақша бетті міндетті түрде көрсетуі тиіс, әйтпесе іздеу жүйесі бұл байланысты елемейді. Біз тілдік мекенжайлар тізімін бір функцияда ұстаймыз және оны беттер үшін де, sitemap.xml үшін де сол жерден аламыз - осылайша екі белгілеу бір-бірінен алшақтамайды.

Тек мәтінді аудару жеткіліксіз

  • әр беттің title және meta description тегтері
  • әлеуметтік желілерге арналған превью: беттің тіліндегі тақырып, сипаттама және мәтіні бар сурет
  • суреттердегі alt
  • schema.org белгілеуі: атаулар мен сипаттамалар
  • html тегіндегі lang атрибуты
  • батырмалар, қате хабарламалары, кеңестер және хаттар
  • күн, сан және валюта пішімдері

Осылардың біреуі болса да орыс тілінде қалып қойса, қазақша нұсқа адамдарға да, іздеу жүйесіне де аяқталмаған болып көрінеді.

Қаріпте қазақ әріптері болуы керек

Қазақ әліпбиінде орыс әліпбиінде жоқ тоғыз әріп бар: ә, ғ, қ, ң, ө, ұ, ү, һ, і. Бұл әріптер кез келген қаріпте бола бермейді, ал болса да, көбіне cyrillic-ext деген бөлек таңбалар жиынында жатады және оны арнайы қосу керек.

Әріп жоқ болса, браузер оны жүйелік қаріптен алып қояды да, сөздің ішінде пішіні басқа таңба пайда болады. Біз мұған өзіміз де тап болдық: JetBrains Mono моноширинді қарпінің Google Fonts жинағындағы нұсқасында Ә, Ғ, Қ, Ң, Ұ, Һ бас әріптері жоқ, сондықтан осы сайтта оны IBM Plex Mono қарпіне ауыстыруға тура келді. Теңге белгісінде де осындай жағдай: Google Fonts қаріптерінде ₸ кеңейтілген латын жиыны latin-ext ішінде жатады, ол қосылмаса, сомадағы белгі бос шаршы болып көрінеді.

Тексеру бір минут алады: сайтта қолданылатын әр қаріппен бетке «ӘҒҚҢӨҰҮҺІ әғқңөұүһі ₸» деп теріп, қандай да бір таңба ерекшеленіп тұрмағанын қараңыз.

Сандардан кейінгі сөз тұлғалары

Орыс тілінде саннан кейінгі сөздің үш тұлғасы бар: 1 проект, 2 проекта, 5 проектов. Ағылшын тілінде екеу: 1 project, 5 projects. Қазақ тілінде саннан кейінгі зат есім өзгермейді: 1 жоба, 5 жоба.

Сондықтан «сан + сөз» тіркесін бір тілдің ережесімен құрастыруға болмайды. Браузерде және Node.js ортасында бұл үшін стандартты Intl.PluralRules бар: ол әр тіл үшін тұлғаның қажетті санатын қайтарады, ал тұлғалардың өзі сөздікте сақталады.

Сандар серверде де, браузерде де бірдей болуы керек

Орыс және қазақ тілдерінде мың разрядтарының бөлгіші - бос орын, ағылшын тілінде - үтір. Егер сайт сандарды серверде де, браузерде де пішімдесе, стандартты пішімдеу әртүрлі бос орын беруі мүмкін: бір жерде кәдімгі, екінші жерде жіңішке үзілмейтін бос орын. React белгілеудің сәйкес келмейтінін көріп, блокты қайта сызады. Нәтижесінде біз бөлгіштерді әр тіл үшін өзіміз нақты көрсетеміз.

Тілді қалай ауыстыру керек

  • Ауыстырғыш басты бетке емес, сол беттің басқа тілдегі нұсқасына апарады
  • Браузер баптаулары бойынша тілді тек сайттың түбірлік мекенжайына кіргенде анықтаймыз; ішкі мекенжайларда тілді мекенжайдың өзі белгілейді
  • IP-мекенжай бойынша қайта бағыттамаймыз: іздеу роботтары басқа елдерден келеді және қазақша нұсқаны көрмей қалар еді
  • Ауыстырғыштағы тіл атауларын сол тілдердің өзінде жазамыз: Қаз, Рус, Eng

Аударманы қалай жоғалтпауға болады

Мәтіндер тілдер бойынша сөздіктерде сақталғанда, орысшаға жол қосып, қазақшасын ұмытып кету оңай. Біз мұны автоматты түрде тексереміз: тест барлық сөздіктің құрылымын салыстырады және қай да бір тілде кілт жетіспесе немесе жол бос болса, сәтсіз аяқталады. Осылайша жаңа бет продакшнға жартылай аударылған күйде шықпайды.

Чек-лист

  • Әр тілге жеке мекенжай
  • Әр бетте және sitemap.xml ішінде өзара hreflang және x-default
  • title, description, әлеуметтік желілерге арналған превью, alt және белгілеу аударылған
  • Қаріптер ә, ғ, қ, ң, ө, ұ, ү, һ, і және ₸ таңбаларын көрсетеді
  • Сандардан кейінгі сөз тұлғалары - әр тілдің өз ережесімен
  • Ауыстырғыш сол бетке апарады
  • IP бойынша редирект жоқ
  • Бірде-бір тіл кейін қалмағанын автоматты тексеру

Тақырып бойынша қызметтер

Тақырып бойынша мақалалар

Байланыс

Тапсырма бар ма? Жазыңыз - талқылаймыз

Telegram-ға жазуWhatsApp-қа жазу

Негізін қалаушының өзі жауап береді.