如何在python中检测操作系统默认语言?

时间:2010-08-06 15:31:06

标签: python

是否有任何通用的方法来检测操作系统默认语言? (无论运行代码的操作系统是什么)

import os
os.getenv('LANG')

以上代码在Linux下运行,是否可以在其他操作系统下运行?

3 个答案:

答案 0 :(得分:23)

您可以使用getdefaultlocale function in the locale module。它返回元组中的系统默认语言环境的语言代码和编码:

>>> import locale
>>> locale.getdefaultlocale()
('en_GB', 'cp1252')

答案 1 :(得分:23)

您不能相信语言环境模块检测操作系统语言 !!!

在未经过验证的情况下使用此信息的人,如果用户的操作系统语言与区域语言不同,则会有一个程序在世界范围内失败。

它们不同,(1)操作系统语言和(2)本地化信息。

MSDN声明“区域设置ID反映了特定地理区域的本地惯例和语言。”,http://msdn.microsoft.com/en-us/library/8w60z792.aspx

和python docs,

“POSIX语言环境机制允许程序员处理应用程序中的某些文化问题,而无需程序员知道执行软件的每个国家/地区的所有细节。” https://docs.python.org/2/library/locale.html

我的Windows7是英文的。但我住在西班牙......所以我的地方是'es_ES'..不是'en_EN'

我不知道跨平台的方式,对于linux你已经有了它。对于Windows我会给你:

另一篇文章谈到使用win32 GetSystemDefaultUILanguage Find out the language windows was installed as

但是如果你想获得windows语言标识符,我建议使用 GetUserDefaultUILanguage(),因为如MSDN所述,将递归搜索直到达到语言:

“返回当前用户的用户UI语言的语言标识符。如果当前用户尚未设置语言,则GetUserDefaultUILanguage返回系统的首选语言集。如果没有为系统设置首选语言,则返回系统默认UI语言(也称为“安装语言”)。有关用户UI语言的更多信息,请参阅用户界面语言管理。“

代码:

>>> import locale
>>> locale.getdefaultlocale()
('es_ES', 'cp1252')            # <------------- Bad! I'm on english OS.

>>> import ctypes
>>> windll = ctypes.windll.kernel32
>>> windll.GetUserDefaultUILanguage()
1033
>>> locale.windows_locale[ windll.GetUserDefaultUILanguage() ]
'en_US'          # <----------- Good work

答案 2 :(得分:-1)

最好使用 windows 命令行...

import os

current_locale = os.popen('systeminfo | findstr /B /C:"System Locale"').read()

https://www.tenforums.com/tutorials/132175-see-current-system-locale-windows-10-a.html