Kā pievienot vairākas valodas savai lietotnei vai vietnei
Lai lietotnei pievienotu vairākas valodas, pārvietojiet visu lietotājam redzamo tekstu tulkojumu failos (pa vienam katrai valodai), ielādējiet tos ar i18n bibliotēku un pievienojiet valodas pārslēdzēju, kas atceras izvēli. Publiskām lapām, kurām jābūt meklēšanas rezultātos, katrai valodai dodiet savu URL, piemēram, /fr/, un versijas savstarpēji saistiet ar hreflang tagiem. Pēc tam nepaņemiet vērā to, ko cilvēki bieži aizmirst: datumus, skaitļus un valūtas, garāku tekstu dažās valodās, valodas no labās uz kreiso pusi un saturu datubāzē.
Termini, ko dzirdēsiet
- Internacionalizācija (i18n): koda sagatavošana darbam ar jebkuru valodu — bez iekodētiem tekstiem, lokalizēts formatējums, elastīgi izkārtojumi. Cipars "18" apzīmē burtu skaitu starp i un n.
- Lokalizācija (l10n): lietotnes pielāgošana konkrētai valodai vai tirgum, galvenokārt tulkošana, dažkārt arī valūta, attēli un juridiskais teksts.
- Locale: valoda un, pēc izvēles, reģions, piemēram,
en-GBvaipt-BR.
Veiciet i18n vienreiz, un katras jaunas valodas pievienošana kļūst galvenokārt par tulkošanas darbu.
Iespējas un kompromisi
| Pieeja | Kā darbojas | Piemērota | Kompromiss |
|---|---|---|---|
| i18n bibliotēka + tulkojumu faili (piem., react-i18next, next-intl, vue-i18n) | Teksts atrodas JSON failos katrai lokalei; komponentes meklē atslēgas | Vairumam lietotņu | Sākotnējā pārstrukturēšana; tulkojumi jāuztur |
| Tulkojumu pārvaldības sistēma (piem., Crowdin, Lokalise, Phrase) | Mākoņa redaktors tulkotājiem, sinhronizēts ar jūsu failiem | Daudzas valodas, vairāki tulkotāji | Maksas; vēl viens rīks |
| Mašīntulkošana vai MI tulkošana būvēšanas laikā | Ar API ģenerē tulkojumu melnrakstus, pēc tam pārskata | Ātri daudzas valodas | Jāpārbauda kvalitāte; API izmaksas |
| Pārlūka vai logrīka automātiska tulkošana | Apmeklētāja pārlūks tulko lapu uzreiz | Nekas, ko kontrolējat | Nav kvalitātes kontroles; tulkotās lapas netiek indeksētas kā jūsu |
| Atsevišķas vietnes katrai valodai | Dublēta vietne katram tirgum | Ļoti atšķirīgi tirgi | Viss jāuztur divreiz |
Vairumam lietotņu pareizā bāze ir standarta i18n bibliotēka ar tulkojumu failiem. Melnrakstus var tulkot ar mašīntulkošanu vai MI, bet pēc tam dzimtās valodas runātājs lai pārskata to, ko klienti redz visbiežāk.
Daudzvalodu lietotnes daļas
Tulkojumu faili
Tā vietā, lai rakstītu <h1>Welcome back</h1>, kods raksta t('dashboard.welcome'), un katrai lokalei ir fails ar tekstu:
{
"dashboard": {
"welcome": "Laipni lūgts atpakaļ, {{name}}",
"items_one": "{{count}} vienība",
"items_other": "{{count}} vienības"
}
}
Mainīgajiem izmantojiet vietturus, nevis salieciet teikumu fragmentus kopā — vārdu secība dažādās valodās atšķiras. Un izmantojiet bibliotēkas daudzskaitļa likumus: angļu valodā ir divas formas (1 item, 2 items), bet dažās valodās ir trīs, četras vai vairāk formas.
Datumu, skaitļu un naudas formatēšana
Neformatējiet tos ar roku. Pārlūka iebūvētais Intl API formatē jebkurai lokalei: 1,234.5 angļu valodā kļūst par 1 234,5 latviešu valodā; datumu secība mainās; valūtas simbols pārvietojas. Glabājiet datumus UTC, naudu — kā skaitļus ar valūtas kodu, un formatējiet tikai attēlošanai.
Izkārtojums, kas stiepjas
Tulkots teksts bieži ir garāks nekā angļu valodā — īpaši vācu un somu valodā. Izvairieties no fiksēta platuma pogām un nogrieztām etiķetēm, un testējiet ar garāko valodu.
Valodas no labās uz kreiso pusi
Arābu, ebreju, persiešu un urdu valodas lasa no labās uz kreiso pusi. Šīm lokalēm lapai iestatiet dir="rtl" un izmantojiet CSS loģiskās īpašības (margin-inline-start margin-left vietā; Tailwind ms-4 ml-4 vietā), lai izkārtojums pats atspoguļotos. Bultiņas un citas ikonas, kas norāda virzienu, arī jāapgriež.
Valodas pārslēdzējs un noteikšana
Rādiet pārslēdzēju katrā lapā ar katras valodas pašu nosaukumu ("Deutsch", "Français", "العربية"), nevis karodziņiem — karodziņi apzīmē valstis, nevis valodas. Pirmajā apmeklējumā var noteikt pārlūka vēlamo valodu, lai ieteiktu versiju, bet apmeklētāja skaidra izvēle ir svarīgāka un tiek saglabāta.
URL un SEO
Lapām, kurām jābūt meklēšanas rezultātos, katrai valodai vajag savu URL. No 2026. gada septembra Google vadlīnijas daudzvalodu vietnēm ir šādas:
- Atsevišķi URL katrai valodai — apakšdirektorijas (
example.com/fr/) ir vienkāršākais variants; arī apakšdomēni un valsts domēni darbojas. URL parametri (?lang=fr) netiek ieteikti. - Nemainiet valodu tikai ar sīkdatni vai pārlūka iestatījumu; Google robots var nekad neredzēt citas versijas.
- Neveiciet automātiskas pārsūtīšanas pēc valodas; savienojiet versijas ar saitēm.
- Izmantojiet hreflang, lai Google norādītu, kuras lapas ir viena otras tulkojumi. Katrā versijā jāuzskaita sevi un visas pārējās, citādi anotācijas var tikt ignorētas. Rezerves lapai pievienojiet
x-default. - Google nosaka lapas valodu pēc redzamā satura, nevis pēc
langvai hreflang — tāpēc tulkojiet visu lapu, ne tikai izvēlni.
Tomēr katrai versijai joprojām iestatiet <html lang="lv">: ekrāna lasītāji pēc tā izvēlas pareizo izrunu, un tā ir pieejamības prasība.
Lietotnes ekrāniem pēc pieteikšanās indeksēšana nav vajadzīga, tāpēc šiem ekrāniem pietiek valodu saglabāt lietotāja profilā. Lai publiskās lapas tiktu pārmeklētas, skatiet SEO MI veidotām vietnēm.
Saturs datubāzē
Saskarnes teksts atrodas failos; saturs, piemēram, produktu nosaukumi, blogu ieraksti un kategorijas, atrodas datubāzē. Divi bieži izmantoti modeļi:
- Tulkojumu tabula:
product_translations (product_id, locale, name, description). Tīrs un mērogojams daudzām valodām. - JSON kolonna katram laukam:
name: {"en": "...", "fr": "..."}. Vienkāršāk, ja valodu ir maz.
Izlemiet, kas notiek, ja tulkojuma nav — parasti atgriezieties pie noklusējuma valodas, nevis rādiet tukšu vietu.
E-pasti un paziņojumi
Saglabājiet katra lietotāja valodu un izmantojiet to arī e-pastiem, paziņojumiem un PDF failiem. Ir viegli tulkot lietotni un aizmirst, ka sveiciena e-pasts joprojām nāk angļu valodā.
Uzvednes, kas darbojas
Pievienojiet internacionalizāciju ar react-i18next. Pārvietojiet katru lietotājam redzamo tekstu failā locales/en.json ar nosaukumvietu atslēgām, izmantojiet interpolāciju un daudzskaitļa likumus, nevis teksta savienošanu, un formatējiet datumus, skaitļus un cenas ar Intl, izmantojot pašreizējo lokali. Vēl nemainiet nevienu formulējumu.
Pievienojiet franču un vācu valodu. Publiskajām mārketinga lapām jābūt URL prefiksiem /fr/ un /de/, angļu valodai saknē, hreflang saitēm katrā lapā (ieskaitot pašatsauci un x-default), un html lang iestatītam katrai lapai. Pievienojiet valodas pārslēdzēju, kas rāda katras valodas pašu nosaukumu. Pieteikšanās lapām saglabājiet valodu lietotāja profilā.
Pievienojiet arābu valodu ar atbalstu no labās uz kreiso pusi: iestatiet dir="rtl" arābu valodai, aizstājiet kreisās un labās puses atkāpes ar loģiskām īpašībām, apgriezti virziena ikonas un pārbaudiet, vai veidlapas un tabulas joprojām ir pareizi lasāmas.
Soli pa solim
- Izvēlieties pirmo papildu valodu pēc reāla pieprasījuma — kur ir jūsu apmeklētāji vai klienti.
- Padariet kodu internacionalizētu: pārvietojiet tekstus failos, pievienojiet daudzskaitļus un
Intlformatējumu. Izlaidiet to tikai angļu valodā un pārbaudiet, ka nekas nemainījās. - Izlemiet URL struktūru publiskajām lapām un pievienojiet hreflang.
- Tulkojiet: sagatavojiet melnrakstu ar mašīntulkošanu vai MI, pēc tam pārskatiet to ar dzimtās valodas runātāju. Dodiet tulkotājiem kontekstu — vārds "Book" vienā ekrānā var būt lietvārds, citā — darbības vārds.
- Tulkojiet datubāzes saturu un iestatiet rezerves variantus.
- Lokalizējiet pārējo: e-pastus, kļūdu ziņojumus, juridiskās lapas, attēlus ar tekstu.
- Pārbaudiet katru valodu tālruņa platumā un, ja vajadzīgs, ar valodu no labās uz kreiso pusi.
- Iestatiet procesu, lai jaunas funkcijas tiktu piegādātas ar tulkojumiem, nevis mēnešiem vēlāk.
Biežākās kļūdas
- Teikumu savienošana (
"You have " + n + " messages"), kas citās valodās nedarbojas. - Iekodēts teksts komponentēs, kļūdu ziņojumos un validācijas tekstos.
- Datumu un cenu formatēšana ar roku.
- Karodziņi valodām un automātiskās pārsūtīšanas, kas notur cilvēkus nepareizā versijā.
- Viens URL visām valodām lapās, kuras vēlaties indeksēt.
- Trūkstošas hreflang atpakaļsaites, tāpēc Google ignorē anotācijas.
- Tiek tulkots saskarne, bet ne saturs, vai otrādi.
- Nepārskatīta mašīntulkošana cenu, juridiskajās un norēķinu lapās.
Daudzvalodu kontrolsaraksts
- Nav iekodētu lietotājam redzamu tekstu; izmantoti daudzskaitļa likumi un vietturi
- Datumi, skaitļi un valūtas formatēti ar
Intl - Valodas pārslēdzējs ar vietējiem nosaukumiem katrā lapā; izvēle tiek saglabāta
- Publiskām lapām atsevišķi URL katrai valodai; nav piespiedu pārsūtījumu
- hreflang katrā versijā, ieskaitot pašatsauci un x-default
-
html lang(undir="rtl", ja vajadzīgs) iestatīts katrai lapai - Datubāzes saturs tulkots ar saprātīgiem rezerves variantiem
- E-pasti un paziņojumi tiek sūtīti lietotāja valodā
- Klientiem redzamo tekstu ir pārskatījis dzimtās valodas runātājs
Daudzvalodu lietotne Mythex
Mythex valodas pievieno, uzdodot jautājumu čatā — atsevišķa tulkošanas paneļa nav — tāpēc iepriekšējās uzvednes darbojas tā, kā ir uzrakstītas. Pirms valodu pievienošanas veiciet internacionalizācijas soli un pārbaudiet to priekšskatījumā; tā ir liela pārstrukturēšana, un čata kontrolpunkts ļauj atgriezties, ja kaut kas salūst (čats un kontrolpunkti). Ja vēlaties, lai lietotne automātiski tulko saturu ar MI vai tulkošanas API, tiek izmantota jūsu pašu API atslēga, kas glabājas projekta iestatījumos (vides mainīgie un noslēpumi); kā izmantot LLM API izskaidro izmaksas. Kad jaunās valodas ir gatavas, publicējiet vēlreiz.
Jautājumi
Kāda ir atšķirība starp i18n un lokalizāciju?
Internacionalizācija (i18n) ir koda sagatavošana, lai tas varētu atbalstīt daudzas valodas: nav iekodētu tekstu, lokalizēts datumu un skaitļu formatējums, izkārtojumi, kas tiek galā ar garākiem vārdiem un valodām no labās uz kreiso pusi. Lokalizācija (l10n) ir darbs, lai pielāgotu lietotni konkrētai valodai vai tirgum, galvenokārt tulkošana.
Vai varu vienkārši izmantot mašīntulkošanu vai MI, lai tulkotu lietotni?
Melnrakstam — jā. Mūsdienu mašīntulkošana un MI tulkošana labi tiek galā ar saskarnes tekstu. Pārbaudiet visu, ko redz klienti, ar dzimtās valodas runātāju, īpaši juridiskos tekstus, cenas un mārketinga saturu, jo tur toni un sīkas kļūdas ir svarīgas.
Vai katrai valodai vajadzētu būt savam URL?
Publiskām lapām, kurām jābūt meklēšanas rezultātos — jā. Google iesaka atsevišķus URL katrai valodai, piemēram, /fr/ un /de/, nevis valodas maiņu ar sīkdatni vai pārlūka iestatījumu, jo tā robots citādi var redzēt tikai vienu versiju.
Vai apmeklētājus vajadzētu pārsūtīt pēc pārlūka valodas?
Ieteikt, nevis piespiest. Google neiesaka automātiskas valodas pārsūtīšanas, jo tās var neļaut cilvēkiem un robotiem nokļūt līdz citām versijām. Parādiet nelielu uzaicinājumu ar atbilstošo valodu un redzamu pārslēdzēju katrā lapā.