Где находится список доступных локалей Windows?

14

Если вы откроете Regional and Language Options(через Control Panel) и нажмете на Regional Optionsвкладку, то появится раскрывающийся список всех доступных локалей.

Откуда этот список заполнен?

(Я хочу сравнить настройки для каждой локали; я в порядке, как это сделать, но мне нужен список имен локалей для циклического перебора.)


РЕДАКТИРОВАТЬ: После просмотра моего каталога Windows (вероятно, следует упомянуть, что я использую XP), файл

C:\WINDOWS\system32\locale.nls

выглядит как вероятный кандидат, но это бинарный файл. Это то, на что я должен смотреть, и если да, то как мне это прочитать?

Ричард Коттон
источник
Я столкнулся с подобной ситуацией совсем недавно. Затем я узнал, что нет прямого способа узнать локали, поддерживаемые Windows. Я написал программу для печати всех поддерживаемых имен локалей под Windows. Вот ссылка на stackoverflow.com/questions/27614666/… . У меня также есть исполняемый файл, если хотите.
user1

Ответы:

9

Microsoft не делает это легким для вас. Файл NLS, упомянутый в вопросе, содержит информацию о локали, но он находится в HEX. Даже с шестнадцатеричным редактором, содержимое далеко не читаемо человеком. Я решил воспользоваться альтернативной стратегией, вдохновленной ответом r0ca.

Существует более точный список доступных локалей, опубликованных Microsoft . К сожалению, даже этот список не совсем прав. (Я установил все доступные локали, и у меня есть Nothern Sotho, которого нет в списке Microsoft, но нет традиционного испанского, современного испанского или македонского. Украинский присутствует в списке дважды.)

Имена не совсем верны в списке Microsoft.

Как правило, имена должны иметь форму «Language» или «Language_Country Name», например «English» или «English_United Kindom»

Это означает, что подчеркивания после первых должны быть заменены пробелами, а имена людей должны быть заменены названиями стран, например, «Malay_Brunei_Darussalam» становится «Malay_Brunei Darussalam», «Dutch_Belgian» становится «Dutch_Belgium»

Есть много других странностей. Латинские, кириллические и некоторые другие слова должны быть заключены в скобки, например, "Serbian_Cyrillic_Bosnia_Herzegovina" становится "Сербской (кириллицей) _Босния и Герцеговина"

Точно так же "Sami_Inari" становится "Sami (Inari) _Finland")

Есть еще много примеров того, как угадывать правильные названия стран "English_Philippines" становится "English_Republic of Philippines"

Я понял большинство этих исключений, изменив локаль Windows с панели управления, затем загрузив R и набрав

Sys.getlocale()

К сожалению, этот метод в настоящее время не работает с индийскими локалями (плюс несколько других). Смотрите отчет об ошибке здесь .

Richard Cotton
источник
5

У вас есть все они перечислены здесь . Я надеюсь, что это то, что вы ищете

r0ca
источник
Спасибо, хотя я действительно хочу список языков, доступных в моей системе. Например, у меня не установлен китайский, но есть северный сото (которого не было в списке). (Пойди разберись с этими параметрами ...) Дело в том, что Windows должна хранить список того, что где-то установлено; Я просто не могу найти это.
Ричард Коттон
Все еще пытаюсь заставить работать этот читатель .nls ... Черт возьми!
r0ca
Спасибо за вашу настойчивость. Кажется, что последняя версия считывателя NLS от Gudu Software повреждена. Я послал им по электронной почте, чтобы сказать им, поэтому нам придется подождать и посмотреть.
Ричард Коттон
Да, у меня было то же самое, но я не писал по электронной почте. Также пробовал с нескольких зеркал, но ... не повезло!
r0ca