Sam*_*odt 7 python windows translation gettext
这段特殊的代码在Linux上运行良好,但在Windows上运行不正常:
locale.setlocale(locale.LC_ALL, '')
gettext.bindtextdomain('exposong', LOCALE_PATH)
gettext.textdomain('exposong')
Run Code Online (Sandbox Code Playgroud)
代码来自这里
即使我指定了区域设置locale.setlocale(我尝试了不同的格式),它也不起作用.一个问题可能是环境变量中未设置区域设置(但我使用的是德语Windows版本;在XP和Vista上测试过).如果我"Set Lang=de_DE"在命令行上执行,一切都按预期工作.
有任何想法吗?
在Python的gettext标准模块不使用从Windows设置startdard语言设置,而是依赖于存在的环境变量之一:LANGUAGE,LC_MESSAGES,LC_ALL或LANG.(我想说这是将Unix/Linux库轻松移植到Windows的示例.)
上面提到的环境变量在典型的Windows机器上不存在,因为OS Windows和本机应用程序使用来自注册表的设置.因此,您需要从Windows注册表中获取语言设置并将其置于进程环境中.
您可以使用我的帮助程序模块:https://launchpad.net/gettext-py-windows
此帮助程序从Windows设置获取语言设置,并为当前进程设置LANG变量,因此gettext可以使用此设置.
因此,如果有问题的申请不是您的,您可以执行以下操作.像往常一样安装我的gettext助手python setup.py install.然后添加以下行locale.setlocale(locale.LC_ALL, ''):
import gettext_windows
gettext_windows.setup_env()
Run Code Online (Sandbox Code Playgroud)
就这样.
用户bialix的解释是正确的.但不是使用另一个模块,这对我有用:
if sys.platform.startswith('win'):
import locale
if os.getenv('LANG') is None:
lang, enc = locale.getdefaultlocale()
os.environ['LANG'] = lang
Run Code Online (Sandbox Code Playgroud)
也就是说,从语言环境模块获取语言环境并设置环境变量.
它仅在Windows 7上进行了测试,因此请在使用前在其他版本上进行检查.
| 归档时间: |
|
| 查看次数: |
2346 次 |
| 最近记录: |