Frankfurto studija daugiakalbiams skaitmeniniams projektams +49 69 95209894 [email protected] Pirm–Penk 9–17 val. Klientų sritis →
LietuviųLT

Valiuta

Užsienio valiutos sumos yra neįpareigojančios orientacinės vertės; atsiskaitymas atliekamas eurais.

2026-07-30 · Redakcija Baduno · 22 Min. skaitymo laikas · Blogas ir žinios

Daugiakalbės progresyviosios žiniatinklio programėlės: greitos, patikimos, vietinės

Daugiakalbė progresyvioji žiniatinklio programa (PWA) sujungia vietinių programų privalumus su žiniatinklio pasiekiamumu – ir tai 24 ES kalbomis. Sužinokite, kaip naudojant aptarnavimo darbuotojus, išmanųjį talpyklos kaupimą ir KI vertimus sukurti greitą, patikimą ir lokaliai pritaikytą vartotojo patirtį, nereikia kurti atskiros programėlės kiekvienai kalbai.

Išmanusis telefonas rodo neprisijungus veikiančią žiniatinklio programą su daugiakalbe sąsaja

Daugiakalbės progresyviosios žiniatinklio programos pagrindai

Daugiakalbė progresyvioji žiniatinklio programa (PWA) sujungia vietinių programų privalumus – tokias kaip darbas neprisijungus ir greitas įkėlimas – su saityno pasiekiamumu. Europos rinkoms, kuriose yra 24 oficialios kalbos, tai reiškia: jūs pateikiate savo turinį kiekviena tiksline kalba, nereikalaujant, kad naudotojai įdiegtų vietinę programą. Techninį pagrindą sudaro serverio pusės kalbos maršrutizavimas, kuris nustato naudotojo pageidaujamą kalbą – pavyzdžiui, per Accept-Language antraštę arba kalbos pasirinkimą naršyklėje. Tada pateikiama atitinkama kalbos versija, pageidautina naudojant kalbai būdingus subkatalogus (pvz., /de/, /fr/) arba subdomenus (de.example.com).

PWA struktūrai rekomenduojama naudoti vieno puslapio programos (SPA) sistemą, tokią kaip React, Vue ar Svelte, papildytą i18n moduliu (pvz., i18next ar vue-i18n). Šis modulis įkelia vertimus kaip JSON failus ir teikia funkcijas daugiskaitos taisyklėms, datos ir skaičių formatams. Kadangi kalbų failai gali greitai keistis, jų nereikėtų kietai įkoduoti į programos kodą, o įkelti dinamiškai. Praktikoje pasiteisino kiekvienos kalbos vertimus talpinti kaip atskirus statinius failus ir teikti juos per turinio pristatymo tinklą (CDN) su trumpa talpyklos trukme.

Svarbus naudotojo patirties aspektas yra kalbos perjungimas: pasiūlykite gerai matomą, nuosekliai išdėstytą mygtuką, kuris be puslapio perkrovimo pakeičia kalbą. Visi vartotojo sąsajos tekstai, klaidų pranešimai ir dinaminis turinys turi būti nedelsiant atnaujinti. Venkite formų duomenų ar naršymo būsenų praradimo – dažna praktikos klaida. Išbandykite elgseną įvairiose naršyklėse ir įrenginiuose, nes kalbos keitimo funkcijų diegimas gali skirtis.

Teisiniu požiūriu, daugiakalbėse PWA ypač svarbi privatumo politika: ji turi būti prieinama kiekviena siūloma kalba. Pasitarkite su teisės patarėju, ar mašininis vertimas yra pakankamas, ar reikia teisinės peržiūros. Taip pat slapukų ir stebėjimo sutikimas turi būti gaunamas pagal kalbą. Todėl nuo pat pradžių planuokite įtraukti visus teisinius tekstus į vertimo darbo eigą.

Serviso darbuotojas ir talpyklos kaupimas kalbų variantams

Service Worker yra kiekvienos PWA širdis – jis leidžia pasiekti turinį neprisijungus ir užtikrina greitą įkėlimą. Daugiakalbėse PWA turite apibrėžti atskiras talpyklos strategijas kiekvienai kalbos versijai. Dažnas metodas – kalbos failus (pvz., /de/translations.json) talpinti atskirai nuo likusio programos kodo. Service Worker turėtų saugoti pagrindinę vartotojo sąsają (navigacijos juostą, piktogramas) nepriklausomai nuo kalbos, o kalbai specifinius išteklius krauti dinamiškai.

Praktikoje pasiteisino tokia strategija: Programos apvalkalui taikykite „Cache-First“ modelį, kai pirmiausia aptarnaujama iš talpyklos, o po to atnaujinama fone. Vertimų failams naudokite „Network-First“ su trumpu talpyklos laiku (pvz., 60 sekundžių). Taip užtikrinsite, kad naudotojai visada gaus naujausius vertimus – ypač svarbu, jei tekstus dažnai koreguojate. Venkite pernelyg agresyvių talpyklos taisyklių, kitaip kalbos pataisymai taps matomi tik po kelių valandų ar dienų.

Kitas aspektas – pasenusių talpyklų valymas: kai išleidžiate naują kalbos versiją, seni kalbos failai turi būti pašalinti iš Service Worker talpyklos. Todėl įdiegkite versijavimą talpyklos pavadinimuose, pvz., „translations-v2-de“. Aktyvavus naują Service Worker, galite pašalinti visas senesnės versijos talpyklas. Priešingu atveju naudotojai gali pasiekti pasenusius vertimus, nors puslapis buvo atnaujintas.

Taip pat atsižvelkite į skirtingus reikalavimus darbui neprisijungus: naudotojai, įdiegę jūsų PWA vokiškai kalbančiame regione, gali tikėtis, kad visas vokiškas turinys bus pasiekiamas neprisijungus. Todėl Service Worker apibrėžkite, kurios kalbos versijos bus iš anksto talpinamos – paprastai naudotojo pasirinkta kalba ir galbūt atsarginė anglų kalba. Kruopščiai išbandykite veikimą neprisijungus kontroliuojamoje aplinkoje, nes naršyklės simuliacijos ne visada atspindi realų naudotojų elgesį.

Nešiojamojo kompiuterio ekranas su kodu, skirtu Service Worker, kad veiktų neprisijungus

Internacionalizavimas naudojant žiniatinklio technologijas

PWA internacionalizavimas (i18n) apima daug daugiau nei vien tekstų vertimą. Turite pritaikyti datų formatus, skaičius, valiutas ir adresus prie vietinių ypatumų. Šiuolaikinės žiniatinklio technologijos tam pateikia standartizuotas API: JavaScript Intl objektai (pvz., Intl.DateTimeFormat, Intl.NumberFormat) automatiškai formatuoja duomenis ir skaičius pagal naršyklės kalbą. Naudokite šias API vietoj savo formatavimo procedūrų – tai sumažina klaidų skaičių ir užtikrina nuoseklumą visose kalbose.

Įgyvendinant vieno puslapio programą, rekomenduojama integruoti i18n sistemą, kuri įkelia vertimų failus ir naudoja Intl API. Pavyzdžiui, naudodami i18next galite vokiečių kalbai (de) pateikti failą de/translation.json, kuriame yra visi rakto-reikšmės poros. Komponente iškviečiate t('key'), o sistema grąžina išverstą reikšmę – papildomą daugiskaitos taisyklėmis (viena knyga, dvi knygos). Išbandykite kiekvieną kalbą atskirai dėl teisingos daugiskaitos formavimo; taisyklės labai skiriasi (pvz., arabų, rusų, lenkų kalbose).

Kitas aspektas – teksto kryptis: Nors dauguma Europos kalbų rašomos iš kairės į dešinę, yra išimčių – pavyzdžiui, hebrajų ar arabų kalbos, į kurias galbūt reikia atsižvelgti jūsų tikslinėje rinkoje. Net jei jos nepriklauso 24 ES kalboms, vertėtų sukurti PWA, palaikančią dvikryptį tekstą (BiDi). Tai reiškia: CSS savybės, pvz., direction: rtl ir unicode-bidi naudojimas stiliaus lapuose. Suplanuokite tai iš anksto, kad vėliau išvengtumėte migracijos darbų.

Galiausiai – pastaba apie SEO: Daugiakalbės PWA turi teisingai nustatyti hreflang žymas HTML antraštėje, kad paieškos varikliai matytų kalbos versijas. Šios žymos generuojamos serverio pusėje dinamiškai, atsižvelgiant į šiuo metu pateikiamą kalbą. Pasikonsultuokite su SEO specialistu, nes neteisingai nustatyti hreflang gali lemti pozicijų praradimą. Taip pat atkreipkite dėmesį, kad pačiai PWA reikia atskiros manifest.json kiekvienai kalbai su aprašymu ir paleidimo URL – tai pagerina matomumą programų parduotuvėje ir diegiant.

Daugiakalbis turinio valdymas PWA

Daugiakalbės progresyviosios žiniatinklio programos (PWA) turinio valdymui reikalinga apgalvota struktūra, leidžianti tiek redaktoriams, tiek pačiai programai efektyviai tvarkyti turinį. Pasiteisino turinio ir pateikimo atskyrimas: tekstus, vaizdus ir metaduomenis saugokite kalbos atžvilgiu neutraliai, o kalbos variantus nurodykite unikaliais raktais arba ID. Ypač tinka headless CMS, turintis REST arba GraphQL sąsają, nes tai atsieją turinio tiekimą PWA ir leidžia taikyti kaupimo atmintyje strategijas API lygmeniu.

Konkrečiai, kiekvienai kalbai sukurkite atskirą turinio konteinerį (pvz., katalogą arba duomenų bazės lentelę), kuriame būtų visi išversti laukai. Venkite vertimų tiesiogiai šaltinio kode – naudokite lokalizacijos failus (JSON, YAML) arba vertimų valdymo sistemą (TMS). Nepamirškite įtraukti ir vartotojo sąsajos tekstų bei klaidų pranešimų, nes jie dažnai pamirštami. Vaizdams ir medijai rekomenduojamas nuo kalbos nepriklausomas kelias, o alt atributas ir antraštė tvarkomi pagal kalbą.

Svarbus aspektas – atnaujinimų darbo eiga: apibrėžkite, kaip naujas turinys ar pakeitimai pradinėje kalboje (pvz., anglų) verčiami į tikslines kalbas ir išleidžiami. Naudokite webhooks, kad praneštumėte PWA apie turinio pakeitimus, kad aptarnavimo darbuotojas galėtų atnaujinti naujus kalbos išteklius talpykloje. Taip pat numatykite atsarginį mechanizmą: jei turinio norima kalba nėra, programa turėtų naudoti numatytąją kalbą – ir tai aiškiai parodyti vartotojui, kad išvengtumėte nusivylimo.

Praktinė rekomendacija: turėkite centralizuotą kalbų saugyklą, kurioje versijuojami visi lokalizacijos failai. Naudokite nuolatinę integraciją, kad kiekvieno versijos kūrimo metu būtų generuojami pagal kalbą pritaikyti ištekliai. Reguliariai tikrinkite turinio darbo eigą naudodami paruošiamąją sistemą prieš išleisdami pakeitimus. Atminkite, kad teisiniai aspektai (pvz., taisyklės nacionaline kalba) reikalauja atskiro teisininko patikrinimo.

SEO daugiakalbėms PWA: hreflang ir URL struktūros

Paieškos sistemos turi aiškiai atpažinti, kuri jūsų PWA kalbos versija yra aktuali kuriam vartotojui. Tai pasiekiama švaria URL struktūra ir hreflang atributo naudojimu. Pasiteisino trys URL modeliai: pagal subdomeną (de.example.com), pagal kelią (example.com/de/) arba su šalies kodo aukščiausio lygio domenu (example.de). PWA dažnai praktiškiausias yra pagal kelią paremtas variantas, nes jis supaprastina aptarnavimo darbuotojo priežiūrą ir leidžia pagal kalbą apibrėžti talpyklos taisykles.

Hreflang žymas įterpkite HTML antraštėje (link elementai) arba HTTP atsake. Kiekvienas puslapis turi nurodyti visas kalbų versijas, įskaitant dabartinę (savęs nuoroda). Numatytajam puslapiui (pvz., kai kalbos priskyrimas neįmanomas) naudokite x-default. Įsitikinkite, kad hreflang yra ir svetainės žemėlapyje. Dažna klaida – nenuoseklios nuorodos: kiekviena kalbos versija turi būti teisingai susieta abiem kryptimis, kitaip „Google“ gali jų nepaisyti.

PWA iššūkis – aptarnavimo darbuotojas ir talpykla turi atskirti kalbų versijas. Konfigūruokite talpyklos raktą taip, kad kalba būtų įtraukta kaip URL dalis arba per užklausos antraštę (pvz., Accept-Language). Venkite dinaminio kalbos perjungimo per JavaScript nekeičiant URL, nes paieškos sistemos dažnai neindeksuoja tokio turinio. Vietoj to naudokite nuorodą su kalbos parametru, kuri nukreipia į atitinkamą URL.

Konkrečios priemonės: patikrinkite dabartinę URL struktūrą, ar ji nuosekli, ir užtikrinkite, kad visi kalbų puslapiai būtų pasiekiami per vidines nuorodas. Naudokite „Google Search Console“ įrankį daugiakalbiams puslapiams, kad nustatytumėte hreflang klaidas. Įgyvendinkite atsarginę logiką: jei vartotojas prašo neegzistuojančios kalbos versijos, nukreipkite jį į x-default puslapį. Leiskite savo SEO strategiją patikrinti IT teisės advokatui, nes gali būti nacionalinių reikalavimų dėl kalbų versijų žymėjimo.

Našumo optimizavimas naudojant kelias kalbas

Daugiakalbės PWA našumas pirmiausia nukenčia dėl duomenų kiekio, kurį reikia įkelti kiekvienai kalbos versijai. Todėl optimizuokite įkėlimo laiką taikydami kalbai būdingą optimizavimą ir protingą talpyklos naudojimą. Pagrindinis svertas yra kalbos išteklių sumažinimas: vertimai turėtų būti suspausti (pvz., Gzip/Brotli) ir suskirstyti į mažus failus – pavyzdžiui, pagal modulius (pagrindinis puslapis, produkto puslapis ir t. t.), kad būtų įkeliami tik tuo metu reikalingi ištekliai.

„Service Worker“ gali valdyti atskiras talpyklos strategijas kiekvienai kalbos variantei. Statiniams kalbos failams naudokite „Cache-First“ principą: darbuotojas įkelia kalbos versiją pirmos užklausos metu ir išsaugo ją nuolat. Dinaminiam turiniui (pvz., vartotojo sąsajos eilutės iš API) rekomenduojama „Network-First“ su atsarginiu talpyklos naudojimu. Pasirūpinkite, kad talpyklos dydis būtų ribojamas – ištrinkite senas kalbos versijas, jei jos nebenaudojamos, kad sutaupytumėte vietos.

Kitas našumo veiksnys – šriftų ir medijos įkėlimas. Įtraukite tik tuos simbolių rinkinius, kurių reikia atitinkamai kalbai (pvz., lotyniškus, kirilicos ar azijietiškus glifus). Naudokite „preload“ atributą kritiniams ištekliams ir „defer/async“ neblokuojantiems scenarijams. Vaizdai turėtų būti pateikiami kalbai būdingomis versijomis (pvz., su įterptu tekstu), bet, jei įmanoma, naudokite CSS perdangas su išverstais tekstais – tai sutaupo įkėlimo apimtį.

Praktinės rekomendacijos: naudokite „Lighthouse“ auditą, kad išmatuotumėte savo PWA našumą kiekvienai kalbai. Konfigūruokite „Lazy-Loading“ techniką vėlesniam turiniui, kad būtų įkeliami tik tai kalbai aktualūs duomenys. Stebėkite talpyklos pataikymo rodiklius kiekvienai kalbos variantei ir prireikus optimizuokite talpyklos taisykles. Atminkite, kad našumo pagerinimus reikia nuolat tikrinti; teisininkas gali padėti dokumentuojant optimizavimo procesus, jei tai aktualu atitikties klausimams.

Wi-Fi simbolis prieš mėlyną gaublį reiškia pasaulinį ryšį

Offline funkcionalumas kiekvienai kalbai

Progresyviosios žiniatinklio programos (PWA) veikimas neprisijungus yra vienas didžiausių jos privalumų. Daugiakalbėje PWA visos kalbos versijos turi būti patikimai pasiekiamos neprisijungus. „Service Worker“ čia atlieka pagrindinį vaidmenį: jis turi palaikyti atskiras talpyklos strategijas kiekvienai kalbai. Praktiškai tai reiškia, kad kiekvienam kalbos URL prefiksui (pvz., /de/, /fr/) turite sukurti atskiras talpyklos sritis. Taip užtikrinsite, kad vartotojas, kuris anksčiau naudojo programą vokiečių kalba, ir neprisijungęs matys vokišką turinį, o prancūzų vartotojas ras savo lokalizuotą versiją.

Patikrinta praktika – naudoti „Cache-First“ metodą statiniams ištekliams, tokiems kaip CSS, JavaScript ir vaizdai, o dinaminiam turiniui (pvz., tekstui ar produktų duomenims) – „Network-First“ su atsarginiu talpyklos naudojimu. Kalbos aplinkoje „Service Worker“ turėtų būti sukonfigūruotas taip, kad pirmą kartą apsilankant kalbos versijoje būtų tarpinėje atmintyje saugomi atitinkami ištekliai. Pasirūpinkite, kad ir pats „Service Worker“ failas – jei jame yra nuo kalbos priklausančios logikos – būtų versijuojamas pagal kalbą. Arba išskirkite kalbos logiką ir iškvieškite ją dinamiškai iš talpyklos.

Konkrečiai: naudokite „Cache API“ su pavadintomis talpyklomis, pvz., „de-static-v1“ ir „fr-static-v1“. „Service Worker“ diegimo įvykio metu galite iš anksto įkelti pagrindinius puslapius kalbai, nustatytai pirmojo apsilankymo metu. Darbui neprisijungus turėtumėte apibrėžti atsarginį puslapį, rodantį paskutinę naudotą kalbos versiją. Šiame puslapyje turėtų būti visi kalbai būdingi vartotojo sąsajos elementai, veikiantys ir be tinklo. Svarbus aspektas – atminties valdymas: kuo daugiau kalbų, tuo daugiau duomenų talpinama. Todėl reguliariai išvalykite senas talpyklas ir apribokite saugomų kalbos versijų skaičių iki faktiškai naudojamų.

Rekomendacijos veiksmams: įdiekite kalbos suvokimo talpyklos strategiją su atskiromis talpyklomis kiekvienai kalbai. Sistemingai tikrinkite veikimą neprisijungus kiekvienai kalbai, išjungdami tinklą ir paleisdami programą skirtingomis kalbų aplinkomis. Stebėkite talpyklos dydį ir prireikus koreguokite strategiją. Dokumentuokite talpyklos struktūrą, kad komanda, plėsdama naujas kalbas, galėtų greitai dirbti.

Kalbos perjungimas ir UX be perkrovimo

Kalbos keitimas daugiakalbėje PWA turėtų vykti sklandžiai ir be pilno puslapio perkrovimo, kad vartotojo patirtis būtų vientisa. Čia pagrindinis sprendimas yra kliento pusės kalbos perjungimas, pagrįstas JavaScript ir vietiniais ištekliais. Dabartinė kalba saugoma localStorage arba slapuke ir nuskaitoma kiekvieno apsilankymo metu. Tikrieji tekstai ir UI elementai dinamiškai įkeliami iš kalbai skirtų JSON failų, kurie jau yra Service Worker talpykloje. Taip programa išlieka jautri, net ir kartojant kalbų perjungimus.

URL struktūra atlieka svarbų vaidmenį UX. Naudokite kalbai skirtus kelius, pvz., /lt/pradžia arba /fr/accueil. Perjungiant kalbą, programa turėtų pereiti į atitinkamą URL be pilno turinio perkrovimo iš serverio. Tai pasiekiama kliento pusėje atvaizduojant maršrutus ir keičiant tik lokalizuotus tekstinius blokus. Užtikrinkite, kad naršyklės mygtukas „Atgal“ veiktų teisingai – kiekvienas kalbos perjungimas turėtų būti laikomas atskiru istorijos įrašu. Tam naudokite History API (pushState/replaceState).

Praktinis pavyzdys: vartotojas skaito straipsnį vokiškai ir perjungia į prancūzų kalbą. PWA įkelia prancūzų kalbos failą (pvz., fr.json) iš talpyklos, pakeičia visus teksto mazgus su data-i18n atributais, atnaujina URL į /fr/straipsnio-id ir išsaugo kalbos nuostatą. Puslapio nuorodos, pvz., meniu ar trupiniai, taip pat atvaizduojami iš naujo. Venkite matomų įkėlimo laikų – naudokite asinchroniškumą ir, jei duomenų nėra talpykloje, rodykite švelnų įkėlimo indikatorių.

Rekomendacijos: įdiekite centrinę kalbos perjungimo logiką, kuri atnaujina ir URL, ir turinį. Išsaugokite kalbos nuostatą kliento pusėje ir atsižvelkite į ją kito apsilankymo metu. Išbandykite kalbos perjungimą skirtinguose įrenginiuose ir tinklo greičiuose. Optimizuokite JSON kalbos failus: laikykite juos mažus, suspaustus ir agresyviai talpykliniuokite Service Worker. Venkite pilno puslapio perkrovimo – PWA turėtų elgtis kaip vietinė programa.

Daugiakalbiai stūmimo pranešimai

Stūmimo pranešimai yra galinga priemonė vartotojų įtraukimui – daugiakalbėje PWA jie turi pasiekti vartotoją tinkama kalba. Techninis pagrindas yra naršyklės stūmimo paslauga, bendradarbiaujanti su Service Worker. Kiekvienai kalbai reikia lokalizuoti pranešimų tekstus, pavadinimus ir galimus veiksmus. Siunčiant stūmimo pranešimą, serveris turi žinoti vartotojo kalbos nuostatą, kuri arba perduodama prenumeruojant, arba išvedama iš vartotojo profilio.

Kalbos nuostatą reikia perduoti stūmimo prenumeratos metu. Serveryje kiekvienam galutiniam taškui saugokite kalbą (pvz., kaip HTTP antraštę arba užkrovoje). Kai inicijuojate stūmimo pranešimą, pasirinkite lokalizuotą šabloną. Naudokite sistemą su vietos žymekliais, pvz., „Nauja žinutė iš {{sender}}“. Service Worker gauna stūmimo įvykį, ištraukia lokalizuotus eilutes ir rodo pranešimą. Atkreipkite dėmesį, kad pranešimo tekstas turėtų būti trumpas ir aiškus – kiekvienai kalbai ilgis gali skirtis, todėl išbandykite jų pateikimą.

Dažna problema: vartotojai keičia kalbą programoje, bet stūmimo prenumeratos lieka senos kalbos. Todėl įdiekite sinchronizavimą: kai vartotojas pakeičia kalbą, atnaujinkite prenumeratą serveryje. Arba galite centralizuotai valdyti kalbos nuostatą ir prieš kiekvieną stūmimo pristatymą ją gauti. Taip pat atsižvelkite į kultūrinius skirtumus, susijusius su pranešimų laiku ir tonu – stūmimo pranešimas pietų metu Pietų Europoje vertinamas kitaip nei Skandinavijoje.

Rekomendacijos: praplėskite stūmimo prenumeratos modelį, įtraukdami kalbos lauką. Sukurkite šablonų sistemą stūmimo tekstams visomis 24 kalbomis. Išbandykite stūmimo pristatymą skirtinguose įrenginiuose ir naršyklėse. Įdiekite logiką, kuri atnaujina prenumeratas, kai vartotojas pakeičia kalbą. Stebėkite paspaudimų rodiklį pagal kalbą, kad optimizuotumėte pranešimų aktualumą. Pastaba: būtina laikytis duomenų apsaugos reikalavimų (pvz., BDAR) stūmimo prenumeratose – dėl to pasikonsultuokite teisiškai.

Daugiakalbė progresyvioji žiniatinklio programa (PWA) sujungia vietinių programų privalumus su žiniatinklio pasiekiamumu – ir tai 24 ES kalbomis. Sužinokite, kaip naudojant aptarnavimo darbuotojus, išmanųjį talpyklos kaupimą ir KI vertimus sukurti greitą, patikimą ir lokaliai pritaikytą vartotojo patirtį, nereikia kurti atskiros programėlės kiekvienai kalbai.

Dirbtinio intelekto vertimų integravimas į kūrimo procesą

Kad daugiakalbės PWA veiktų efektyviai, rekomenduojama dirbtinio intelekto vertimus integruoti tiesiai į kūrimo procesą. Vietoj to, kad vertimus teiktumėte rankiniu būdu, prijunkite vertimo API per nuolatinę integraciją ir diegimą (CI/CD). Kiekvieno kūrimo metu nauji ar pakeisti tekstai automatiškai siunčiami vertimo paslaugai, papildomi iš anksto sukonfigūruoti kalbų rinkiniai ir grąžinami kaip JSON ar YAML failai. Šis metodas sumažina rankinių veiksmų poreikį ir užtikrina, kad visi kalbos variantai būtų atnaujinami lygiagrečiai su kodo baze.

Praktikoje veiksmingas yra kelių etapų procesas: pirmiausia tekstas atliekamas DI pagrindu atliktas pirminis vertimas (pavyzdžiui, per privatumą atitinkančią debesijos API ar vietinį modelį). Vėliau gimtosios kalbos redaktoriai patikrina rezultatus – ypač techninius ar rinkodaros svarbos fragmentus. Dinaminiam turiniui, gaunamam iš turinio valdymo sistemos (TVS), vertimo komponentas turėtų inicijuoti vertimą jau išsaugojimo metu ir pateikti lokalizuotą versiją. Atkreipkite dėmesį, kad API raktai būtų įtraukiami tik per aplinkos kintamuosius, o ne sąsajoje.

Kitas aspektas – vietos rezervatorių ir konteksto valdymas. DI vertimams reikia aiškių nurodymų, kurių teksto dalių negalima versti (pavyzdžiui, kintamieji ar HTML žymos). Todėl naudokite interpoliavimo mechanizmą, kuris apsaugo vietos rezervatorius prieš vertimą ir juos vėl įterpia po vertimo grąžinimo. Reguliariai tikrinkite, ar vertimai PWA sąsajoje rodomi tinkamai – ypač kalbose, rašomose iš dešinės į kairę, ar ilguose vokiškuose sudurtiniuose žodžiuose, kurie gali sukelti išdėstymo problemas.

Konkrečiai rekomenduojame: sukurkite vertimų žodynėlį su prekės ženklų terminais ir pasikartojančiomis frazėmis, kurį DI naudotų kaip nuorodą. Automatizuokite kokybės kontrolę scenarijumi, kuris aptinka neužbaigtus vertimus ar trūkstamus kalbos failus. Jei naudojate vertimų valdymo sistemą, prijunkite ją per Webhook prie saugyklos. Taip užtikrinsite, kad PWA kiekvienai iš 24 kalbų visada pateiktų naujausią ir nuoseklų turinį – be rankinių įsikišimų kasdieniame kūrime.

Išmaniojo telefono pradžios ekranas su daugybe programėlių piktogramų, tarp jų – įdiegta PWA

Daugiakalbių PWA testavimas įvairiuose įrenginiuose

Daugiakalbės PWA kokybė priklauso nuo kruopštaus testavimo įvairiuose įrenginiuose ir naršyklėse. Europos vartotojai naudoja platų išmaniųjų telefonų, planšetinių kompiuterių ir stalinių sistemų spektrą, kurie skiriasi ekrano dydžiu, operacine sistema ir naršyklės varikliu. Pradėkite nuo testo plano, kuris kiekvienai iš 24 kalbų apima šiuos scenarijus: kalbos perjungimas be puslapio perkrovimo, ilgų tekstų (pvz., vokiečių, suomių) teisingas rodymas ir aptarnavimo darbuotojo (Service Worker) veikimas kiekvienai kalbos versijai.

Naudokite realius įrenginius arba debesijos testavimo paslaugas, kad patikrintumėte PWA visose pagrindinėse ES rinkose. Ypatingą dėmesį skirkite neprisijungus veikiančiam funkcionalumui: aptarnavimo darbuotojas turi kiekvienai kalbai įgyvendinti tinkamą talpyklos strategiją. Simuliuokite tinklo trikdžius ir patikrinkite, ar rodoma paskutinė pasirinkta kalbos versija be interneto. Dažna problema – neišversti atsarginiai tekstai, todėl patikrinkite, ar kiekvienas kalbos failas yra pilnai įkeltas ir nematyti jokių vietos rezervatorių.

Atlikite automatizuotus testus naudodami tokias sistemas kaip Playwright ar Puppeteer. Apibrėžkite testus, kurie kiekvienai kalbai patvirtina hreflang žymas šaltinio kode, patikrina teisingą kalbos žymėjimą HTML elemente ir įvertina našumą naudodami Lighthouse. Taip pat atsižvelkite į skirtingus įvesties metodus, tokius kaip klaviatūra, lietimas ir balso valdymas – pastarasis dažniau naudojamas Skandinavijoje ir Nyderlanduose. Kitas svarbus dalykas: išbandykite stumiamuosius pranešimus kiekvienai kalbai, ypač specialiuosius simbolius ir simbolių kodavimą (UTF-8 be BOM).

Dokumentuokite visus rastus nukrypimus kalbiniame klaidų sekime ir prioritetizuokite pagal rinkos svarbą. Rekomenduojame prieš kiekvieną didesnį leidimą atlikti daugiakalbį dūmų testą penkiuose dažniausiai naudojamuose tikslo rinkų įrenginiuose. Derinkite rankinius patikrinimus su automatizuotais paleidimais, kad aptiktumėte tiek funkcinius, tiek estetinius trūkumus. Tik taip užtikrinsite, kad PWA kiekviename įrenginyje ir kiekviena kalba suteiks nuoseklią, patikimą patirtį.

Teisiniai reikalavimai ES rinkoms

Daugiakalbės PWA, skirtos ES galutiniams vartotojams, operatoriai privalo laikytis įvairių teisinių reikalavimų. Bendrasis duomenų apsaugos reglamentas (BDAR) reikalauja skaidriai informuoti vartotojus apie asmens duomenų tvarkymą ir gauti aiškų sutikimą – atitinkama valstybine kalba. Todėl užtikrinkite, kad privatumo nuostatos ir slapukų pranešimai būtų pateikti visomis 24 kalbomis ir techniškai teisingai įdiegti. Atkreipkite dėmesį, kad sutikimas būtų gaunamas pasirinkimo būdu (opt-in), o vartotojas galėtų jį bet kada atšaukti.

Be to, galioja šalių specifiniai reikalavimai: Vokietijoje ir Austrijoje, pvz., pagal § 5 TMG privaloma pateikti informaciją apie svetainės valdytoją (Impressum) su išsamiais kontaktais. Prancūzijoje „Informatique et Libertés“ įstatymas reikalauja išplėstinės informavimo prievolės. Kiekvienai kalbinei versijai ši informacija turi būti prieinama atitinkama teisine kalba. Patikrinkite, ar jūsų PWA atitinka Direktyvos 2019/882 (Europos prieinamumo akto) reikalavimus – tai apima pakankamą kontrastą, alternatyvų vaizdų aprašymą ir galimybę valdyti tik klaviatūra. Atitiktis nepriklauso nuo kalbos, tačiau patikra turėtų būti atliekama atskirai kiekvienai kalbai.

Dažna klaida – nepakankamai lokalizuoti teisiniai tekstai: mašininio vertimo sprendimai be teisinės peržiūros gali sukelti atsakomybės riziką. Todėl visus teisinius dokumentus turėtų peržiūrėti specializuotas advokatas ir patikrinti tikslinės šalies kalba. Be to, daugelyje ES valstybių yra specialūs reikalavimai elektroninėms sutartims, atsisakymo teisėms ir garantijoms. PWA turi aiškiai ir suprantamai pateikti šią informaciją – pavyzdžiui, prekių užsakymo procese.

Rekomenduojame saugumo sumetimais: įdiekite teisinę šablonų sistemą, kuri kiekvienai šaliai pateikia galiojančią versiją. Susiekite ją su kalbos perjungikliu, kad informacija apie svetainės valdytoją ir privatumo nuostatos visada būtų rodomos pasirinkta kalba. Stebėkite teisės aktų pakeitimus 24 šalyse – geriausia per išorinę teisinių paslaugų įmonę. Kartą per metus turinį turėtų audituoti teisės ekspertas. Šis vadovas nepakeičia teisinės konsultacijos; dėl konkrečios situacijos kreipkitės į advokatą.

Daugiakalbės PWA paleidimo kontrolinis sąrašas

Prieš paleidžiant daugiakalbę progresyviąją žiniatinklio programėlę (PWA), turėtumėte sistemingai patikrinti visus techninius ir turinio komponentus. Pradėkite nuo kalbų variantų apibrėžimo: kiekvienai kalbai nustatykite unikalią URL struktūrą (pvz., subdomeną, kelią ar ccTLD) ir teisingai įdiekite hreflang žymas. Patikrinkite, ar visos kalbų versijos yra pasiekiamos iš pagrindinio puslapio ir išorinių nuorodų. Taip pat patikrinkite, ar tarnybinis darbuotojas (service worker) naudoja atskiras talpyklos strategijas kiekvienai kalbai – filtruokite talpyklą pagal kalbos kelius, kad išvengtumėte konfliktų.

Antrame žingsnyje patikrinkite vertimo kokybę ir lokalizavimą. Dirbkite su gimtakalbiais tikrintojais, kurie atsižvelgia ir į kultūrinius niuansus bei teisinius reikalavimus. Užtikrinkite, kad visi vartotojo sąsajos tekstai (mygtukai, klaidų pranešimai, privatumo nuostatos) būtų visiškai išversti. Patvirtinkite datų, skaičių ir valiutų formatavimą pagal atitinkamą regioną. Naudokite internacionalizavimo standartą, pvz., i18next ar Intl API, kad užtikrintumėte nuoseklumą.

Tada išbandykite našumą realiuose įrenginiuose ir tinkluose tikslinėse šalyse. Naudokite įrankius, tokius kaip Lighthouse su imituojamomis vietomis, kad išmatuotumėte įkėlimo laiką ir „Core Web Vitals“ rodiklius. Atkreipkite dėmesį, kad vaizdai ir šriftai būtų optimizuoti konkrečiai kalbai – pvz., įkelkite tik tos kalbos glifus. Atlikite naudojimo testus su vartotojais iš skirtingų šalių, ypač vertindami kalbos perjungimo ir neprisijungus veikimo funkcionalumą. Dokumentuokite visas klaidas ir pašalinkite jas prieš pradedant veikti.

Galiausiai sukurkite stebėsenos sąranką, kuri fiksuotų klaidas kiekvienoje kalbos versijoje. Nustatykite pranešimus apie trūkstamus vertimus arba pasibaigusius sertifikatus. Atkreipkite dėmesį į teisinius reikalavimus: kiekvienai kalbinei versijai reikia atskirų privatumo nuostatų ir informacijos apie svetainės valdytoją, atitinkančių atitinkamos ES valstybės narės vietinius įstatymus. Rekomenduojame prieš pradedant veikti pasikonsultuoti su teisininkais dėl atitinkamų rinkų, kad būtų užtikrinta atitiktis.

Ateities plėtra daugiakalbėse PWA

Prognozuojama, kad per ateinančius kelerius metus daugiakalbių progresyviųjų žiniatinklio programų (PWA) raidą smarkiai pakeis dirbtinis intelektas ir patobulintos naršyklių API. Jau dabar aiškėja, kad neuroninis mašininis vertimas realiuoju laiku bus integruotas į PWA – pavyzdžiui, per „WebAssembly“ modelius, veikiančius kliento pusėje ir užtikrinančius duomenų privatumą. Tai leis dinamiškai lokalizuoti turinį be serverio delsimo. Praktiškai tai reikš, kad vartotojai galės keisti kalbą be būtinybės iš anksto įkelti visus vertimus, nes PWA reikalingus tekstus vers „skrydžio metu“.

Kita tendencija – automatinis kalbos atpažinimas pagal buvimo vietą, naršyklės kalbą ar vartotojo elgseną. Ateities PWA galės pasiūlyti pageidaujamą kalbą be rankinio pasirinkimo ir sklandžiai pritaikyti visą sąsają. Taip pat supaprastės kalbos išteklių valdymas: „Headless“ turinio valdymo sistemos su DI pagrįstais vertimo darbo eigos leidžia vieną kartą prižiūrėti naują turinį ir automatiškai paskirstyti jį visomis norimomis kalbomis. Vertimo sąnaudos dėl to paprastai sumažėja, o kokybė išlaikoma žmogiškai peržiūrint.

Kalbant apie neprisijungus veikiančias funkcijas, aptarnavimo darbuotojai taps protingesni. Užuot kaupę ištisus kalbų paketus, jie galėtų saugoti tik realiai naudojamus puslapius ir elementus, valdomus vartotojo elgsenos. Bus labiau naudojamas progresyvusis tobulinimas: PWA iš pradžių pateikia pagrindinę versiją atsargine kalba, o tada, kai atsiranda ryšys, įkelia konkrečią kalbos versiją. Tai sumažina pradinį įkėlimo laiką ir sutaupo įrenginio atminties.

Galiausiai didėja prieinamumo ir įtraukiojo dizaino svarba. Daugiakalbės PWA turi palaikyti ne tik tekstą, bet ir ekrano skaitytuvų pranešimus, klaviatūros naršymą bei kultūrinius pritaikymus. Teisinės sistemos, pvz., Europos prieinamumo aktas, sugriežtins šiuos reikalavimus. Rekomenduojame kurti ateičiai atsparią architektūrą naudojant modulinius sprendimus ir atvirus standartus. Dėl konkrečių teisinių klausimų, susijusių su prieinamumu įvairiose ES šalyse, pasitarkite su teisininkais.

Realistiškai įvertinti biudžetą ir pastangas

Daugiakalbės PWA sąnaudas sudaro keli veiksniai, kuriuos prieš projektą verta realiai įvertinti. Didžiausia dalis paprastai tenka turinio vertimui ir lokalizavimui. Gryno DI vertimo su gimtosios kalbos patikra, pvz., „Baduno GmbH“ siūlomo, kaina paprastai svyruoja nuo 0,05 iki 0,15 EUR už žodį, priklausomai nuo kalbų derinio ir srities. Vidutinei parduotuvei su 10 000 žodžių ir 5 kalbomis tai sudarytų apie 2 500–7 500 EUR. Pridėjus techninį įgyvendinimą: URL struktūros sukūrimą, aptarnavimo darbuotojo pritaikymą ir kalbos perjungimo diegimą, reikia maždaug 20–40 valandų kūrimo, priklausomai nuo sudėtingumo.

Papildomų išlaidų atsiranda dėl tarptautinio SEO: „hreflang“ žymų kūrimo ir priežiūros, metaduomenų vertimo ir svetainės struktūros pritaikymo. Tam skirkite 5–10 valandų vienai kalbai. Jei esamą turinį verčiate vėliau, pridedama ištraukimo ir įkėlimo kaina. Bandymai įvairiuose įrenginiuose ir kalbomis taip pat nemaži: skaičiuokite 1–2 dienas vienai kalbai.

Norint sumažinti pastangas, rekomenduojama PWA nuo pat pradžių kurti daugiakalbę. Venkite vėlesnių patobulinimų, kurie dažnai brangesni. Naudokite „Headless“ CMS, tiesiogiai valdančią vertimus, ir CI/CD paslaugas automatiniam kalbos failų generavimui. Apytikslė gairė: mažai PWA su 3 kalbomis planuokite bent 15 000–25 000 EUR biudžetą, o dideliam sprendimui su 10+ kalbų ir individualiu dizainu gali prireikti 50 000 EUR ar daugiau. Paprašykite konkretaus paslaugų teikėjo pasiūlymo ir nepamirškite einamųjų atnaujinimų bei naujų turinio vertimų sąnaudų.

Dažnos klaidos ir kaip jų išvengti

Kuriant daugiakalbes PWA pasikartoja tipinės klaidos. Viena dažniausių – nepakankamas URL struktūros planavimas. Nuo pat pradžių naudokite nuoseklią schemą, pvz., `domain.com/de/` arba `de.domain.com`, kad išvengtumėte vėlesnių 301 peradresavimų ir SEO nuostolių. Kitas spąstas – talpyklos (caching): jei jūsų aptarnavimo darbuotojas (service worker) neatskiria kalbai specifinių išteklių, vartotojai gali gauti turinį neteisinga kalba. Todėl talpyklos rakte visada nurodykite kalbos identifikatorių, pvz., `cache-v1-de` ir `cache-v1-fr`. Taip pat atkreipkite dėmesį į teisingą hreflang žymų diegimą: trūkstami ar prieštaringi duomenys sukelia indeksavimo problemas paieškos sistemose. Kiekvienai kalbos versijai naudokite hreflang žymą, įskaitant x-default versiją numatytajai kalbai. Kitas punktas – kalbos perjungimas: įgyvendinkite jį kliento pusėje naudodami būsenos valdymą, kad išvengtumėte visiško puslapio perkrovimo, bet užtikrinkite, kad URL kelias būtų atnaujinamas, kad veiktų žymos ir dalijimasis. Dėl veikimo neprisijungus (offline) daugelis kūrėjų pamiršta, kad išversti klaidų puslapiai taip pat turi būti talpinami talpykloje. Todėl išbandykite neprisijungus kiekvienoje kalboje. Taip pat KI vertimų naudojimas kelia riziką: automatiniai vertimai gali būti kultūriškai netinkami arba neteisingai perteikti specifinius terminus. Mašininius vertimus visada leiskite patikrinti gimtakalbiui, ypač teisiškai svarbiame turinyje. Galiausiai stebėkite našumą: jei visus kalbinius išteklius pateikiate viename dideliame JavaScript pakete, nukenčia įkėlimo laikas. Kalbai specifinius modulius įkelkite dinamiškai (lazy loading). Be to, atkreipkite dėmesį, kad kai kurios kalbos, pvz., vokiečių ar prancūzų, sukuria ilgesnius tekstus – jūsų sąsajos išdėstymas turėtų lanksčiai reaguoti į teksto ilgį. Išbandykite su vietos rezervavimo žymomis, pvz., „Bitte geben Sie Ihre Versicherungsnummer ein“ vokiečių kalba. Jei šiuos klausimus spręsite nuo pat pradžių, išvengsite brangiai kainuojančių pataisymų. Dėl teisinių klausimų visada konsultuokitės su savo teisininku – ypač dėl bendrųjų sąlygų ar privatumo pranešimų keliomis kalbomis.

Įrankiai ir praktinis pavyzdys: žingsnis po žingsnio link daugiakalbės PWA

Daugiakalbei PWA diegti turite patikimų įrankių. Internacionalizacijai tinka tokie karkasai kaip i18next (skirtas React) arba Vue I18n. Maršruto nustatymui naudokite React Router arba Vue Router su kalbai specifiniais keliais. Kūrimo procesui pagelbės Webpack su papildiniais, pvz., `i18n-webpack-plugin`. Kaip CI/CD platforma tinka GitLab CI arba GitHub Actions, kurie automatiškai ištraukia vertimus iš jūsų turinio valdymo sistemos. Pažvelkime į konkretų pavyzdį: internetinė parduotuvė su vokiečių, anglų ir prancūzų kalbomis. 1 žingsnis: apibrėžkite URL struktūrą kaip `domain.com/{lang}/` ir atitinkamai sukonfigūruokite maršrutizatorių. 2 žingsnis: sukurkite vertimų failus (pvz., JSON) kiekvienai sričiai: `de/common.json`, `en/common.json` ir t.t. Naudokite raktu pagrįstą metodą: `{ „welcome“: „Willkommen“ }`. 3 žingsnis: integruokite i18next į savo programą, kad keičiant kalbą būtų įkeliami atitinkami failai. 4 žingsnis: nustatykite aptarnavimo darbuotoją, kuris kiekvienai kalbai naudoja atskiras talpyklas. Įdiegimo įvykyje talpykloje saugokite visų kalbų pagrindinius šablonus, prireikus įkelkite papildomus išteklius. 5 žingsnis: įgyvendinkite kalbos perjungimą kaip išskleidžiamąjį meniu. Išsaugokite kalbos nuostatą localStorage ir pirmojo apsilankymo metu nustatykite kalbą pagal `Accept-Language` antraštę. 6 žingsnis: pridėkite hreflang žymas į `<head>`, dinamiškai sugeneruotas iš galimų kalbų. 7 žingsnis: išbandykite PVA vietoje naudodami Chrome DevTools: įjunkite neprisijungimo režimą ir patikrinkite visas kalbos versijas. Įsitikinkite, kad ir klaidų puslapiai yra išversti. 8 žingsnis: gamybai naudokite kūrimo procesą, kuris sumažina vertimų failus ir sukuria kalbai specifinius gabalus (chunks). Patirtis rodo, kad tai sumažina pradinį įkėlimo laiką 20–30 %, išmatuotą su Lighthouse. Nuolatiniam stebėjimui naudokite tokius įrankius kaip WebPageTest arba Sitespeed.io. Atminkite, kad ši seka yra tik orientacinė; pritaikykite ją prie savo architektūros. Jei abejojate dėl savo daugiakalbio turinio teisinio teisingumo, pasikonsultuokite su kvalifikuotu specialistu, ypač dėl teisiškai įpareigojančių tekstų, pvz., atsisakymo teisės pranešimų.

Dažnai užduodami klausimai

Kuo skiriasi daugiakalbės PWA kūrimas nuo tradicinės daugiakalbės svetainės?

Kuriant daugiakalbę PWA, be turinio lokalizavimo, reikia konfigūruoti ir aptarnavimo darbuotojus bei talpyklos strategijas pagal kalbą. Tai reiškia, kad kiekviena kalbos versija gauna savo talpyklos raktus, o neprisijungus puslapiai pateikiami atitinkama kalba. Be to, kalbos perjungimas turi būti įgyvendintas be visiško puslapio perkrovimo, o tam reikia specialios architektūros. Dar vienas skirtumas: pranešimai stūmimu turi atitikti naudotojų kalbos nuostatas, todėl būtina integruoti naudotojo profilį su kalbos pasirinkimu.

Kokį vaidmenį atlieka AI vertimai kuriant daugiakalbę PWA?

AI vertimai gali žymiai pagreitinti lokalizacijos procesą, pateikdami turinio juodraščius, kuriuos vėliau patikrina gimtoji kalba kalbantys asmenys. Praktikoje pasiteisino naudoti AI vertimams vartotojo sąsajos tekstams ir pasikartojantiems elementams, o rinkodarinius ar teisinius turinius versti rankiniu būdu. Vertimo paslaugų integravimas per API leidžia tiesiogiai įtraukti vertimus į kūrimo procesą, taip automatiškai sukuriant atskiras PWA versijas kiekvienai kalbai.

Kaip užtikrinti, kad mano daugiakalbė PWA atitiktų teisinius reikalavimus visose ES šalyse?

Norint eksploatuoti daugiakalbę PWA ES, turite laikytis Bendrojo duomenų apsaugos reglamento (BDAR) ir šalių specifinių impressumo reikalavimų. Tai reiškia, kad jūsų PWA turi pateikti atskirą impressumą su teisingais teisiniais duomenimis kiekvienai kalbos versijai – idealiai dinamiškai pagal pasirinktą kalbą. Taip pat slapukų juostos ir sutikimai turėtų būti pritaikyti kalbai. Rekomenduojame pasikonsultuoti su tarptautinės IT teisės advokatu, nes reikalavimai skiriasi.

Prašyti neįpareigojančio pasiūlymo

Atsakymas per 24 valandas darbo dienomis.

Vokietijos MBFrankfurto prie Maino apygardos teismas · HRB 111727
D-U-N-S® registruotas315030052
DSGVO atitinkantis apdorojimasHostingas Vokietijoje
Fiksuotos kainos su rašytine pristatymo garantija