2012-05-13 2 views
1

Есть ли способ получить язык запущенной операционной системы? Я хотел бы иметь возможность изменить язык программы при ее запуске.Язык операционной системы?

+0

Если вы хотите следовать лучшим практикам i18n, вы не должны *** изменять *** язык при запуске приложения, вы должны выбрать *** язык пользователя *** при запуске приложения. Как видно из приведенных ниже ответов, в LUA нет стандартной многоплатформенной платформы. Хуже того, существуют различия в собственных функциях ОС и OS LCID на Windows *** - это не то, что вы ищете, вы ищете User LCID (поверьте мне, это может отличаться). –

+0

Да, спасибо. Я позволю пользователю выбрать его любимый язык, это лучшее решение. Спасибо всем! – user1248569

+0

Нет, это худшее решение. Представьте себе, что все приложения в вашей системе сделают это - они в основном заставят вас выбирать язык все время (или даже при первом запуске). Я не знаю о вас, но в моем случае вы услышите много ф-слов в таких обстоятельствах. Есть причины, по которым операционные системы имеют настройки региональных настроек, поэтому вы можете выбрать свои настройки один раз. Что касается LUA, я уверен, что кто-то написал хороший сценарий для обнаружения языка, а именно Google. –

ответ

0

Может

 print(os.setlocale(nil)); 

может дать вам необходимую информацию, хотя вы, вероятно, нужно разобрать его немного. Или вы можете получить доступ к соответствующему env var, например.

print(os.getenv("LANG")); 

дает en_GB.utf8 в моей системе, поэтому вы можете выводить мою систему «переговоры» по-английски.

+0

Спасибо за ваш ответ, но я получаю «ноль», когда я пробую его с os.getenv. Может быть, есть еще один способ решить эту проблему? – user1248569

+0

, что envar не установлен, а в системах «* nix» (он тоже может на окнах, но если вы видите нуль, это не так!); если вы находитесь в окнах, вы можете попробовать системный способ, например, копать регистр или использовать какой-либо API (GetUserDefaultLangID должен делать); то, конечно, ваша программа не будет переносимой. Я не знаю, есть ли у lua модуль «win32» – ShinTakezou

1

Эта платформа специфична и выходит за рамки стандартной библиотеки Lua. В некоторые случаях вы можете выяснить это из getenv или что-то в этом роде, но вы не можете полагаться на это кросс-платформенным способом.

Вы можете написать небольшой модуль расширения, который вы переносите на различные платформы, необходимые для поддержки, которые предоставляют вам эту информацию для конкретной операционной системы.

Смежные вопросы