1. Scheiding van code en teksten
De basisvoorwaarde voor elke lokalisatie is de strikte scheiding van programmacode en tekstuele inhoud. Alle weer te geven teksten moeten worden opgeslagen in externe bronbestanden (bijv. Properties, JSON, YAML), niet hardgecodeerd in de broncode. Hierdoor kunnen vertalers werken zonder de code te wijzigen. Gebruik unieke stringkeys als referentie in de code, die verwijzen naar de respectieve vertalingen. Deze scheiding vergemakkelijkt ook het onderhoud en maakt het later toevoegen van nieuwe talen mogelijk zonder codeaanpassingen. Zorg ervoor dat ook UI-labels, foutmeldingen en tooltips in deze bestanden terechtkomen.
2. Plaatshouders en variabelen
Teksten bevatten vaak dynamische inhoud zoals getallen, namen of gegevens. Deze moeten via plaatshouders worden ingevoegd, bijvoorbeeld met printf-opmaak (%s, %d) of modernere benaderingen zoals accolades {0}. Het is belangrijk dat vertalers de volgorde en betekenis van de plaatshouders kennen. Gebruik benoemde plaatshouders (bijv. „{username}“) om context te geven. Bij talen met een andere woordvolgorde kan de volgorde van de plaatshouders variëren. Bied daarom de mogelijkheid om de volgorde in de vertaling aan te passen. Test alle varianten om foutieve of onvolledige uitvoer te voorkomen.
3. Meervoudsregels en meervoudsvorming
In het Duits bestaan alleen enkelvoud en meervoud, maar veel talen hebben complexere meervoudsregels (bijv. Arabisch met zes categorieën). Gebruik bibliotheken zoals ICU MessageFormat die meervoudsregels taalspecifiek afhandelen. Definieer in uw bronnen aparte sleutels voor de verschillende meervoudsvormen (one, other). De code kiest dan automatisch de juiste vorm op basis van het getal. Voorbeeld: „{count} {count, plural, one {appel} other {appels}}“. Test elke taal met meerdere getallen om te verzekeren dat de juiste meervoudsvorm wordt weergegeven. Vermijd vaste if-query's – dat is foutgevoelig.
4. Tekstlengte en layout-buffer
Vertalingen zijn vaak langer of korter dan de originele tekst. Vooral bij knoppen, menu's en labels kan dit het layout laten knappen. Plan daarom voldoende ruimte voor tekstuitbreidingen in – een goede richtlijn is 30% extra ruimte voor westerse talen, meer voor Aziatische. Gebruik dynamische layouts die zich aanpassen aan de tekstlengte (bijv. Auto Layout in iOS of Flexbox in het web). Vermijd vaste breedtes. Laat UI-elementen eventueel omspringen met tekstterugloop. Test de interface met de langst te verwachten vertalingen om overlapping of afkapping te voorkomen.
5. String-keys, context voor vertalers en RTL
Unieke string-keys vormen de ruggengraat van lokalisatie. Gebruik sprekende namen (bijv. „login.button.title“) en documenteer het gebruiksdoel. Geef vertalers context: schermafbeeldingen, maximale tekenlengte, beperkingen (bijv. „niet langer dan 20 tekens“). Voor RTL-talen zoals Arabisch of Hebreeuws moet de UI worden gespiegeld. Gebruik layout-attributen die RTL automatisch ondersteunen (bijv. start/end in plaats van left/right). Test de volledige navigatie onder RTL-omstandigheden. Denk ook aan symbolen en afbeeldingen – deze kunnen per cultuur anders worden geïnterpreteerd.