Подтвердить что ты не робот

Что такое хорошее определение для кода языка и языковых кодов?

Когда использовать en_GB и en-GB? В чем разница? Есть ли имя ISO для этой комбинации ISO 639-1 (язык) и ISO 3166 (страна)?
4b9b3361

Ответ 1

Существует несколько систем для локальных идентификаторов. Многие из них похожи на первый взгляд, но не тогда, когда вы идете глубже:

Некоторые примеры (сербская-сербия с латинским Script, японско-японская с радикальной сортировкой):

  • UTS-35, ICU, Mac OS X, Flash: sr-Latn-RS, ja-JP @collation = радикальный
  • Новое расширение UTS-35, BCP 47 U: sr-Latn-RS, ja-JP-u-co-unihan
  • Win 2000, XP: 0x81a, 0x10411
  • Vista, Win 7: sr-Latn-CS, ja-JP_radical
  • Java: sr_CS, ja_JP
  • Java 7: sr_RS, ja_JP
  • Linux: sr_RS @latin, ja_JP.utf8

Подумайте об этом, как о разных способах говорить о цветах (RGB, CMYB, HSV, Pantone и т.д.).

Так что - vs. _ не имеет смысла, если вы не укажете, какая среда вы используете. Используйте -, и Java это не поймет, используйте _, и Windows этого не поймет. ICU (и системы, построенные поверх него) принимают как -, так и _, но создают стиль _.

Нет ISO, который охватывает комбинацию языка-страны. Но есть ИСО, которые охватывают различные части (язык, страна, script). Точная версия ISO также зависит от системы, используемой для локальных идентификаторов.


В общем, вы должны принимать как _, так и -, и генерировать только один ( "быть либеральным в том, что вы принимаете и строгим в том, что вы испускаете" ) (например, ICU).

Если вы общаетесь с системами, использующими идентификатор языкового стандарта другого типа, вам нужно будет отобразить карту в/из вашей системы. Это заставит вас использовать _ или -. Некоторые из отображений будут потеряны (нет возможности указывать альтернативные календари в Windows, Linux или альтернативной сортировке или скриптах в Java старше 7 и т.д.), А круговое отключение может быть невозможно (несколько похожее на преобразования RGB- CMYK).

Дополнение: все зависит не только между системами, но они могут меняться во времени. Например, Java 7 добавила поддержку sr_RS и для скриптов, Windows продолжает добавлять поддержку для большего количества локалей, создавать новые страны (разделение Судана, Россия, Сербия) или исчезать (Восточная Германия, США, Югославия) и т.д.

Для внутреннего представления вы можете выбрать самый мощный, который может представлять все, и это UTS-35/BCP 47 (также используется CLDR и ICU).

Ответ 2

Локаль представляет собой комбинацию языка и региона (обычно это страна).

Сепаратор ca будет _ или -, но рекомендуемый - тире.

Вероятно, вы ищете стандарт BCP-47, который использует коды языков из ISO 639-1 и регионы региона/страны из ISO 3166-1 alpha-2 (обычно пишутся в верхнем регистре).

Здесь вы можете найти более подробную информацию о них http://blog.i18n.ro/simplified-locale-codes/

Ответ 3

Он распространяется для Интернета в RFC 3066 и обозначает "en-GB", а не "en_GB"

Ответ 4

Это зависит от технологии. Например, в Java Locale.UK предоставит вам код en_GB (если вас достаточно беспокоит вызов toString()). Это то, что вы проходили бы между модулями (если только вы не передаете конкретный тип), и это то, что вы напишете в файлах конфигурации (т.е. Faces-context.xml).
В .Net, с другой стороны, вы, безусловно, будете использовать en-GB.

Форма

en-GB определенно более распространена, и в большинстве случаев это форма, которую вы должны использовать.

Разные очевидны: разделитель:) В противном случае нет разницы (по смыслу конкретная технология может налагать некоторые ограничения на идентификатор Locale).

Нет нормативного документа ISO, который обрабатывает сочетание языков и стран, по моим знаниям. В Интернационализации программного обеспечения он является частью модели Locale.