Существует ли стандартный алгоритм разрешения локали? - PullRequest
7 голосов
/ 27 декабря 2011

В поддержку интернационализации программного обеспечения многие языки программирования и платформы поддерживают средства получения локализованных ресурсов, которые будут использоваться в пользовательском интерфейсе, который показан пользователю (например, класс Java java.util.ResourceBundle).Часто, если ресурсы для предпочтительного языкового стандарта пользователя недоступны, то существует запасной механизм или процесс разрешения языкового стандарта, который попытается найти наиболее подходящие ресурсы из наборов доступных ресурсов.Например, если ресурсы для en-US недоступны, то обычно система пытается найти ресурсы для en.

Процесс разрешения локали кажется почти одинаковым для решений на основе множества языков и платформ.,Следуют ли они некоторому стандартному алгоритму разрешения локали, или, если нет, такой стандарт существует?

Ответы [ 3 ]

2 голосов
/ 06 января 2012

По-видимому, RFC 4647 , Сопоставление языковых тегов, в котором описывается синтаксис «диапазонов языков» для указания списка предпочтительных языков пользователя, а также «фильтрация» и «поиск»"механизмы сравнения и сопоставления языковых диапазонов с языковыми тегами RFC 4646.RFC 4647 описывает эти механизмы как:

Фильтрация создает (потенциально пустой) набор языковых тегов, тогда как поиск производит один языковой тег.

1 голос
/ 26 октября 2015

CLDR - хранилище данных Unicode Common Locale имеет предложенный (по состоянию на 2015 г.) алгоритм, основанный на языковом расстоянии . Без данных о расстоянии это не решение, но стоит искать решение в будущем.

1 голос
/ 27 декабря 2011

Я не знаю стандарт как таковой.

Однако используемый алгоритм является тривиальным следствием того факта, что локали являются иерархическими. Существует (условная) корневая локаль без имени. Под ним находятся только языковые стандарты (en, fr и т. Д.). Под ними находятся национальные локали (en_GB, en_US и т. Д.). Под ними, опционально, могут быть варианты локалей (en_GB_Yorkshire, en_GB_cockney и т. Д. - для реалистичных примеров посмотрите на Норвегию).

Естественный способ найти подходящий ресурс - это начать с самого низкого, самого конкретного, локали, который вы можете, и идти вверх по дереву, пока не найдете что-то. Итак, начиная с en_US_TX, вы переходите к en_US, затем к en, затем к корню.

...