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