Localisation/zh-cn

概述

本地化 通常是为软件提供多语种的用户界面的过程. 在FreeCAD中,你可以在Edit → Preferences → General设置用户界面的语言。FreeCAD 使用Qt 启用多语种支持. 在Unix/Linux系统上,FreeCAD 默认使用系统当前区域设置。

协助翻译 FreeCAD

用户可以为FreeCAD作出贡献的重要的事情之一(如果他们不具备编程技能)是帮助其将源代码、wiki、网站、文档等内容翻译成其他语言。以下是具体的做法。

翻译FreeCAD源码

FreeCAD使用一个名为Crowdin的第三方在线协作翻译系统。

它是一个专利软件,但是的FOSS项目免费。以下是关于如何使用它的说明:

如果您正在参与FreeCAD的翻译工作,并希望在下一个版本发布前及时知晓,以便有足够时间审核您的翻译,请订阅一个Crowdin上的FreeCAD翻译团队。

Note: 有关如何使用 Crowdin 的详细信息。请访问Crowdin Administration页面。

翻译外部工作台

访问翻译外部工作台.

FreeCAD 翻译人员首选项

从FreeCAD 0.20开始,可以手动将这些变量加入 user.cfg文件的BaseApp/Preferences/General部分,以辅助开发新的翻译功能。

AdditionalLanguageDomainEntries - 要向 FreeCAD 添加源代码当前不支持的全新语言,您可以使用此用户首选项将其添加到可用语言列表中。语言的格式为 "语言名称"="代码";例如:

<FCText Name="AdditionalLanguageDomainEntries">"Esperanto"="eo";"French"="fr";</FCText>

AdditionalTranslationsDirectory - 添加一个额外的目录,供 FreeCAD 搜索 *.qm 文件。此位置的优先级高于 $userAppDataDir/translations 和 $resourceDir/translations。例如:

<FCText Name="AdditionalTranslationsDirectory">C:/Users/FreeCADUser/TestTranslations</FCText>

翻译 FreeCAD wiki

这个wiki包含有大量内容,其中大部分内容构成了使用手册。你可以从主页开始浏览这些文档,或者查看用户手册在线帮助目录

要翻译wiki,你必须拥有wiki编辑权限;请参阅 如何获得wiki的编辑权限?

你还应该具备足够的wiki标记知识,并遵循WikiPages中描述的一般样式指南。

Mediawiki 翻译扩展

当wiki从SourceForge迁移后,用户Yorik安装了 MediaWiki's Translation extension,这个扩展可以方便地翻译页面。翻译扩展的优点包括:现在可以翻译页面标题,它可以跟踪翻译进度,会在原始页面更新时发出通知,并且能够保持翻译与英文原文同步。

该工具的文档位于 Help:Extension:Translate,并且是 MediaWiki 语言扩展包 的一部分。

要快速开始准备翻译页面,请阅读页面翻译示例。需要用一对标签将整个页面括起来才能激活翻译系统:

<translate> ... </translate>

页面还需要标记为待翻译。

要查看翻译工具的使用示例,请访问主页。你会在页面顶部看到一个自动生成的语言栏。点击Deutsch(德语),即可进入Main Page/de。在标题“Hauptseite”(英文为“Main Page”)下方,您可以看到本页面是主页的翻译版本,翻译完成度为XX%,其中XX为当前的翻译完成度百分比。点击页面顶部的“翻译”按钮,即可启动翻译工具,更新、更正和复核现有翻译。

如果您访问 主页,您会发现您无法再通过单击 [编辑] 标签直接编辑页面,并且顶部链接“编辑”已被“翻译”链接取代,该链接会打开翻译工具。

添加新内容时,应先创建英文页面,然后再翻译成其他语言。如果有人想要更改或添加页面内容,则应先修改英文页面。

如果您不确定如何进行翻译,请随时在 FreeCAD 论坛开发 → Wiki 子论坛特定语言子论坛 中寻求帮助。

重要说明

凡是拥有“编者”权限的wiki用户,都可以启动翻译工具来编写、保存和复核翻译。

但是,只有拥有“管理员”权限的用户才能将页面标记为需要翻译。未标记为需要翻译的页面将无法使用翻译扩展,也无法与英文信息正确同步。

左侧边栏也可以翻译,但只有管理员才能修改网站的这一元素。请按照 本地化侧边栏 上的专门说明进行操作。

首次将页面切换到新的翻译系统时,所有旧的“手动”翻译都会丢失。要恢复翻译,您应该在切换之前保存一份旧文本的离线副本。然后,您可以使用这份旧的翻译文本来填充新系统中的翻译单元。您也可以从历史记录中打开早期版本,并以此方式获取旧文本。对于每个翻译过的语言页面,都需要执行此操作。

翻译 FreeCAD 文档

根据普遍共识,wiki中的参考页面是英文页面,应该首先创建该页面。如果您想更改或添加页面内容,应该先在英文页面上进行操作,更新完成后再将修改内容同步到翻译后的页面。

旧翻译说明

以下说明仅供历史背景参考。翻译工作请使用上文所述的MediaWiki翻译扩展新系统。

首先需要检查您的语言是否已开始手动翻译(查看左侧边栏"manual"栏目)。
若尚未开始,请前往论坛申启新语言翻译,我们将为您要翻译的语言创建基础框架。
随后您需获取维基编辑权限
若您的语言已在列表中,请查看尚未翻译的页面(红色条目)。操作很简单:进入红色标记的页面,复制粘贴对应英文页面内容后开始翻译
请务必保留原英文页面的所有标签和模板。部分模板已有本地化版本(例如法语Docnav模板名为Docnav/fr)。几乎所有链接中都需要使用斜杠和语言代码。可参考其他已翻译页面的实现方式。
在分类标签中添加斜杠和语言代码,例如:[[Category:Developer Documentation/zh]]
如有不确定之处,欢迎到论坛请专人核查您的翻译成果。

手册页面常用四个模板,这些模板均有本地化版本(Template:Docnav/zh、Template:zh等):

页面命名规范
请注意:由于Sourceforge对MediaWiki引擎的限制,翻译页面必须保留原始英文名称,并附加斜杠和语言代码。例如西班牙语版About FreeCAD应命名为About FreeCAD/es,波兰语版为About FreeCAD/pl。这样当翻译者离开后,不掌握所有语言的维基管理员仍能识别页面用途,便于维护并避免页面丢失。

若需Docnav模板显示本地化页面链接,可使用重定向页。它们实质上是指向实际页面的快捷链接,以下以法语版About FreeCAD为例:

  • About FreeCAD/fr 是内容页面
  • À propos de FreeCAD 页面包含此代码:
#REDIRECT [[About_FreeCAD/fr]]
  • About FreeCAD/fr 页面中的Docnav代码显示为:
{{docnav/zh|[[Online_Help_Startpage/zh|FreeCAD在线帮助门户]]|[[Feature_list/zh|功能列表]]}}

其中"FreeCAD在线帮助门户"重定向至Online_Help_Startpage/zh,"功能列表"重定向至Feature_list/zh。

翻译 FreeCAD 网站

FreeCAD 网站的翻译现在通过 Crowdin 完成。文件名为 homepage.po

开发 - 如何加入本地化

本节内容面向希望在其代码中添加本地化的开发者。

准备 FreeCAD/master 模块以进行翻译

以下是 FreeCAD 翻译流程的各个步骤:

以上所有步骤均由“翻译脚本”执行,这些脚本由管理员定期运行。

准备模块进行翻译非常简单。首先,您需要确保在 myModule/Gui/Resources 目录下存在一个名为“translations”的目录。然后,在“translations”目录下打开终端窗口(或 Windows/OSX 等效窗口),并输入以下命令:

lupdate -t​​s myModule.ts

这将创建一个空的翻译文件。完成此操作后,您需要确保翻译脚本已按照此 拉取请求 中的说明进行更新。

对开发者而言,接下来的所有步骤都是自动的。管理员会提取文本字符串,译者会进行翻译,然后管理员会提取翻译结果并更新 FreeCAD/master。

准备第三方模块或宏进行翻译

第三方模块或宏的转换方式大致相同,只是您需要自行完成一些工作。 此论坛讨论详细介绍了具体步骤。

更新:参阅 翻译外部工作台

自动更新 Crowdin 翻译

目前,FreeCAD 维护者使用 Crowdin API(通过 Crowdin 脚本)将翻译内容拉取到 Crowdin 并推送回 Github 代码库。Crowdin API 使 FreeCAD 维护者能够自动化项目翻译工作流的某些方面,更多信息请参阅 Crowdin API 文档

相关页面

脚本

另请参阅: FreeCAD 脚本基础知识

要获取 FreeCAD 界面支持的语言字典,请使用 FreeCADGui 模块的 supportedLocales 方法。

locales = FreeCADGui.supportedLocales()

执行后,locales 将包含:

{'English': 'en', 'Afrikaans': 'af', 'Arabic': 'ar', 'Basque': 'eu', 'Catalan': 'ca', 'Chinese Simplified': 'zh-CN', 'Chinese Traditional': 'zh-TW', 'Croatian': 'hr', 'Czech': 'cs', 'Dutch': 'nl', 'Filipino': 'fil', 'Finnish': 'fi', 'French': 'fr', 'Galician': 'gl', 'German': 'de', 'Hungarian': 'hu', 'Indonesian': 'id', 'Italian': 'it', 'Japanese': 'ja', 'Kabyle': 'kab', 'Korean': 'ko', 'Lithuanian': 'lt', 'Norwegian': 'no', 'Polish': 'pl', 'Portuguese': 'pt-PT', 'Portuguese, Brazilian': 'pt-BR', 'Romanian': 'ro', 'Russian': 'ru', 'Slovak': 'sk', 'Slovenian': 'sl', 'Spanish': 'es-ES', 'Swedish': 'sv-SE', 'Turkish': 'tr', 'Ukrainian': 'uk', 'Valencian': 'val-ES', 'Vietnamese': 'vi'}

要获取当前界面语言,请使用同一模块的 getLocale 方法:

locale = FreeCADGui.getLocale()

如果当前语言为英语,则 locale 将包含:

'English'

要获取相应的 语言代码,您可以使用:

locale = FreeCADGui.supportedLocales()[Gui.getLocale()]

如果当前语言为英语,则结果为:

'en'

要设置当前界面语言,请使用同一模块的 setLocale 方法。您可以指定语言或语言代码:

FreeCADGui.setLocale('Russian')
FreeCADGui.setLocale('ru')