这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版 | |||
knowledge:superslicer:2022011001 [2022/02/03 01:29] – [场景5、通过其他具有完整语言包的PO文件来汉化SuperSlicer] 弘毅 | knowledge:superslicer:2022011001 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 如何翻译SuperSlicer ====== | ||
+ | 我们使用 GNUgettext 从项目中提取字符串资源,使用 PoEdit 来编辑翻译。 | ||
+ | 这些可以在这里下载: | ||
+ | |||
+ | https:// | ||
+ | \\ GNUgettext 包包含一组工具,用于从源代码中提取字符串并创建翻译目录。 | ||
+ | |||
+ | https:// | ||
+ | \\ PoEdit 为翻译人员提供了良好的界面。 | ||
+ | |||
+ | 安装 GNUgettext 后,建议将 gettext/bin 的路径添加到 PATH 变量中。 | ||
+ | |||
+ | GNUgettext 的完整手册可以在这里看到:http:// | ||
+ | |||
+ | |||
+ | ===== 场景1. 如何添加翻译或修复现有翻译 ===== | ||
+ | |||
+ | - 从此处的相应文件夹中获取 PO 文件:https:// | ||
+ | - 在 PoEdit 中打开此文件为“编辑翻译” | ||
+ | - 将您的更正应用于翻译 | ||
+ | - 将更改后的 Slic3r.po 和 Slic3r.po(将在 PoEdit 中保存 Slic3r.po 后自动创建)推送回输入文件夹。 | ||
+ | |||
+ | ===== 场景 2. 如何添加新的语言支持 ===== | ||
+ | |||
+ | - 在此处获取文件 Slicer.pot:https:// | ||
+ | - 在 PoEdit 中打开“创建新翻译” | ||
+ | - 选择翻译语言(例如法语)。 | ||
+ | - 结果,您将拥有 fr.po - 包含法语翻译的文件。注意。翻译完成后,您需要: | ||
+ | * 将文件重命名为 Slicer.po | ||
+ | * 单击“保存文件”按钮。Slicer.mo 将立即创建 | ||
+ | * Slicer.po 和 Slicer.mo 都必须保存在这里:https:// | ||
+ | |||
+ | ===== 场景 3. 在向 Slicer 实施功能时如何添加新的文本资源 ===== | ||
+ | |||
+ | Slicer 中可用于翻译的每个字符串资源都需要使用 L() 宏进行显式标记,如下所示: | ||
+ | < | ||
+ | auto msg = L(" | ||
+ | </ | ||
+ | 要获得翻译的文本,请使用所需的宏/ | ||
+ | |||
+ | ===== 场景4、如何使用GNUgettext本地化自己的应用程序,以Slicer为例 ===== | ||
+ | - 为方便起见,使用此宏创建文件列表L(s)。我们有 https:// | ||
+ | - 使用 GNUgettext 命令创建模板文件(*.POT): | ||
+ | *< | ||
+ | *使用标志 --from-code=UTF-8 指定源字符串采用 UTF-8 编码使用标志 --debug 正确提取格式化的字符串(使用 %d, %s 等) | ||
+ | - 如上所述为您的项目创建 PO 和 MO 文件。 | ||
+ | - 要将旧 PO 文件与创建的新 POT 文件中的字符串合并,请使用命令: | ||
+ | *< | ||
+ | *使用选项-N在未找到完全匹配时不使用模糊匹配。 | ||
+ | - 要将旧 PO 文件与来自新 PO 文件的字符串连接起来,请使用命令: | ||
+ | *< | ||
+ | - 使用命令创建英文翻译目录: | ||
+ | *< | ||
+ | *请注意,在此目录中,初始文本和翻译的字符串将完全相同。 | ||
+ | |||
+ | 当您有Catalog 翻译在PoEdit 中打开POT 或PO 文件并开始翻译时,注意每一个空白和标点符号是非常重要的。尤其是格式化字符串。(使用 %d、%s 等) | ||
+ | |||
+ | ------------------- | ||
+ | SuperSlicer的resources\localization目录中,有Slic3r.pot翻译模板。 | ||
+ | |||
+ | * 我们使用Poedit打开zh_cn中的Slic3r.po | ||
+ | * 编目-从POT文件更新 | ||
+ | * 选择Slic3r.pot翻译模板 | ||
+ | |||
+ | 这样子我们就把简体中文更新到最新的翻译模板了。 | ||
+ | |||
+ | ===== 场景5、通过其他具有完整语言包的PO文件来汉化SuperSlicer ===== | ||
+ | 经过一段时间的测试研究,发现官方给的通过Python脚本的方法更新中文PO文件是有问题的,会造成PO文件中大量的错误。 | ||
+ | |||
+ | UI的汉化通过官方给出的PO更新方法也会丢失,自己手工加回去无法正常工作。 | ||
+ | |||
+ | 我们发现FR也就是法语的语言包是最全的,这个可能和主团队开发人员是法国人有关系。那么我们可以通过尝试通过把法语的PO文件,提取成更新用的POT,然后在用这个POT更新简体中文语言包进行升级。 | ||
+ | |||
+ | 我们使用GITHUB上的一个PO转POT项目。 | ||
+ | |||
+ | https:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | https:// | ||
+ | |||
+ | 然后我们把FR的PO文件,通过这个网页转换为POT文件。 | ||
+ | |||
+ | 再通过POEDIT打开ZH_CN的PO文件,通过POT文件更新。 | ||
+ | |||
+ | 这样子就把最新的词条全部更新进去了。 | ||
+ | |||
+ | 这样子更新的好处是词条是完整的,PO文件还不会报错。 |