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