Водичи

Како да додадете повеќе јазици во вашата апликација или веб-страница

За да додадете повеќе јазици во апликација, сите делови од текстот на интерфејсот префрлете ги во датотеки со преводи (по една за секој јазик), вчитајте ги со i18n библиотека и додајте избирач на јазик што ќе го запамети изборот. За јавните страници што сакате да ги најдат пребарувачите, дајте на секој јазик свој URL, како /fr/, и поврзете ги верзиите со hreflang ознаки. Потоа средете ги деловите што луѓето ги заборават: датуми, броеви и валути, подолг текст на некои јазици, писма здесно кон лево и содржината зачувана во вашата база на податоци.

Термини што ќе ги слушнете

  • Интернационализација (i18n): подготовка на кодот за поддршка на кој било јазик — без текст напишан директно во кодот, форматирање според локалот и флексибилни распореди. Бројот „18“ е бројот на букви помеѓу i и n.
  • Локализација (l10n): прилагодување на апликацијата за одреден јазик или пазар, главно преведување, понекогаш и валута, слики и правен текст.
  • Локал: јазик и, по избор, регион, како en-GB или pt-BR.

Интернационализацијата се прави еднаш, а додавањето на секој нов јазик потоа е главно работа на превод.

Опции и компромиси

ПристапКако работиДобар заКомпромис
i18n библиотека + датотеки со преводи (на пр. react-i18next, next-intl, vue-i18n)Текстот е во JSON датотеки по локал; компонентите ги бараат клучевитеПовеќето апликацииПочетно преуредување; преводите треба да се одржуваат
Систем за управување со преводи (на пр. Crowdin, Lokalise, Phrase)Хостиран уредник за преведувачи, синхронизиран со вашите датотекиМногу јазици, повеќе преведувачиПлатено; уште една алатка за поставување
Машински или AI превод при buildГенерирање нацрт-преводи преку API, потоа прегледБрзо добивање многу јазициКвалитетот треба да се провери; трошоци за API
Автоматски превод од прелистувач или виџетПрелистувачот на посетителот го преведува страницата во движењеНишто што го контролиратеНема контрола на квалитетот; преведените страници не се индексираат како ваши
Посебни веб-страници по јазикДуплицирана страница за секој пазарМногу различни пазариСè се одржува двапати

За повеќето апликации, стандардната i18n библиотека со датотеки со преводи е добра основа. Нацрт-преводи можете да направите со машински или AI превод, а потоа течни говорници да ја прегледаат содржината што корисниците ја гледаат најмногу.

Делови од повеќејазична апликација

Датотеки со преводи

Наместо <h1>Welcome back</h1>, кодот пишува t('dashboard.welcome'), а секој локал има датотека со текстот:

{
  "dashboard": {
    "welcome": "Добредојдовте повторно, {{name}}",
    "items_one": "{{count}} ставка",
    "items_other": "{{count}} ставки"
  }
}

За променливи користете placeholder-и, а не спојувајте фрагменти од реченици, бидејќи редоследот на зборовите се разликува по јазик. И користете ги правилата за множина на библиотеката: англискиот има две форми (1 ставка, 2 ставки), но некои јазици имаат три, четири или повеќе форми.

Форматирање на датуми, броеви и пари

Не форматирајте ги рачно. Вградениот API Intl во прелистувачот форматира за секој локал: 1,234.5 на англиски е 1.234,5 на германски; датумите се менуваат помеѓу формат со ден на прво место и месец на прво место; симболите за валута се поместуваат. Датумите чувајте ги во UTC, а парите како броеви со код на валута, и форматирајте само за приказ.

Распоред што се прилагодува

Преведениот текст често е подолг од англискиот, особено германскиот и финскиот. Избегнувајте копчиња со фиксна ширина и скратени ознаки, и тестирајте со најдолгиот јазик што го поддржувате.

Јазици што се пишуваат здесно кон лево

Арапскиот, хебрејскиот, персискиот и урдуто се пишуваат здесно кон лево. За тие локали поставете dir="rtl" на страницата и користете логички CSS својства (margin-inline-start наместо margin-left; во Tailwind ms-4 наместо ml-4), за распоредот сам да се огледа. Иконите што подразбираат насока, како стрелките, исто треба да се превртат.

Избирач на јазик и откривање

Покажете избирач на јазик на секоја страница, со името на секој јазик на самиот јазик („Deutsch“, „Français“, „العربية“), а не со знаменца — знаменцата претставуваат земји, не јазици. При првата посета откријте го претпочитаниот јазик на прелистувачот за да предложите верзија, но изборот на посетителот да има предност и да се запамети.

URL-а и SEO

За страниците што сакате да се најдат во резултатите од пребарување, секој јазик треба да има свој URL. Од септември 2026, насоките на Google за повеќејазични веб-страници се:

  • Посебни URL-а по јазик — поддиректориуми (example.com/fr/) се наједноставни; поддомени и домени за држава исто функционираат. URL параметри (?lang=fr) не се препорачуваат.
  • Не менувајте јазик само преку колаче или поставка на прелистувачот; crawler-от на Google можеби никогаш нема да ги види другите верзии.
  • Не пренасочувајте автоматски според јазикот; поврзете ги верзиите меѓусебно.
  • Користете hreflang за да му кажете на Google кои страници се преводи една на друга. Секоја верзија мора да се наведе себеси и сите други, инаку ознаките може да се игнорираат. Додајте x-default за резервната страница.
  • Google го открива јазикот на страницата од видливата содржина, а не од lang или hreflang — затоа преведете ја целата страница, не само менито.

Сепак, поставете <html lang="fr"> на секоја верзија: читачите на екран го користат за правилен изговор, а тоа е барање за достапност.

Екраните на апликацијата за најавени корисници не мора да се индексираат, па за нив доволно е јазикот да се чува во профилот на корисникот. За тоа како јавните страници да се crawl-аат воопшто, видете SEO за веб-страници направени со AI.

Содржина во базата на податоци

Текстот на интерфејсот е во датотеки; содржината како имиња на производи, блог-објави и категории е во базата на податоци. Две чести шеми:

  • Табела за преводи: product_translations (product_id, locale, name, description). Чисто е и се скалира на многу јазици.
  • JSON колона по поле: name: {"en": "...", "fr": "..."}. Поедноставно за неколку јазици.

Одлучете што се случува кога недостасува превод — обично се враќате на основниот јазик, наместо да прикажете празно место.

Е-пошта и известувања

Чувајте го јазикот на секој корисник и користете го и за е-пошта, известувања и PDF-ови. Лесно е да го преведете интерфејсот и да заборавите дека е-порката за добредојде сè уште пристигнува на англиски.

Упатства што функционираат

Додај интернационализација со react-i18next. Префрли го секој текст видлив за корисниците во locales/en.json со именувани клучеви, користи интерполација и правила за множина наместо спојување текст, и форматирај датуми, броеви и цени со Intl според тековниот локал. Не менувај ниту еден збор засега.

Додај француски и германски. Јавните маркетиншки страници добиваат префикси /fr/ и /de/ URL-а, англискиот е во коренот, hreflang врски на секоја страница (вклучително и самореференца и x-default), а html lang е поставен по страница. Додај избирач на јазик што го прикажува јазикот на самиот јазик. За страниците за најавени корисници, зачувај го јазикот во профилот на корисникот.

Додај арапски со поддршка за писмо здесно кон лево: постави dir="rtl" за арапски, замени ги левите/десните маргини и падинзи со логички својства, превртувај ги иконите со насока и провери дали обрасците и табелите сè уште се читаат правилно.

Чекор по чекор

  1. Изберете го првиот дополнителен јазик според реалната побарувачка — каде се вашите посетители или корисници.
  2. Интернационализирајте го кодот: префрлете ги текстовите во датотеки, додајте множини и Intl форматирање. Испратете го само на англиски и проверете дека ништо не се променило.
  3. Одлучете ја структурата на URL-ите за јавните страници и додајте hreflang.
  4. Преведете: направете нацрт со машински или AI превод, па прегледајте со течен говорник. Дајте на преведувачите контекст — зборот „Book“ е именка на еден екран и глагол на друг.
  5. Преведете ја содржината во базата и поставете резервни вредности.
  6. Локализирајте го остатокот: е-пошта, порачки за грешки, правни страници, слики со текст.
  7. Тестирајте секој јазик на ширина на телефон, а со писмо здесно кон лево ако е релевантно.
  8. Поставете процес за новите функции да се испраќаат со преводи, а не месеци подоцна.

Чести грешки

  • Спојување реченици ("You have " + n + " messages"), што се расипува на други јазици.
  • Текст напишан директно во компонентите, пораки за грешки и текст за валидација.
  • Рачно форматирање на датуми и цени.
  • Знаменца за јазици и автоматски пренасочувања што ги заглавуваат луѓето во погрешната верзија.
  • Еден URL за сите јазици на страниците што сакате да се индексираат.
  • Недостасувачки hreflang повратни врски, па Google ги игнорира ознаките.
  • Преведување на интерфејсот, но не и на содржината, или обратно.
  • Непрегледан машински превод на страниците за цени, правни услови и плаќање.

Контролна листа за повеќејазичност

  • Нема текст видлив за корисниците напишан директно во кодот; користени се правила за множина и placeholder-и
  • Датумите, броевите и валутите се форматирани со Intl
  • Избирач на јазик со имиња на самиот јазик на секоја страница; изборот се памети
  • Посебни URL-а по јазик за јавните страници; нема наметнати пренасочувања
  • hreflang на секоја верзија, вклучително самореференца и x-default
  • html lang (и dir="rtl" каде треба) поставени по страница
  • Содржината во базата е преведена, со разумни резервни вредности
  • Е-поштата и известувањата се испраќаат на јазикот на корисникот
  • Текстот за клиентите е прегледан од течен говорник

Повеќејазичност на Mythex

Во Mythex, јазиците ги додавате со барање во чатот — нема посебен панел за превод — па горенаведените упатства функционираат како што се напишани. Направете го чекорот за интернационализација прво и проверете го во Preview пред да додадете јазици; тоа е голема промена, а checkpoint во чатот ви дава точка за враќање ако нешто се расипе (чат и checkpoint-и). Ако сакате апликацијата автоматски да ја преведува содржината со AI или API за превод, тоа користи ваш API клуч, зачуван во поставките на проектот (променливи на околината и тајни); како да користите LLM API-ја ги објаснува трошоците. Објавете повторно кога новите јазици ќе бидат подготвени.

Прашања

Која е разликата помеѓу i18n и локализација?

Интернационализација (i18n) е подготовка на кодот да поддржува многу јазици: без текст напишан директно во кодот, датуми и броеви според локалот, и распореди што можат да поднесат подолги зборови и писма здесно кон лево. Локализација (l10n) е работата на прилагодување за еден јазик или пазар, главно преведување.

Дали можам едноставно да користам машински или AI превод за мојата апликација?

За прв нацрт, да. Современиот машински и AI превод е добар за текстот во интерфејсот. Секоја содржина што ја гледаат корисниците нека ја прегледа течен говорник, особено правниот текст, цените и маркетиншките пораки, бидејќи тонот и мали грешки таму се важни.

Дали секој јазик треба да има свој URL?

За јавните страници што сакате да се најдат во резултатите од пребарување, да. Google препорачува посебни URL-а за секој јазик, како /fr/ и /de/, наместо менување на јазикот преку колачиња или поставка на прелистувачот, бидејќи нејзиниот crawler можеби ќе ја види само една верзија.

Дали треба да ги пренасочувам посетителите според јазикот на прелистувачот?

Предлагајте, не наметнувајте. Google советува против автоматско пренасочување по јазик, бидејќи може да ги спречи луѓето и crawler-ите да стигнат до другите верзии. Прикажете мала порака со понуда за соодветниот јазик и видлив избирач на јазик на секоја страница.

Mythex · Pricing · Градете што било со AI · Шаблони за веб-страници и апликации · Mythex во споредба · Речник за градење апликации со AI · Бесплатни алатки за градење апликации со AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)