2

我有一个在 Python 2.7.5 上使用 PyQt5 (Qt5.1.1) 开发的应用程序。该应用程序广泛使用使用from __future__ import unicode_literals. 源代码已设置# -*- coding: utf-8 -*-,因此 unicode 字符按原样写入源代码(无需转义)。

pylupdate5在提取字符串并可以使用 Qt Linguist 进行翻译并重新应用的情况下,使用“作品”进行翻译。这适用于包含非 ASCII 字符和不包含非 ASCII 字符的字符串。但是,任何包含 unicode 字符的字符串最终都会在.ts文件中包含乱码。例如,后跟省略号的“打开”输出为:

&Open…

单词后面的位是省略号字符 (E2 80 A6) 的 unicode 代码单元,尽管这â ¦在 Qt Linguist 中出现。翻译它(并在翻译中输入正确的 unicode 可以正常工作)。用更正的 unicode替换文件â ¦.ts的 会阻止生成的翻译工作,这表明tr也看到了乱码版本。

那么这里发生了什么?

4

1 回答 1

1

我对此几乎没有经验,但是查看我生成的一个 .ts 文件,第一行是 <?xml version="1.0" encoding="utf-8"?> 并且 BBEdit 确认它是 utf-8 编码的. 在这种情况下,应正确显示非拉丁 1 字符。事实上,我只是在 .ts 文件中的一个字符串中编辑了一个省略号,然后在 Linguist 中打开它并正确显示。因此,它可能只是源文件或 .ts 文件的文件编码的情况。

于 2014-03-28T19:23:48.787 回答