1. Separation av kod och texter
Den grundläggande förutsättningen för all lokalisering är strikt separation av programkod och textinnehåll. Alla texter som ska visas bör lagras i externa resursfiler (t.ex. Properties, JSON, YAML), inte hårdkodade i källkoden. Detta gör att översättare kan arbeta utan att ändra koden. Använd unika strängnycklar som referens i koden, som pekar på respektive översättningar. Denna separation underlättar underhåll och möjliggör senare tillägg av nya språk utan kodändringar. Se till att även UI-etiketter, felmeddelanden och verktygstips hamnar i dessa filer.
2. Platshållare och variabler
Texter innehåller ofta dynamiskt innehåll som siffror, namn eller datum. Dessa måste infogas via platshållare, t.ex. med printf-formatering (%s, %d) eller modernare metoder som krullparenteser {0}. Det är viktigt att översättarna känner till ordningen och betydelsen av platshållarna. Använd namngivna platshållare (t.ex. „{username}“) för att ge kontext. I språk med olika meningsbyggnad kan ordningen på platshållarna variera. Erbjud därför möjligheten att justera ordningen i översättningen. Testa alla varianter för att undvika felaktiga eller ofullständiga utdata.
3. Pluralregler och flertalsbildning
I tyskan finns bara singular och plural, men många språk har mer komplexa pluralregler (t.ex. arabiska med sex kategorier). Använd bibliotek som ICU MessageFormat som hanterar pluralregler språkspecifikt. Definiera separata nycklar i dina resurser för de olika pluralformerna (one, other). Koden väljer sedan automatiskt rätt form baserat på talet. Exempel: „{count} {count, plural, one {äpple} other {äpplen}}“. Testa varje språk med flera talvärden för att säkerställa att rätt pluralform visas. Undvik fasta if-satser – det är felbenäget.
4. Textlängd och layoutbuffert
Översättningar är ofta längre eller kortare än originaltexten. Särskilt vid knappar, menyer och etiketter kan detta spränga layouten. Planera därför tillräckligt med utrymme för textutökningar – en bra riktlinje är 30 % extra utrymme för västerländska språk, mer för asiatiska. Använd dynamiska layouter som anpassar sig till textlängden (t.ex. Auto Layout i iOS eller Flexbox på webben). Undvik fasta bredder. Låt UI-element hantera textbrytning vid behov. Testa gränssnittet med de längsta förväntade översättningarna för att undvika överlappningar eller avskärningar.
5. Strängnycklar, kontext för översättare och RTL
Unika strängnycklar är ryggraden i lokaliseringen. Använd beskrivande namn (t.ex. „login.button.title“) och dokumentera användningsändamålet. Ge översättare kontext: skärmdumpar, maximal teckenlängd, begränsningar (t.ex. „inte längre än 20 tecken“). För RTL-språk som arabiska eller hebreiska måste gränssnittet speglas. Använd layoutattribut som automatiskt stöder RTL (t.ex. start/end istället för left/right). Testa hela navigationen under RTL-förhållanden. Tänk också på symboler och grafik – de kan tolkas olika beroende på kultur.