Я собираюсь решить, как обработать интернационализацию формата на основе XML для описания пользовательского интерфейса.
Формат обычно выглядит примерно так:
...
<devif>
<screen id="scr1" title="Settings for this and that">
<header text="Climate readings"/>
<rd setp="123" text="Air temperature" unit="°C"/>
<rd setp="234" text="Humidity" unit="%RH"/>
<rd setp="345" text="CO2" unit="ppm"/>
<header text="Settings"/>
<wr setp="567" text="Air temperature demand" unit="°C"/>
</screen>
...
</devif>
Каждый файл содержит множество экранов и может содержать до 10 000 строк, и у нас есть дюжина таких файлов в нашем приложении.
Я все еще могу изменить формат в соответствии с нашими потребностями. Итак, как бы вы перевели это?
Я думал о некоторых возможных способах справиться с этим:
- Отдельный файл для каждого языка, содержащий текст на английском языке и переведенный текст
- Использование идентификатора для каждого тега и использование отдельного файла с переведенным текстом для каждого идентификатора
- Поместить все переводы в один файл
Первое решение имеет проблему, когда английский текст может быть переведен в разные сообщения в зависимости от контекста.
Второе решение делает исходный файл менее читаемым (хотя и ненамного) и не позволяет легко переводить атрибуты.
Третье решение сделало бы файл очень большим и громоздким для работы после того, как файл был переведен на 5-6 языков.