Разверните ключевые слова Unicode в icu :: Языковой тег локали - PullRequest
0 голосов
/ 20 июня 2019

Скажем, у меня есть icu::Locale с парой ключевых слов Unicode, например, "en-US-u-ca-gregory-tz-usnyc". Если я позвоню toLanguageTag, я смогу получить приведенную выше строку.

Если я вызову addLikelySubtags, чтобы «максимизировать» локаль, это можно расширить до "en-Latn-US-u-ca-gregory-tz-usnyc" (добавив идентификатор сценария Latn, который был неявным).

Но как я могу добавить "вероятные ключевые слова Unicode", чтобы получить что-то вроде "en-US-u-ca-gregory-cf-standard-co-standard-cu-usd-fw-sun-ms-ussystem-nu-latn-tz-usnyc"? Они должны быть получены из данных CLDR о локали.

Назначение

Мне нужно получить полностью расширенный код локали Unicode BCP-47 (с расширениями Unicode), чтобы перейти к API, который ожидает этот формат и сам не знает о значениях по умолчанию для локали.

Попытки решения

  1. Locale::getUnicodeKeywords предоставляет только ключевые слова, которые были переопределены вручную.
  2. Явный вызов Locale::getUnicodeKeywordValue для ключевого слова, которое не было переопределено вручную, приводит к ошибке вместо получения значения из известных настроек языка по умолчанию.
...