1. Разделяне на код и текстове
Основното изискване за всяка локализация е строгото разделяне на програмен код и текстови съдържания. Всички текстове за показване трябва да се съхраняват във външни ресурсни файлове (напр. Properties, JSON, YAML), а не да бъдат твърдо кодирани в сорс кода. Това позволява на преводачите да работят, без да променят кода. Използвайте уникални ключове за низове като референция в кода, които да сочат към съответните преводи. Това разделяне улеснява поддръжката и позволява в бъдеще да се добавят нови езици без промени в кода. Уверете се, че и етикетите на интерфейса, съобщенията за грешки и подсказките попадат в тези файлове.
2. Заместители и променливи
Текстовете често съдържат динамично съдържание като числа, имена или дати. Те трябва да се вмъкват чрез заместители, напр. с printf форматиране (%s, %d) или по-модерни подходи като фигурни скоби {0}. Важно е преводачите да знаят реда и значението на заместителите. Използвайте именувани заместители (напр. „{username}“), за да осигурите контекст. При езици с различен словоред редът на заместителите може да варира. Затова осигурете възможност за коригиране на реда в превода. Тествайте всички варианти, за да избегнете грешни или непълни изходи.
3. Правила за множествено число и образуване на множествено число
В немския има само единствено и множествено число, но много езици имат по-сложни правила за множествено число (напр. арабският с шест категории). Използвайте библиотеки като ICU MessageFormat, които обработват правилата за множествено число според езика. Дефинирайте отделни ключове в ресурсите си за различните форми на множествено число (one, other). Кодът автоматично избира подходящата форма въз основа на числото. Пример: „{count} {count, plural, one {ябълка} other {ябълки}}“. Тествайте всеки език с няколко числови стойности, за да сте сигурни, че се показва правилната форма. Избягвайте твърди if проверки – това води до грешки.
4. Дължина на текста и буфер за оформлението
Преводите често са по-дълги или по-къси от оригиналния текст. Особено при бутони, менюта и етикети това може да наруши оформлението. Затова планирайте достатъчно място за разширения на текста – добра насока е 30% допълнително място за западни езици, повече за азиатски. Използвайте динамични оформления, които се адаптират към дължината на текста (напр. Auto Layout в iOS или Flexbox в уеб). Избягвайте фиксирани ширини. Оставете UI елементите да обработват пренос на текст, ако е необходимо. Тествайте интерфейса с най-дългите очаквани преводи, за да избегнете припокриване или отрязване.
5. Ключове за низове, контекст за преводачи и RTL
Уникалните ключове за низове са гръбнакът на локализацията. Използвайте описателни имена (напр. „login.button.title“) и документирайте предназначението им. Дайте на преводачите контекст: екранни снимки, максимална дължина на символите, ограничения (напр. „не повече от 20 знака“). За RTL езици като арабски или иврит UI трябва да бъде огледален. Използвайте атрибути на оформлението, които поддържат RTL автоматично (напр. start/end вместо left/right). Тествайте цялата навигация при RTL условия. Мислете и за символи и графики – те могат да се тълкуват различно в различните култури.