便携式语言环境代码

时间:2015-09-23 06:33:05

标签: python windows locale

当我在linux上的python 3中设置“hr_HR.UTF-8”时,一切都很顺利。当我在Windows中执行此操作时,它会失败:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\nskoric>python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, "hr_HR.UTF-8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\locale.py", line 592, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

我做了一些谷歌搜索,结果证明Windows使用它自己的语言环境代码标准。所以,我有两个问题:

  1. 克罗地亚语的Windows语言环境代码是什么? (未提及here,最明显的“hr-HR”不起作用)
  2. 设置区域设置代码的可移植方式是什么? (有吗?或者我应该检查哪个系统正在使用?)
  3. 谢谢!

    编辑

    通过更多的Google搜索,我找到了locale.locale_alias,在Windows上它包含:

    'hr': 'hr_HR.ISO8859-2',
    'hr_hr': 'hr_HR.ISO8859-2',
    'croatian': 'hr_HR.ISO8859-2',
    

    我尝试了hr_HR.ISO8859-2,hr和hr_hr,都失败了。唯一被取代的是克罗地亚人。所以,这部分回答了我的第一个问题,但我仍然不明白 - 为什么那3个失败而最后一个被取代: - (

    EDIT2:

    这是我的最终解决方案。如果有人知道更优雅的 - 请分享: - )

        try:
            locale.setlocale(locale.LC_NUMERIC, "hr_HR.UTF-8")
        except locale.Error:
            locale.setlocale(locale.LC_NUMERIC, "croatian")
    

0 个答案:

没有答案