Мы используем английскую строку в качестве идентификатора.
Если не удается найти объект международного ресурса (загруженный из установленной библиотеки I18N), то по умолчанию используется строка идентификатора.
Код выглядит так:
doAction(I18N.get("Press OK to continue"));
В рамках процессов сборки у нас есть Perl-скрипт, который анализирует весь источник для строковых констант. Он создает временный файл из всех строк в приложении, а затем сравнивает их со строками ресурсов в каждой локальной сети, чтобы определить, существуют ли они. Любые пропущенные строки генерируют электронное письмо для соответствующей команды переводчиков.
Мы можем иметь несколько DLL для каждого местного. Название dll основано на RFC 3066
язык [_territory] [. Codeset] [@ модификатор]
Мы пытаемся извлечь языковой стандарт из машины и быть максимально точными при загрузке dll I18N, но отступаем к менее конкретным локальным вариациям, если более конкретная версия отсутствует.
Пример:
В Великобритании: если местный был en_GB.UTF-8
(Я использую термин dll свободно, но не в определенном смысле Windows).
Сначала найдите I18N.en_GB.UTF-8 dll. Если эта dll не существует, вернитесь к I18N.en_GB . Если эта dll не существует, вернитесь к I18N.en Если эта dll не существует, вернитесь к I18N.default
Единственное исключение из этого правила:
Упрощенный китайский (zh_CN), где запасной вариант - американский английский (en_US). Если машина не поддерживает упрощенный китайский, маловероятно, что она полностью поддерживает китайский.