我正在尝试如何为PyQt tr()
或{
以下是字符串示例:
self.tr('λληνικά')
self.tr(u'εληνικά')
self.tr('ελνικά'.encode('utf-8'))
self.tr(u'ελληικά'.encode('utf-8'))
self.trUtf8('λληνικ')
self.trUtf8(u'εληνιά')
self.trUtf8('ελνι'.encode('utf-8'))
self.trUtf8(u'ελλκά'.encode('utf-8'))
在Qt语言学家中,self.tr
的显示为胡言乱语。带有self.trUtf8
的显示良好,但在应用pylupdate4
时会触发警告:
前导的u和.encode('utf-8')
似乎没有任何区别,至少在解析时(使用pylupdate4
)。在
正确的方法是什么?在
我还想知道这条线的作用:
QtCore.QTextCodec.setCodecForTr(QtCore.QTextCodec.codecForName("utf-8"))
但我知道它对pylupdate4
的文件解析没有影响,它只会在执行时产生影响。在
tr
和{UTF-8
。在就其本身而言,
tr
并不意味着字符串的编码,因此您必须只向它传递ascii字符串,或者使用setCodecForTr
显式设置适当的编码。但你只能在运行时产生这种效果。为了使pylupdate
也使用该编码,您需要在pro文件中设置相应的变量:(似乎
pylupdate
将假定latin-1
编码,因此该编码中不可用的任何字符都将以mojibake结尾)。在至于警告消息:它们可能反映了Qt docs for trUtf8中关于可移植性问题的相应警告。在
处理的最佳方法是使用
tr
,并显式地将编码设置为UTF-8
。trUtf8
函数在Qt4中实际上已过时。它甚至不存在于Qt5中,Qt5假设所有东西都是UTF-8
,所以最终您甚至不需要显式地设置编码。在相关问题 更多 >
编程相关推荐