Язык зависит от того, где на нем говорят (угу!), Поэтому коды языка и локали отражают эту реальность. zh
- это базовый языковой код, но, поскольку существует две его основных формы, есть zh_Hans
и zh_Hant
, но они по-прежнему являются только языковыми кодами, а не локали.
Зависит от местоположения
Чтобы полностью указать, какой язык используется в конкретном месте, код страны все равно должен быть дополнен суффиксом, что делает zh_Hans_HK
и zh_Hant_HK
для упрощенного и традиционного китайского, соответственно, так, как говорят в Гонконге.
На самом деле, реальность такова, что во многих странах часто требуется что-то более конкретное, чем код страны, но это, вероятно, в геометрической прогрессии увеличит сложность и обслуживание баз данных, таких как CLDR, а также инфраструктуры поддержки для ввода в него, например, извлечения IP для извлечения деталей , не является общедоступным или недостаточно точным.
Фиксированный текст
Теперь, если код должен просто указать, какой набор фиксированных строк использовать в пользовательском интерфейсе или даже целые страницы, установленные на сайте, суффикс страны на самом деле не нужен, если только нет более нескольких мест, где язык меняется. достаточно существенно (информация на основе местоположения), чтобы создавать целый отдельный набор ресурсов.
Чем больше набор ресурсов, тем более вероятно, что потребуется языковой код, основанный на локали [в данном контексте, просто атрибут языка, а не истинный языковой стандарт, поэтому вы можете называть его как хотите!], Но, по крайней мере, вы делать это нужно только при необходимости.
Ценности на лету
Однако, если вы хотите отформатировать определенные значения переменных, такие как даты, время, валюты и числа, на лету, региональные стандарты становятся важными, потому что все инструменты, поддерживающие такие функции (например, основанные на данных Unicode CLDR), ожидают их. Языковой стандарт для них должен быть отдельной настройкой для кода, для которого установлен собственный язык пользовательского интерфейса, если вы не хотите создать набор ресурсов для каждого известного языкового стандарта и поддерживать их до тошноты!
Инструменты языка браузера
Обратите внимание, что при указании языкового стандарта для веб-страницы, которую можно редактировать, как в полях ввода, и при включении проверки орфографии в атрибутах или CSS для поля, языковые инструменты браузера будут проверять орфографию в поле в соответствии с этим языковым стандартом.
Критерии
Вы должны четко понимать, что предоставляет набор ресурсов, поэтому примите во внимание:
- Фиксированные струны? Только язык.
- Форматирование на лету? Локаль.
- Проверка орфографии в среде просмотра? Локаль.
- Целые страницы / дочерний сайт? Только язык, в противном случае - локаль (как вариант языка), если требуется существенно другое содержание.
Таблица для минимизации накладных расходов на обслуживание
Я использую электронную таблицу для хранения строк пользовательского интерфейса, где каждый языковой код имеет родительский код, так что ячейка для его версии строки имеет формулу, которая получает свою строку от родительского. Чтобы создать настраиваемую строку для этого языка и строки, я просто перезаписываю формулу ячейки точным текстом. Это сводит к минимуму объем обслуживания ресурсов. В конце я запускаю макрос, который генерирует полный файл ресурсов для каждого языка.