Если Вы открываетесь Regional and Language Options
(через Control Panel
), и нажмите Regional Options
вкладка, затем существует выпадающий список всех доступных локалей.
Откуда этот список заполняется?
(Я хочу сравнить настройки для каждой локали; все хорошо с тем, как сделать это, но мне нужен список имен локали для цикличного выполнения.)
Править: После просматривания моего каталога окон (должен, вероятно, упомянуть, что я использую XP), файл
C:\WINDOWS\system32\locale.nls
похож на вероятного кандидата, но это - двоичный файл. Это то, что я должен смотреть на, и если так, как я читаю его?
Microsoft не помогает Вам. Файл NLS, упомянутый в дозе вопроса, содержит информацию о локали, но это находится в ШЕСТНАДЦАТЕРИЧНОМ ЧИСЛЕ. Даже с Hex-редактором, содержание совсем не человекочитаемо. Я решил взять альтернативную стратегию, вдохновленную ответом r0ca.
Существует более точный список доступных локалей, опубликованных Microsoft. К сожалению, даже этот список не совершенно правилен. (Я установил все доступные локали, и у меня есть Nothern Sotho, который не находится в списке Microsoft, но не Традиционном испанском, современном испанском или македонском языке. Украинский язык находится в списке дважды.)
Имена не совершенно правильны в списке Microsoft также.
В целом имена должны иметь форму "Язык" или "Имя Language_Country", например, "Английский" или "English_United Kindom"
Это означает, что символы нижнего подчеркивания после первого должны быть заменены пробелами и что люди, имена должны быть заменены названиями страны, например, "Malay_Brunei_Darussalam", становятся "Malay_Brunei, Даруссалам" "Dutch_Belgian" становится "Dutch_Belgium"
Существует много других причуд. Латинский, кириллица и некоторые другие слова должны быть заключены в скобки, например, "Serbian_Cyrillic_Bosnia_Herzegovina" становится "сербская (кириллица) _Bosnia и Герцеговина"
Аналогично "Sami_Inari" становится "Sami (Инари) _Finland"
Существует намного больше примеров необходимости предположить, что надлежащие названия страны "English_Philippines" становятся "English_Republic Филиппин"
Я понял большинство этих исключений путем изменения моей локали Windows от панели управления, затем загрузки R и ввода
Sys.getlocale()
К сожалению, этот метод в настоящее время не работает с индийскими локалями (плюс немногие другие). См. отчет об ошибках здесь.