1. Separazione di codice e testi
Il prerequisito fondamentale per qualsiasi localizzazione è la rigorosa separazione tra codice del programma e contenuti testuali. Tutti i testi da visualizzare dovrebbero essere memorizzati in file di risorse esterni (ad es. Properties, JSON, YAML), non codificati direttamente nel codice sorgente. In questo modo i traduttori possono lavorare senza modificare il codice. Utilizzi chiavi di stringa univoche come riferimento nel codice che puntano alle rispettive traduzioni. Questa separazione facilita inoltre la manutenzione e consente di aggiungere in seguito nuove lingue senza modifiche al codice. Si assicuri che anche etichette dell'interfaccia utente, messaggi di errore e tooltips vengano inseriti in questi file.
2. Segnaposto e variabili
I testi contengono spesso contenuti dinamici come numeri, nomi o date. Questi devono essere inseriti tramite segnaposto, ad esempio con la formattazione printf (%s, %d) o approcci più moderni come le parentesi graffe {0}. È importante che i traduttori conoscano l'ordine e il significato dei segnaposto. Utilizzi segnaposto nominati (ad es. „{username}“) per fornire contesto. Nelle lingue con diversa struttura della frase, l'ordine dei segnaposto può variare. Offra quindi la possibilità di adattare l'ordine nella traduzione. Testi tutte le varianti per evitare output errati o incompleti.
3. Regole per il plurale e formazione del plurale
In tedesco esistono solo singolare e plurale, ma molte lingue hanno regole di plurali più complesse (ad esempio l'arabo con sei categorie). Utilizzate librerie come ICU MessageFormat, che gestiscono le regole di plurali per ciascuna lingua. Definite nelle vostre risorse chiavi separate per le diverse forme plurali (one, other). Il codice selezionerà automaticamente la forma appropriata in base al numero. Esempio: „{count} {count, plural, one {mela} other {mele}}“. Testate ciascuna lingua con diversi valori numerici per assicurarvi che venga visualizzata la forma plurale corretta. Evitate istruzioni if fisse: sono soggette a errori.
4. Lunghezza del testo e buffer di layout
Le traduzioni sono spesso più lunghe o più corte del testo originale. Soprattutto per pulsanti, menu ed etichette, ciò può rompere il layout. Pertanto, pianificate spazio sufficiente per le estensioni di testo – una buona regola è il 30% di spazio aggiuntivo per le lingue occidentali, di più per quelle asiatiche. Utilizzate layout dinamici che si adattano alla lunghezza del testo (ad esempio Auto Layout in iOS o Flexbox nel web). Evitate larghezze fisse. Fate sì che gli elementi dell'interfaccia gestiscano eventualmente il ritorno a capo. Testate l'interfaccia con le traduzioni più lunghe previste per evitare sovrapposizioni o tagli.
5. Chiavi stringa, contesto per i traduttori e RTL
Le chiavi stringa univoche sono il fondamento della localizzazione. Utilizzate nomi descrittivi (ad es. „login.button.title“) e documentate lo scopo. Fornite contesto ai traduttori: screenshot, lunghezza massima dei caratteri, vincoli (ad es. „non più di 20 caratteri“). Per le lingue RTL come arabo o ebraico, l'interfaccia utente deve essere specchiata. Utilizzate attributi di layout che supportano automaticamente RTL (ad es. start/end invece di left/right). Testate l'intera navigazione in condizioni RTL. Considerate anche icone e grafiche: possono essere interpretate diversamente a seconda della cultura.