Скажем, у меня есть 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, который ожидает этот формат и сам не знает о значениях по умолчанию для локали.
Попытки решения
Locale::getUnicodeKeywords
предоставляет только ключевые слова, которые были переопределены вручную.
- Явный вызов
Locale::getUnicodeKeywordValue
для ключевого слова, которое не было переопределено вручную, приводит к ошибке вместо получения значения из известных настроек языка по умолчанию.