1. Odvajanje koda i tekstova
Osnovni preduvjet za svaku lokalizaciju je strogo odvajanje programskog koda i tekstualnih sadržaja. Svi tekstovi koji se prikazuju trebaju se pohraniti u vanjske datoteke resursa (npr. Properties, JSON, YAML), a ne biti tvrdo kodirani u izvornom kodu. Na taj način prevoditelji mogu raditi bez mijenjanja koda. Koristite jedinstvene ključeve stringova u kodu kao reference koje upućuju na odgovarajuće prijevode. Ovo odvajanje također olakšava održavanje i omogućuje kasnije dodavanje novih jezika bez promjena koda. Pazite da i UI oznake, poruke o pogreškama i opisi alata budu u tim datotekama.
2. Zamjenske oznake i varijable
Tekstovi često sadrže dinamički sadržaj poput brojeva, imena ili datuma. Oni se moraju unositi putem zamjenskih oznaka, npr. printf formatiranjem (%s, %d) ili modernijim pristupima poput vitičastih zagrada {0}. Važno je da prevoditelji poznaju redoslijed i značenje zamjenskih oznaka. Koristite imenovane zamjenske oznake (npr. „{username}“) kako biste pružili kontekst. Kod jezika s različitim redoslijedom riječi, redoslijed zamjenskih oznaka može varirati. Stoga omogućite prilagodbu redoslijeda u prijevodu. Testirajte sve varijante kako biste izbjegli pogrešne ili nepotpune ispise.
3. Pravila za množinu i tvorbu množine
U njemačkom postoje samo jednina i množina, ali mnogi jezici imaju složenija pravila za množinu (npr. arapski sa šest kategorija). Koristite biblioteke kao što je ICU MessageFormat koje obrađuju pravila za množinu specifično za jezik. Definirajte u svojim resursima zasebne ključeve za različite oblike množine (one, other). Kod će zatim automatski odabrati odgovarajući oblik na temelju broja. Primjer: „{count} {count, plural, one {jabuka} other {jabuke}}“. Testirajte svaki jezik s više brojčanih vrijednosti kako biste osigurali da se prikazuje točan oblik množine. Izbjegavajte fiksne if-uvjete – to je sklono pogreškama.
4. Duljina teksta i prostor za proširenje
Prijevodi su često duži ili kraći od izvornog teksta. Posebno kod gumba, izbornika i oznaka to može poremetiti raspored. Stoga planirajte dovoljno prostora za proširenje teksta – dobra smjernica je 30 % dodatnog prostora za zapadne jezike, više za azijske. Koristite dinamičke rasporede koji se prilagođavaju duljini teksta (npr. Auto Layout u iOS-u ili Flexbox na webu). Izbjegavajte fiksne širine. Dopustite UI elementima da po potrebi prelamaju tekst. Testirajte sučelje s najdužim očekivanim prijevodima kako biste izbjegli preklapanja ili odsijecanje.
5. Ključevi stringova, kontekst za prevoditelje i RTL
Jedinstveni ključevi stringova su okosnica lokalizacije. Koristite opisne nazive (npr. „login.button.title“) i dokumentirajte svrhu upotrebe. Dajte prevoditeljima kontekst: snimke zaslona, maksimalnu duljinu znakova, ograničenja (npr. „ne duže od 20 znakova“). Za RTL jezike poput arapskog ili hebrejskog UI se mora zrcaliti. Koristite atribute rasporeda koji automatski podržavaju RTL (npr. start/end umjesto left/right). Testirajte cjelokupnu navigaciju u RTL uvjetima. Također razmislite o simbolima i grafikama – oni se mogu različito tumačiti ovisno o kulturi.