我有英语和匈牙利语的简单应用程序。所有可本地化的都在单独的模块中-可本地化.py,例如:
#!/usr/bin/python
# -*- coding: utf-8 -*-
...
...
if language == "hun":
LOGIN_LABEL_USERNAME_STR = 'Felhasználó'
LOGIN_LABEL_PASSWORD_STR = 'Jelszó'
elif language == "eng":
LOGIN_LABEL_USERNAME_STR = 'Username'
LOGIN_LABEL_PASSWORD_STR = 'Password'
但是当我在loginDialog.py公司名称:
^{pr2}$我得到Felhasználó
和{Felhasználó
和{
为什么不在
localizable
模块中使用unicode
对象,而不是没有编码的bytestrings?在这对我有预期的效果。在
您可能还需要考虑使用Qt提供的built-in functions。在
这是因为源文件是UTF8编码的,这意味着字符串
Felhasználó
在源代码文件中用字节46 65 6c 68 61 73 7a 6e c3 a1 6c c3 b3
表示。如果您将这个字节数组打印出来,就好像它们是用拉丁语1编码的,那么您将得到Felhasználó
。在此外,您将这些UTF-8编码的字节作为一个纯字符串传递给Qt,Qt似乎假定它是拉丁1编码。这意味着不再假设字节}是{},这是LATIN1的情况。在
c3 b3
(ó
)是ó
的代码,而是假设c3
是普通的Ã
,而{frb的答案是正确的方法,因为通过发送一个
unicode
字符串,您已经完成了所有的解释,并且没有给Qt留下模糊性。在相关问题 更多 >
编程相关推荐