Zh-hans/翻译
(部分代码块被错误翻译,请暂时对照英文版查看)
Contents
- 1 概述
- 2 可用资源
- 3 如何直接将更改提交到GnuCash
- 4 翻译程序
- 5 检查Repo gnucash的doc目录中的文件
- 6 翻译《 GnuCash指南和帮助》
- 7 如何转换包含新帐户层次结构的文件
- 8 如何创建本地化的所得税表
- 9 如何翻译网站
- 10 给开发人员的提示
- 11 项目维护者
- 12 背景
概述
GnuCash有几个需要翻译或本地化的独立区域,这些区域按优先级排列:
- 该词汇表
- 消息目录 形式的参考, 其中包含大约 200个 术语,这些术语在整个GnuCash及其 解释 中通常使用 。 优选地,应该首先为每种新语言翻译它,以为其他部分定义一致的术语。
- 该计划
- 它的 消息目录 包含应用程序用户界面的所有文本消息。 目前,它由大约 5000个 字符串组成。 但是,并非所有的事物都同样重要。
- 目前,某些语言在 #translationproject.org上 维护 : [1]
- 对于任何其他语言
- 如果您使用其中一项服务, 请至少阅读 #Adjust特殊消息 和 #Special字符及其他提示 。
- 在Windows安装程序
- 它包含约 20个 字符串。
- 该帐户模板
- 一组准备使用会计科目表段 为个人用户 可以混合和创建一个新的一个新的GnuCash文件与目前在相映成账户的全图 115 翻译的帐户名。
- 如果您的政府或其他机构 为企业用户 提供了特定的模板 ,您也可以创建它们。
- 该文档
- 帮助手册和 教程及概念指南 。 这些文档说明了如何使用GnuCash。 它们用DocBook(一种XML变体)编写。
- 该网站
- 虽然大多数都是用PHP / HTML编写的,但它也使用 消息目录 。 目前它有 430条 消息。
- 从理论上讲,也可以将 新闻 目录中的 最新公告 转换为特定于语言的子文件夹,但通常情况下还有更重要的任务。
- 在所得税表
- 他们需要您的区域税收规则的一些知识,并且与 帐户模板有关 。
- 货币
- GnuCash使用ISO 4217 货币 代码和名称的翻译。 这由 ISO代码团队 维护 。 如果您的语言缺失或有问题,请与他们联系或提供帮助:
- (可选)您也可以 #检查Repo gnucash的doc目录 文件中的文件。
可用资源
gnucash.org和其他地方有很多资源可以为您提供支持。 不要犹豫,使用它们。
gnucash.org
我们在 此Wiki中 为您收集了许多有用的信息 -
' 从 主页上 浏览 ,或在“ 特殊:类别”中浏览, 或使用 搜索 功能-
并在 网站 https://www.gnucash.org上 。
我们有几种 沟通渠道 和一些其他有用的工具:
- IRC
- 获得帮助的最快方法是使用 Internet中继聊天 IRC ,因为许多开发人员都在那里闲逛并渴望提供帮助。
- 邮件列表
- 译者可能会发现两个或三个感兴趣的gnucash邮件列表。 如果您无法在他们的 Mailing_Lists#Mailing List档案中 找到问题的答案,请随时提出问题 。
- 对于 特定 于语言和地区的问题 ,您应该在其中讨论术语并要求对您的作品进行校对,请使用您的语言邮件列表。 目前我们有 gnucash- [pt_] br , de , es , fr , it , nl 。
- 如果您的语言不存在,或者那里没有人回答,请使用英语列表:
- 常规使用的问题 和解答可以在 gnucash-users 邮件列表中找到,
- 具体的 开发问题 请转到 gnucash-devel 列表。
- 如果您不喜欢上面列表中的繁忙流量,则应该至少订阅 gnucash-announce 列表,以获取有关新的:releases的信息。
要 订阅 或 查看 这些列表的存档 ,请 单击邮件列表 的链接 。
translationproject.org
该 翻译项目 协调 消息cataloges 几个 方案
如果您想帮助现有的翻译项目翻译或在其主持下添加新的翻译,请 使用其 团队页面 上的信息 与 语言团队 联系 。 [1]
- 协调消息目录翻译
- ;; 新邮件目录
- 翻译项目要求您使用现有翻译或 最新版本中的
gnucash.pot
作为翻译的基础。
- 更新消息目录
- 通常,您将从他们的站点中使用po文件,但有时我们会应用全局更改,例如从GUI标签中删除结尾的冒号。 在这种情况下,您可以通过合并 我们版本中的 此类更新来节省时间 。
- 其他组件
- Translation Project仅处理程序的消息目录,因此,如果您有 词汇表 , 帐户模板 或 文档翻译 …,则可以通过以下方式之一提交它们。
weblate.org
自2020年12月14 日起,可在 GnuCash @ Hosted Weblate 上获取 某些组件(当前 词汇表 , 程序 和 网站)的 翻译 。 请注意, # lateproject.org 管理的程序的语言 未在weblate中列出。
- 只需一个Web浏览器,无需其他任何软件即可做出贡献。
- 您已经可以 匿名 添加 建议 和 评论了 。
- 在此创建 帐户后 ,您可以编辑翻译。
- 如果您还有 GitHub 帐户,我们可以为您提供一些反馈。
- 如果您已经是 GnuCash翻译者 ,请告诉我们 在 TG群(点击加入):gnucash_en、irc://irc.gnome.org/gnucash ( 有关IRC的帮助 )或 通过发送到 gnucash-devel 列表的邮件,您的 Weblate 名称将成为该 Weblate / GnuCash的审阅者。
- 感谢 经验丰富的Weblate用户 对最佳配置的任何帮助 。 您可以通过 TG群(点击加入):gnucash_en、 irc://irc.gnome.org/gnucash 或 邮件列表 与GnuCash团队 联系 。
其他基于Web的翻译工具
存在几种用于翻译协调的服务,请参阅“ 改进本地化过程#基于Web的翻译工具” 。 由于我们没有使用它们的经验,请在使用它们之前联系gnucash-devel邮件列表。
古典直接贡献
如果您要处理翻译项目或新翻译未协调的翻译,并且想直接将其提交给GnuCash,请继续阅读。 如果它是现有翻译,请尝试首先使用消息目录中的联系信息与最后一位翻译联系。
如果您要开始新的翻译, 则从
tarball(其中包括po / gnucash.pot)
开始要容易得多
。 如果从 Git 克隆 开始,则 必须 先自己 构建 Gnucash才能生成 gnucash.pot
。
在其他网站上
- 通用翻译指南和提示
- 有关如何进行软件翻译的一般信息,可以在以下位置找到:
- 翻译项目
- 侏儒
- KDE
- 其他有用的网站
- ;* https://en.wikipedia.org/wiki/ 通常但并非总是如此, 对于特殊术语 , 它具有很好的解释和正确的语言链接。
- 有很多在线词典,使用诸如Google之类的搜索引擎来查找最合适的词典。
- 可以在www.yourdictionary.com上找到在线词典的索引和许多其他资源。
- 用您的语言和英语比较维基百科上的文章可能会有所帮助。
- 在特殊情况下, 也可以使用 欧洲联盟欧洲 主动术语 专业术语数据库 。
如何直接将更改提交到GnuCash
准备好要提交的翻译后,有以下三种选择:
在GitHub上的拉取请求
拉取请求是使您的工作得到应用的最快方法。
如果您已经是 github 用户,则可以将您的工作作为单独的分支发布到gnucash [-{[ht] docs | on-windows}]分支上,并将拉取请求发送给GnuCash团队。 如果您希望在请求完成之前继续工作,请简单地创建一个新的工作分支。 拉取请求完成后,您可以再次删除相关分支。 有关 详细信息, 请参见 Git 。
- 提交讯息
- 使用
L10N:<LL>
开始您的提交消息:
是<LL>-或下面的$ {LL}-是您的语言代码。 - 附加的输出
msgfmt -c --statistics ${LL}.po
- 例子
L10N:de:5423übersetzteMeldungen。
- 使用
Bugzilla的补丁
最简单的方法是使用 Bugzilla :
- [2] 如果您仍然没有 帐户 或 未登录 ,请 创建一个帐户 ,
- 创建 针对Gnucash组件翻译的增强 错误请求 ,选择补丁程序所基于的版本,然后
- 贴上补丁
包含旧文件(如果有)与新文件之间的差异:
- 如果已 安装 Git ,则创建补丁的最简单方法是
git format-patch origin/maint..maint
。 - 否则,你可以使用 diffutils的 :
diff -u[r] <original path> <modified path> > <name>.patch
。 有关info diff
详细信息, 请参见 。
邮件列表
您可以通过 gnucash-devel 邮件列表 将完整的邮件目录( .po
文件)通过 电子邮件发送 给开发人员 。 我们真的希望您使用Bugzilla或Github,因为它们丢失或遗忘的可能性要小得多,但是如果您发现这些问题太难了,我们将尝试在列表中列出您。 [3]
翻译程序
要开始翻译,如果您要开始新的翻译,则需要消息模板文件(gnucash.pot)或现有的消息目录(xx.po或xx_YY.po),其中xx是您所用语言的ISO代码,而YY是各种语言环境的ISO代码,请参阅 命名约定 )。 这些文件位于gnucash源文件中,您可以从我们的 git存储库中 获得,也可以 从 Sourceforge 下载最新 版本的 tarball获得 。 [4]
从Git获取源
GnuCash使用 Git 作为版本控制系统。 单击此处 以了解Git。
通常 要做的第一件事是 从git 下载 gnucash 的最新STABLE分支,称为 maint ,并进行编译。 请参阅翻译状态以选择要用于翻译的分支 。除非在“翻译状态”中有特别说明,否则 不要使用 master 分支 。 由于master 分支中 的文本 发生了很大变化,因此浪费时间进行翻译。 不用担心,当master 分支变得稳定时,STABLE分支中的现有转换将被合并。 您的工作不会丢失。 [5] ' '
通常签出当前的稳定分支:
git clone https://github.com/Gnucash/gnucash ${SOURCEDIR}
cd ${SOURCEDIR}
git checkout maint
上面的参数 $ {SOURCEDIR} 可以是您要调用本地目录的任何 参数 ,并且在第一行中是可选参数。 如果不进行设置,将 创建 一个名为 gnucash
的目录,该目录 包含 当前工作目录下的 所有源代码 。
查看文档(可选,但推荐):
git clone https://github.com/Gnucash/gnucash-docs gnucash-docs
cd gnucash-docs
git checkout maint
更新您的存储库
最初的git checkout之后,您可以稍后使用来更新本地存储库
git pull --rebase
在$ {SOURCEDIR}树中的任何位置。 我们建议您每天开始工作时进行此操作。
获取在构建时使用的软件包
- 依赖关系 包含构建GnuCash时使用的软件包列表。 如果缺少某些内容,则 不能通过
cmake
进行配置, 否则make
或ninja
进行
的构建 将失败。 - 为了处理.po文件,我们使用几个以
msg
开头的命令 。 这是 gettext-tools的 一部分 。
- 警告
- 已知Gettext版本<0.20不会提取'developer_name'xml节点,该节点包含msgid“ GnuCash项目”。 不要删除此msgid!
在Linux下,使用软件包管理器并安装它们。
构建系统中的步骤
GnuCash使用 cmake 构建生成器来控制所有组件的构建。 详细信息在 Building 中描述 。 以下简短说明可在Unix系统上使用,并假定您已经根据 FAQ 设置了依赖项 。 如果您要构建不稳定分支或主分支,则需要使用软件包管理器来安装另外两个开发软件包,boost-all-devel和googletest。
配置
通常最好使用单独的构建目录。 对于翻译人员而言,将其设置为源目录中的隐藏目录非常方便,因为它在翻译模板中提供了最简单的路径。 隐藏目录可防止提取工具在搜索可翻译字符串的文件中包含构建产品。 我们将其称为目录 .build
。 您可以随心所欲地对其进行命名,只需记住以点开头即可隐藏该名称。
将目录更改为 构建目录, 然后运行cmake来配置构建。 在大多数情况下,翻译人员无需安装GnuCash,它会生成任何参数:
cd ${BUILDDIR} # e.g. .build
make
告诉cmake使用父目录中的CMakeLists.txt配置当前目录。 如果配置失败或要优化构建,请咨询 Building 。
可选编译
建议您编译gnucash源代码。 实际使用新翻译运行gnucash是一个好主意,因为在正在运行的程序的上下文中查看这些短语非常有帮助。
制作
接下来,在 构建目录中 编译gnucash :
cd ${BUILDDIR} # e.g. .build
make
可以从 构建目录 运行GnuCash ,如下所示:
cd ${BUILDDIR} # e.g. .build
GNC_UNINSTALLED=1 GNC_BUILDDIR=`pwd` bin/gnucash
最好使用这样的绝对路径,以确保您运行正确的gnucash可执行文件。 要运行您的发行版预装版本的gnucash,通常在Linux下,您可以输入:
/usr/bin/gnucash
无论哪种情况,都可以通过在调用可执行文件之前放置LANG env var来轻松地在gnucash提供的各种语言之间进行切换。 您可以在“ 区域设置”中 找到详细信息 。
文献资料
该 GnuCash的帮助手册 和 教程和概念指南 既可以使用相同 的CMake 构建系统的代码或旧的 自动工具 。
- 要使用Autotools制作可浏览的文档集,请执行以下操作:
git clone gnucash-docs
或解压缩gnucash-docs tarball- 就像您对GnuCash本身所做的那样,创建一个隐藏的构建目录
- 运行autogen.sh
./autogen.sh
- 将目录更改为构建目录
光盘.build
- 运行以下命令
../配置 使HTML
- 使用CMake制作可浏览的文档集:
git clone gnucash-docs
或解压缩gnucash-docs tarball- 就像您对GnuCash本身所做的那样,创建一个隐藏的构建目录
- 将目录更改为构建目录
光盘.build
- 运行以下命令
cmake .. 使HTML
新的文档主页将是
guide/<locale>/gnucash-guide/index.html
和
help/<locale>/gnucash-help/help.html
,
其中<locale>是 C, de, it, ja, or pt
(分别为英语,德语,意大利语,日语或葡萄牙语)之一。 您可以使用 file:
URL方案将浏览器指向其中之一。 链接将从那里开始。
命名约定
语言代码具有以下形式:
- <language> [_ <REGION>] [。<Charset>] [@ modifier]
- 使用众所周知的ISO代码 639-1 ( 语言 s)和 3166-1 ( 区域 s),在大多数情况下为国家/地区。
- 只有 当不存在2个字母的代码 为ISO_639-1你的语言,使用来自3个字母的代码 ISO_639-2 。
- 如果您是第一位使用该语言的翻译者,则应
- 仅使用您的语言代码 命名文件和目录 。
- 在您的po文件的标头中 设置
Language(语言):
带有完整的(语言和区域)代码(如果有的话)。
因此,无论您身在何处,使用您的语言的所有人都会从您的工作中受益。
- 如果存在 特定于您所在地区的部分 ,例如遵守当地法律的企业帐户模板,则它们应位于<language> _ <REGION>目录中。
- gnucash中 常见的 字符集 是 utf8 。
- 在极少数情况下, 不同的脚本 用于像kyrilic和拉丁美洲添加相同语言的较少使用的 改性剂 如
SR @拉丁文
。
在本文档的以下各部分中,“ XXXX”和“ LL”指的是您的语言代码。
与您的语言的维护者联系
要找出谁是最后使用您的语言的人,请查看与您的语言相对应的po / XXXX.po文件顶部附近的内容。 如果您的语言没有可用的.po文件,请参阅下一节。
.po文件的开头应类似于以下内容:
#葡萄牙语-巴西的本地化
#版权所有(C)2003自由软件基金会,公司
#Jon Lapham <lapham@extracta.com.br>,2003
#Jose Carlos Nascimento-<joseca@psabs.com>,2001。
#
msgid “ “”
msgstr “”
“项目ID版本:GnuCash 1.8.3 \ n”
“报告-Msgid-错误-收件人:https
://bugs.gnucash.org/enter_bug.cgi ?” “” product = GnuCash&component = Translations \ n“
” POT创建日期:2003-05-16 16:42-0300 \ n“
”“ PO修订日期:2003-06-02 12:00-0300 \ n”
“最后翻译者:乔恩·拉普汉姆(Jon Lapham <lapham@extracta.com.br> \ n”
“语言团队:NONE \ n”
“语言:pt_BR \ n”
“ MIME版本:1.0 \ n”
“”内容类型:文本/纯文本; charset = UTF-8 \ n“
”“内容传输编码:8bit \ n“
”复数形式:nplurals = 2;复数= n!= 1; \ n“
看看谁是“最后翻译者”,然后向该人发送电子邮件,询问您可以提供哪些帮助。 这很重要,因为如果已经有翻译文件的积极维护者,那么您应该直接与他或她互动。 如果没有Last-Translator,或者该人没有积极维护文件(并告诉您在合理时间内接管文件或未在合理时间内回答),您将成为维护者,应将“ Last-Translator”更改为您的名称和电子邮件地址。
词汇表文件
在po / glossary /目录中应该是您所用语言的“词汇表”文件。 该文件包含一堆 在GnuCash中找到 的 常用术语 -以及一些针对GnuCash的非常具体的解释,例如 账单 , 发票 和 凭证 之间的歧义 。 建议您 首先翻译此文件 ,然后在翻译实际的.po文件或文档时用作参考。 请记住,该文件将 永远对用户不可见 ! 词汇表文件对您来说只是翻译的工具! 我重复一遍:词汇表文件中的字符串 永远不会 对用户可见,它们仅由翻译者您使用。
- 去做
- 当前文件具有非常非正式的形式。 为了使它们更有用,例如以工具特定的词汇表格式进行转换,我们应该替换掉
msgstr “一般术语:术语”
经过
msgctxt “通用术语” msgid “术语”
- 进入词汇表目录:
cd po /词汇/
- 如果您的.po词汇表文件 不存在 或 比
gnc-glossary.txt
早 ,请创建模板:./txt-to-pot.sh gnc-glossary.txt> gnc-glossary.pot
- 创建或更新您的语言的词汇表文件:
- 如果您的.po词汇表文件 不存在 ,
- 使用这个gnc-glossary.pot文件来创建它
msginit #添加-l <locale>(如果与您的设置不同)
- 将您的文件添加到
词汇表
/CMakeLists.txt中
的set_dist_list(po_glossary_DIST ...)
命令中set_dist_list ( po_glossary_DIST CMakeLists.txt bg.po ca.po da.po de.po el.po es_NI-policy.txt es.po fr.po gnc-glossary.txt he.po hr.po hu.po it.po nb.po nl.po pl.po pt_BR.po pt.po ru.po rw.po sk.po sv.po txt-to-pot.sh vi.po zh_CN.po zh_TW .po )
- 更改CMakeLists.txt后,您必须重新运行
cmake #添加您的选项
- 如果您的.po词汇表文件 存在 ,但早于
gnc-glossary.txt,请
使用msgmerge程序对其进行更新:msgmerge-上一个-U LL.po gnc-glossary.pot ;
- 现在打开您的语言的词汇表文件并完全翻译。
- 别忘了 #Check .po文件的语法和统计信息 。
词汇表文件中的术语缺失或不足
如果您发现缺少或可以更好地解释的重要术语,
用于 源文件 gnc-glossary.txt 。
除标题外,此文件的行按字母顺序排序并具有以下格式:
Msgid <TAB>评论
- 提醒
- 您的编辑器是否输入<TAB>或将其替换为<Space>?
要对其进行测试,请在更改gnc-glossary.txt之后运行以下步骤:
- 生成一个新的gnc-glossary.pot:
./txt-to-pot.sh gnc-glossary.txt> gnc-glossary.pot
- 在LL.po的 msgmerge 命令 上方运行 ,
- 检查并翻译此更新的词汇表文件中的新字符串。
- 如果成功,请使用以下命令更新所有* .po文件:
因为我在* .po中; 做 echo -n “ $ i :” ; LANG = C msgmerge-上一个-U $ i gnc -glossary.pot ; 完成 #old格式:找到* .po -exec / usr / bin / msgmerge --previous -U'{}'gnc-glossary.pot \;
- 笔记
- 最后一步也可以由维护人员完成。
-
仅建议维护者使用
LANG = C
来获取英语错误消息。
获取新模板
该 移植对象模板 (.POT文件)是所有翻译字符串的集合。
重要的是,例如,在您要求开发人员更改不足的字符串或收到有关更改的字符串的公告(例如,以“ I18N:
” 开头 或包含“ [I18N]
”标志的 提交消息)之后,重复此步骤很重要 。
- 小费
- 如果您对此部分有疑问,请从 translationproject.org 下载“当前模板” 。 但是请记住,它基于最新版本,并且不包含最新更改。
- 如果您的存储库没有新鲜结帐,则应首先 #Update您的存储库 :
git pull --rebase
- 仅在第一次运行时,请参见 构建 以根据您的操作系统设置构建环境。
- 笔记
- 由于您可以使用
make
或ninja
,因此在此页面上,我们始终编写make <target>
。 如果您决定使用忍者,请 改为 执行忍者<target>
。
- 然后在gnucash中,在构建树 (或源树,如果不使用单独的构建目录) 的顶层 的特定命令 将为此执行所有必要的步骤:
cd $ { BUILDDIR } #调整$ {BUILDDIR} 做锅
- 如果发出投诉
make: *** No rule to make target `<path/to/missing-source-file>', needed by `gnucash.pot'. Stop.
,则有先前版本中的过时遗物。 赶紧跑清理 #删除过时的文件 make pot #再试一次
- 现在进入po目录:
cd $ { SOURCEDIR } / po #调整$ {SOURCEDIR}
如果您的语言文件 已经存在 ,请继续 #Update现有的.po文件 。
建立一个新的.po文件
如果没有适用于您的语言的.po文件,则可以启动一个新的.po文件。 开始于
msginit [ -lLL [ _RR ]] [ -i <path / to /> gnucash.pot ]
其中 LL
是你的语言和 RR
您所在的地区代码,如果已经有一个不同的LL.po像如 PT 和 pt_BR表示 。
-i <path / to /> gnucash.pot是必需的,如果您使用单独的构建目录,
仅当目标与您的环境当前语言不同时才需要-l...。
这将使用您的用户环境中的值初始化元信息。
- 笔记
- msginit 0.19.3正在为语言团队查询翻译项目的过时地址,但这无关紧要。
如果那不起作用,您可以将文件 gnucash.pot
复制 到名为 LL.po
的工作文件中, 然后编辑该文件。
调整页眉
.po文件的顶部应进行一些编辑。 大多数调整应该已经由 msginit
完成 ,但是如果您复制了模板,则必须全部调整。
- 文件顶部的注释应更改为当前注释:
#Deutsch fuer GnuCash中的消息 #版权(C)1999自由软件基金会,公司 #Jan-Uwe Finck <Jan-Uwe.Finck@bigfoot.de>,1999年。
展开该清单的版权注释 <Translator name> <email address>, year[ range]
在 相反的 历史顺序。 然后,您可以稍后将列表复制到 translator-credits中
。
- 如果文件上有多个人工作,那么 这也是记录 印刷约定 的好地方 :
## Konventionen /Tastenkürzel: #»Zitate«:[altgr] + [Y] / [X] #Gedankenstrich — [altgr] + [Shift] + [-]
- 第一个空的msgid“”包含有关您和gettext工具的信息。 msgstr的每一行都包含一个 大写的条目 ,一个冒号和一个值。 将所有大写单词替换 为适当的内容。 在这种情况下,您将是译文的第一作者,同时也是
-
Last-Translator
: 您的姓名 和 电子邮件地址 。 此人负责文件,因此我们需要一个电子邮件地址与您联系。
如果您不想成为负责人,请不要更改它。 尽管如此,您仍然可以将自己添加到上面的版权部分和 下面的 翻译者信用
中。
语言团队
:某些语言是由团队维护的,每个人都希望了解情况。 #translationproject.org 或德国Gnucash翻译团队 等组织就是这种情况 。 输入团队名称和电子邮件地址。 如果您不是团队成员,请将其保留为空或输入NONE
。 团队成员可以在翻译者信用中
重复使用此行语言
:应与不带扩展名的文件名相同,通常是您语言的ISO代码。Project-Id-Version
:<程序包名称>和<版本>。 不要忘记更新版本。msgmerge
似乎无法为您执行此操作。Report-Msgid-Bugs-To
:应该已经由设置。msginit
到https://bugs.gnucash.org/buglist.cgi?roduct=GnuCash&component=Translations
或类似的,在这里你可以与报告问题msgids
像- “ <msgid>中有错字”或
- “由于语法上的差异,<msgid>无法翻译成<您的语言>。”
POT-Creation-Date:
由msgmerge
更新 。PO-Revision-Date
:上次修改的时间戳。 具有特定po模式的编辑者应在保存时对其进行更新。 如果使用普通的文本编辑器,则必须手动进行。- 不要更改内容部分
“ MIME版本:1.0 \ n” “内容类型:文本/纯文本; charset = UTF-8 \ n” “”内容传输编码:8bit \ n“
但请替换其较旧的形式,例如:
“字符集:UTF-8 \ n” “编码:8位\ n”
- 确保.po文件的标题包含以下行的调整形式,例如,对于设置为nplurals = 3的斯拉夫语:
“复数形式:nplurals = 2;复数= n!= 1; \ n”
有关 详细信息, 请参见 Gettext手册:翻译复数形式 。
请参阅《 Gettext手册:标题输入》中 的完整说明 。
- 一旦用大写字母指定了项目,请删除“#,fuzzy”行,因为一旦完成,标题条目就不再是模糊的。
调整特殊讯息
- 当前有一个 特殊字符串 :
#:../src/gnome - utils/gnc - main - window.c:4389 msgid “ translator-credits” msgstr “” “ Joachim Wetzig,2019 \ n” : “ Jan-Uwe Finck,1999 \ n” “ \ n“ ”VerbesserungsvorschlägezurÜbersetzungan gnucash-de@gnucash.org“
这将显示在“ 帮助”->“关于”->“信用”->“翻译”中
。 因此,您应该输入您的 姓名 或团队名称 ,以及一个 电子邮件 地址,用户可以在其中与您联系以输入错字和礼物。
- 小费
- 一段时间后,会有更多的人从事翻译工作。 然后,您可以将其从标题注释扩展为:
msgstr “” “ <当前译者>,<年> \ n” “ <上一个译者>,<年> \ n” : “ <第一译者>,<年> \ n” “ \ n” “发送建议,批评和关于此翻译的问题,\ n“ ”说克林贡语的GnuCash社区<gnucash-tlh@gnucash.org> \ n。 “为避免节制,我们建议您订阅\ n” “ <a #此注释仅是为了欺骗垃圾邮件过滤器。请重新加入周围的行 。href = \” https://lists.gnucash.org/mailman/listinfo/gnucash -tlh \“>列出gnucash-tlh </a>” #不要
使用词汇表和其他项目的翻译预填充文件
基本思想在《 Gettext手册:使用翻译 大全》中有所描述 。 您的翻译工具可能已经支持汇编。 如果不是,即您使用的是纯文本编辑器,则这是手动方式:
共有3个程序正在使用中:
- 消息猫
- 连接并合并指定的PO文件。
- msgmerge
- 将两个或多个Uniforum样式.po文件合并在一起。
- msgattrib
- 根据其属性过滤翻译目录中的消息或处理其属性。
- 例子
- 合并我们的词汇表这样的纲要:
cd $ { SRCDIR } / po
#Gettext手册中关于不使用旧po文件合并简编的建议:
msgmerge --compendium术语表/ $ { LL } .po -o $ { LL } .po / dev / null $ { BUILDDIR } / po / gnucash.pot
#可能更好:
msgmerge -U $ { LL } .po --compendium词汇表/ $ { LL } .po $ { BUILDDIR } /po/gnucash.pot
办公软件
Gnucash从 goffice 借了几个源文件 。 这些文件包含许多可翻译的字符串。 goffice翻译团队已经尽力将其翻译成多种语言。 为了减少翻译工作量, 可以使用 I18N#借用代码中 链接的脚本 将这些翻译内容导入我们自己的po文件中。
如果您所用语言的goffice部分不完整,则可以考虑向他们提供使用您的工作来更新其文件的功能。
GTK3
股票按钮在其3.10版本中已弃用。 其中包括:
- 带有助记符的标签
- 已经在gtk域中完成了翻译,
- 关联了一个唯一的图标。
因此从gnucash 3.0开始不再使用它们。 我们仍使用相同的标签,但未直接使用GTK转换。
您可以通过将来自GTK3的语言的po文件(即 https://gitlab.gnome.org/GNOME/gtk/tree/gtk-3-24/po) 合并到您的gnucash po文件中 来节省一些工作 。
- 例子
- 要合并来自GOffice和GTK的适合翻译,请执行以下操作:
#示例在GOffice和GTK中合并po文件中的常见部分
#变体A:只需一步即可查看其结果
## 1.加入3.派对翻译
msgcat --use-first -o tmp.po $ { LL } .po $ { GOFFICEPATH } / po / $ { LL } .po $ { GTKPATH } / po / $ { LL } .po
## 2.删除未使用的消息。Authoritativ是gnucash.pot:
msgmerge tmp.po $ { BUILDDIR } /po/gnucash.pot | msgattrib-无废弃> { $ LL } .po
rm tmp.po
#变体B:在一个命令中:
msgcat --use-first $ { LL } .po $ { GOFFICEPATH } / po / $ { LL } .po $ { GTKPATH } / po / $ { LL } .po | \
msgmerge $ { BUILDDIR } /po/gnucash.pot | \
msgattrib --no-obsolete> { $ LL } .po
调整po / CMakeLists.txt
还将 您的语言代码包括 在源目录 的po文件夹 中 CMakeLists.txt 文件 的NEW_LINGUAS变量 中 : ' '
#可用语言集:
#*在翻译项目(TP)处管理:
设置 ( TP_LINGUAS az ca cs da eu fa ja nl rw sk sr sv truk zh_CN )
#*已在TP处标记为外部:
set ( GC_LINGUAS ar bg德报EN_GB ES科幻FR顾他喜胡它千牛KO LT吕先生NB NE PL PT pt_BR表示ROるたて乌尔六zh_TW的)
#*新的或无标记:发布经理应该将它们公布于TP
#和那里列出当移动在上面的各个组。
集 ( NEW_LINGUAS as brx doi es_NI kok kok @ latin ks mai mni mni @ bengali )
设置 ( ALL_LINGUAS $ { TP_LINGUAS } $ { GC_LINGUAS } $ { NEW_LINGUAS } )
CMakeLists.txt 是一个文件,它控制构建过程的配置。 因此,在更改它之后,您必须 重新运行cmake 。 某些类似 Eclipse的 IDE 会为您自动完成。
作为构建的一部分,将 在构建树的po目录中生成 LL.gmo
文件。 最后, make install 会将其复制到运行时可以找到的位置。 如果您忘记其中一个步骤,则不会显示您的翻译语言。
继续 #翻译.po文件 。
更新现有的.po文件
在开始实际翻译工作之前,您应该更新gnucash.pot文件,并使用它来更新.po文件。 此过程将确保您拥有最新的可翻译字符串。
如果您的语言文件 已经存在 ,请使用 msgmerge 程序 对其进行更新 。 这会将未更改的字符串的旧翻译移到新文件中:
msgmerge-上一个-U LL.po gnucash.pot
- 笔记
- 如果您选择了 单独的构建目录 (例如
.build)
,请在上述命令中调整路径:cd $ { SRCDIR } / po #调整$ {SRCDDIR} export BUILDDIR = ../build#调整此 msgmerge --previous -U LL.po $ { BUILDDIR } /po/gnucash.pot
- 为“噪声”和实际工作分别提交
- 现在,您应该运行
git commit
或 创建补丁“ L10N:<locale>:合并最近的模板”
。 - 由于通常许多行号都会更改,因此它将仅包含来自更新后的pot文件的“噪声”。
- msgmerge之后的比较示例
#业务选项 - #:../ src /app -utils /app -utils.scm :303 - #:../ src / business /business -gnome /gncmod - business -gnome.c:117 +#:../ src / app-utils / app-utils.scm:322 +#:../ src/business/business-gnome/gncmod-business-gnome.c :119 msgstr“商业” msgstr“Geschäft”
- 将您的实际更改隐藏在数百个此类部分中,将使您的同事很难找到它们。
之后于你所作的 翻译 你 提交 第二承诺或包含您的实际工作补丁 “更新<区域设置>的.po”
。
如果您当前的翻译工具使用 其他格式设置( 例如换行符)作为上一个工具 ,则也应该这样做 。 在这种情况下,只需打开文件,保存并 git commit
或 创建一个补丁 “ L10N:<locale>:Preparation:Reformating”
。
- KBabel格式的示例
#:../src/app-utils/business-prefs.scm:33 msgid “用于生成客户编号的格式字符串。这是printf样式的格式字符串。” msgstr “Используемаястрокаформатированиядлясозданияномеровклиентов。Еёформатсоответствуетprintf。”
- PoEDit格式的示例
#:../src/app-utils/business-prefs.scm:33 msgid “” “用于生成客户编号的格式字符串。这是printf-” “样式格式字符串。” msgstr “” “Используемаястрокаформатированиядлясозданияномеровклиентов 。
- 查看文件头
-
Project-Id-Version应该是GnuCash 4.5和
<tt> POT-Creation-Date
应该是最近的。 如果不是,您可能会忘记 #获取新模板 或#更新 现有.po文件 。
- 的
PO-修订-日期
应> =POT-创建日期
。
某些(但不是全部)工具将为您可靠地完成此任务。
翻译.po文件
最后。 您已准备好进行翻译!
.po源文件是纯文本文件。
工具
一些 纯文本编辑器 为.po文件 s 提供了特定的语法突出显示 ,但是您也可以使用特定的工具:
- Emacs 具有po模式来编辑po文件。
- Geany ,具有语法突出显示功能的编辑器
- GTranslator 是另一个工具,但我们建议不要使用它,因为2006版本不支持po文件中所有有趣的元素。 如果您知道此问题已解决,请进行更新。
- ' 自KDE4以来,Lokalize 是KBabel的继任者。
- Poedit 完成PO文件的编辑和构建。
- POEditor 可以在线使用。
- translate-toolkit 是基于python的套件。 Weblate等服务也使用它。
- 维基百科:
(随时在此处添加更多工具)
Gettext源(.po)文件格式
记录格式
po文件中的记录具有以下格式:
<空白或仅空白>
#translator-comments
#。提取注释
#:参考…
#,标志…
#| msgctxt先前消息上下文
#| msgstr先前未翻译的字符串
msgctxt可选消息上下文
msgid未翻译的字符串
msgstr已翻译的字符串
- 该 空或只是空白 行是记录分隔符。
- 在 翻译评论中, 您可以自己写下笔记。
- 该 提取-意见 是从程序员你的笔记。
- 一个或多个 参考文献 告诉您消息在源中的位置。
- 最重要的 标志 将在下面的 #通用标志中 进行说明 , 源语言格式标志 将在下面进行说明。
- 该 previous- * 条目才会出现,之后
msgmerge --previous ...
模糊的消息显示什么改变。 - 一个 可选的消息上下文 具有目的区分等于msgids具有不同的含义。
- 该 MSG * 应该解释上述自理。
- 例子
- 这是将一些文本翻译成德语的示例:
前:
#:message-i18n.c:11
msgid “”
“ GnuCash个人理财经理。\ n”
“使用GNU资金管理方式!
msgstr “”
之后,在de.po文件中进行翻译:
#:message-i18n.c:11
msgid “”
“ GnuCash个人理财经理。\ n”
“使用GNU资金管理方式!
msgstr “”
“ GnuCash:Ihr persoenlicher Finanzmanager。\ n”
“ Der GNU-Weg,ihr Geld zu verwalten!
您应该至少阅读一次.po文件中的每个翻译。
常见标志
模糊标志
如果您看到一个字符串,其 #, fuzzy
上方的标志注释 中包含该短语 ,请查看翻译并通过删除进行确认
- 的
,模糊的
标志,但没有其他标志一样,C-格式
, - 在
#| msgid
行,在某些情况下 - 在
#| msgctxt
行。
模糊翻译意味着该翻译将被程序忽略。
产生模糊标志的原因至少有两个:
- 一个
msg *
程序猜测了类似msgids的翻译可能是什么, - 在以前的版本中,您具有有效的翻译,但是程序员更改了msgid(的一部分)。
完成翻译后,您应该再也没有 剩余的 “ #,模糊
”字符串了。 请记住,标记为“模糊”的字符串意味着它将不会在程序中被翻译。 您可以通过运行过滤模糊消息
cd $ { SOURCEDIR } / po
msgattrib --fuzzy $ { YOUR_LANGUAGE } .po
- 模糊信息示例
#:messages-i18n.c:35 #,模糊,c格式 #| msgstr“打开文件%s时出错。” msgstr “写入文件%s时出错。” msgstr “ Es gab einen Fehler beim Oeffnen der Datei%s。”
在这里,msgid已从“打开”更改为“写入”。 您需要更正翻译后的字符串,删除带有旧msgid“
#| msgid…
”和'fuzzy'标志的行,因为只有这样翻译才会真正出现在程序中。- 模糊固定示例
#:messages-i18n.c:35 #,c格式 msgstr “写入文件%s时出错。” msgstr “ Es gab einen Fehler beim Schreiben der Datei%s。”
请注意,
#, c-format
是 不会被删除 。 没错,您应该离开。- 小费
- 如果所有模糊字符串都是固定的(不 返回任何内容),则还可以使用以下命令批量删除之前的消息
msgattrib --fuzzy $LL.po
msgattrib-清除上一个-o $ LL .po $ LL .po
格式化标志
由于GnuCash的各个部分是用不同的编程语言编写的,因此至少会出现2种不同的格式标志:
- c格式
- 格式说明符:
%
- 当您看到注释“ c-format”时,表示可翻译字符串中的格式代码是指C格式代码。 因此,“%s”表示文本,“%d”表示整数,等等。
- 方案格式
- 格式说明符:
~
- 去做
- #Special_characters_and_other_tips的 哪些部分 最好留在这里?
孤记录
在文件末尾,您可能会看到类似的记录
#
〜msgstr “输入在线直接付款通知书” #〜msgstr“在线-Lastschrift eingeben”
#
〜msgstr“借方帐号” #〜msgstr“ Konto-Nr。des Zahlungspflichtigen”
他们没有参考线。 该记录已不再使用,您可以将其删除。
翻译字符串
然后在PO文件中依次提供每个要翻译的消息。 例如,未翻译的条目可能是:
#:lib / error.c:88
msgid “未知的系统错误”
msgstr “”
空 msgstr 字符串必须充满翻译后显示的字符串 MSGID 。 例如,如果您说德语,则翻译后的条目可能如下所示:
#:lib / error.c:88
msgstr “未知的系统错误”
msgstr “ Unbekannter Systemfehler”
您只需要为PO文件中的所有条目一个接一个地翻译,就可以遵循整体文件格式以及在需要时引用特殊字符的引号。 观察和直觉可能使您掌握应采用的格式; PO文件的确切规则在GNU gettext手册中给出。 msgfmt程序有助于查明格式错误。
语境
- 重要的
- 在Gnucash 3.7中,前两种形式已被 #Message Context 取代 。 旧类型的描述仅保留一段时间,以帮助更新旧目录。
在某些地方,GnuCash在可翻译字符串中使用“消歧前缀”。 这是一个古老的解释: https : //lists.gnucash.org/pipermail/gnucash-devel/2005-October/014236.html ; 更多的解释也在这里: https : //wiki.gnome.org/GnomeI18nDeveloperTips 。
至少有2个 用例 :
- 缩写 ,即列及其标题:
msgstr “已对帐”
msgstr “ Abgeglichen”
:
msgstr “已对帐:R”
msgstr “已对帐:A”
- 示例文本 以确定输出单元格的大小。 在此,您需要用您的语言“预期的最坏情况”( 而不是翻译) 。
对于以下示例,德语翻译员 从其企业帐户模板 复制 了 帐户名称的最长路径 ,如Gnucash的“帐户”标签中所示:
msgstr “样本:费用:汽车:汽油”
msgstr “样本:Aufwendungen 2/4:Reparatur / Instandhaltung:4805 Reparatur u.Instandh。von Anlagen / Maschinen u。Betriebs- u。Geschäftsausst。”
- 重要的
- 保留 结肠 未翻译 的部分 。
另一种形式-无需插入前缀-原为
#翻译者:该字符串具有上下文前缀;翻译
号。只能包含|之后的部分。特点。
#:gnucash / gnome-utils / dialog-options.c:722
#:gnucash / gnome-utils / gnc-tree-view-account.c:908
msgid ““占位符”的列字母| P”
msgstr “ P”
并成为
#:gnucash / gnome-utils / dialog-options.c:719
#:gnucash / gnome-utils / gnc-tree-view-account.c:906
msgctxt ““占位符”的列标题”
msgid ” P“
msgstr ” P ”
- 小费
- 像kdiff3这样的工具可以帮助您恢复以前的翻译。
消息上下文
在较新的部分中,我们使用消息上下文:
#:libgnucash / app-utils / gnc-ui-util.c:903
msgctxt “已对帐标记'未清除'”
msgstr “ n”
msgstr “”
特殊字符和其他提示
根据上下文 ,一些字符具有特殊含义,需要进行特殊处理:
- “#”(哈希)
- 在英语中,它通常用作“数字”的缩写。 您应将其替换为“ No。”,“ Nr”。 或您的语言中常见的任何东西。
- “ _”(带下划线)
- 在 菜单和对话框条目中 ,以下字符将成为 加速器 , 助记符 或 热键 ,可以将其与超键[ctrl]或[alt]一起使用以跳转至该条目。 在 GTK2中, 它们始终可见,而在 GTK3中, 它们只有在按住超级键后才出现。 更具体地说,在 Linux 下, 您可以通过 进入 主菜 单项,通过 进入
[alt]+[key]
子菜单,并 进入 其他菜单项[key]
。 在 对话框中, 始终使用[alt]+[key]
。 - 这里的术语不是唯一的:while
- msgfmt 有一个
--check-accelerator
选项, - DocBook将<accel>标记 用于与元键一起使用的字母,将 <shortcut>用作 键组合 ,但是
- GTK +将标签的下划线标记字符区分为 助记符 ,将F1(如Help)快捷键区分为 加速器 。
因此,密钥 在其上下文中 应该是唯一的, 并且您应该 在 #Compile&Install 之后 通过 #Running GnuCash 和文件 来控制它 。 [[#Compile_.26_Install|]]
错误的:
“ do _this”#热键:t
“ do _that”#热键:t =>无法直接访问
正确的:
“ do th_is”#热键:i
“ do th_at”#热键:
这就是为什么您应该 使用翻译 来 运行程序 的原因之一 :查看重复的加速器。
- 要避免的字符
- 已经在英语中的按钮上使用过: C Los , H elp。 其他则取决于上下文。
- 像拉丁脚本中那样打破基线的字符: j , p , q , y 。 至少在某些字体中,下划线变得不可见-使用户毫无头绪。
- 在导出文件的标题中
- 在这里,它用于将多个单词链接到一个标识符。 例子:
#:../src/import-export/csv-exp/csv-tree-export.c:155
msgid “ full_name”
msgstr “Vollständige_Bezeichnung”
- “ \”(反斜杠)
- 它是许多编程语言中的转义字符。 以下字符具有特殊含义,例如:
- “ \ n”(新行)
- 我们字符串中最常用的特殊字符。 如果msgid包含“ \ n”,请保留布局并将它们也添加到msgstr中-放在同一位置。
- “一些用引号引起来的文字”
- 由于“会终止消息,因此您必须在消息前加反斜杠或使用其他引号将其引起来,例如:
- “一些“引用”文本”
- “一些带引号的文字”
- “一些“引用”文本”
- 您可以自由使用您的语言中常见的或建议的约定,但要保持一致。 为此,您应该在文件的开头添加有关约定的翻译注释,以便更好地合作。
- 使用
“ \\”
打印反斜杠。 - “%“ (百分)
- 在基于C的编程语言中,“%”标记 格式说明 符的开头 ,例如,“%d6”表示在此 以10位十进制格式 插入下一个具有6位数字的 变量 。 此类格式说明符应复制到您翻译的消息中的适合您语言的位置,请参阅 https://www.boost.org/doc/libs/release/doc/html/date_time/date_time_io.html#date_time.format_flags Boost的日期和时间的格式标志列表]。
- 非ASCII数字
- 作为波斯语(波斯语)甚至阿拉伯语的一项特殊功能,翻译人员可以在数字格式指令中插入“ I”标志。 例如,“%d”的翻译可以是“%Id”。 该标志在具有GNU libc的系统上的作用是,在输出中,ASCII数字将替换为LC_CTYPE语言环境类别中定义的“输出数字”。 在其他系统上,gettext函数删除此标志,因此它无效。
- 笔记
- 如果字符串以c格式标记,并且带有%标记,但 没有 启动格式说明符,请 提交错误报告, 并告知开发人员字符串的位置(msgid上方的行)。 开发人员应在代码中解决此问题。 一种方法是 在gettect调用之前 插入包含
xgettext:no-c-format
的注释。 - 为了继续进行而不必等待开发人员的补丁发布,您可以 从 上面 的
#,
注释行中 删除c-format
标志 。 如果该行中没有其他标志,则只需删除该行。
- 如果字符串包含格式说明符,则要输出“%”,请在字符串中使用“ %%”。
- 重新排序参数
- 假定字符串
“在%d情况下,结果将为%d。”
,但是用您的语言,您可能会想写“%d情况下的结果是%d”。
现在,您将得到错误的数字。- 解决方案
- 插入参数的序号,然后在格式说明符中插入“ $”:
“%2 $ d将是%1 $ d情况下的结果。”
。
- “〜”(波浪号)
- 类似于“%”,但适用于
scheme-format
。 基本的方案格式使用〜a或〜s格式化代码中的后续变量,并且应以相同的顺序复制到已翻译的消息中。 Guile的(ice-9格式)
[1] 使用〜@ *和〜#*参数进行了重新排序,但是使用起来有点棘手:(格式 #t “〜@ * 1〜a的〜@ *从〜@ * 2〜a到〜a ” “资产负债表” “ Yoyodyne Pty” “ 2018年10月1日” “ 2019年9月30日” )
会打印
Yoyodyne Pty的资产负债表,2018年10月1日至2019年9月30日
- 笔记
- 〜a将使用“人类可读”
(显示变量)
插入内容,而〜s将使用(write var)
插入内容 。 这是一个重要的区别,这意味着〜a和〜s不能互换。 [2]
- 跳起来 ↑ https://www.gnu.org/software/guile/manual/html_node/Formatted-Output.html
- 跳起来 ↑ https://www.gnu.org/software/guile/manual/html_node/Scheme-Write.html
- “ { num,可选的其他说明符}”
- 这是C ++代码的格式说明符。 您可以将其原样复制到翻译后的邮件中,也可以 根据您的语言进行调整 。
- “&”(“&”号)
- 是 HTML编码 的起始字符, 在某些报告中使用。 例如
&nbsp;
表示NonBreakableSpace。
- “ <”(较少)
- 是几种标记语言的标记的起始字符。 例如
< b >文字</ b >
结果为粗体 文本 。
- 也可以看看
- GUI指南 是相关的程序员视图。
差不多完成了
如果您快完成了,将很难找到最后未翻译的消息。 那你可以用
msgattrib-未翻译$ { LL } .po
然后在文件中搜索msgid的内容。
检查您的.po文件的语法和统计信息
必需的
msgfmt -c --statistics $ { LL } .po
如果该程序报告了一种或多种 与您的语言有关的 致命错误 ,则应查看文件中受批评的行。
- 小费
- 成功调用将创建一个文件
messages.mo
。 如果您没有使用构建环境,则可以将该文件移至
- 的Linux
-
$ {PREFIX} /share/locale/${LL}/LC_MESSAGES/gnucash.mo
- 然后重新启动gnucash以使用您的翻译来测试程序。
期望的
在第二次运行中,您可能希望看到忘记添加 加速器的位置 :
msgfmt -c --check-accelerators = “ _” --statistics $ { LL } .po
如果您也修复它们,则用户也会爱您。
当前状态
要查看全部统计信息,可以翻译多少个字符串,可以运行
因为我在* .po; 做echo -n“ $ i:”; msgfmt -c-统计$ i;完成
在您的po目录中。
优先事项
您可能已经注意到,GnuCash的po文件很大,包含4000多个字符串。 研究那里不同字符串的不同优先级会有所帮助。 但是,不幸的是,po文件格式无法为GnuCash项目提供任何简单的方法来使导入字符串与次要的字符串有所不同。 但是,对于一些文件,开发人员团队可以为您提供一般优先级的一些指导。
字符串 的 源代码位置 (也称为 ref [erence]) 为您提供了有关其优先级的一些提示。 特别是,以下文件后缀或文件位置暗含一定的优先级:
- 高优先级: 来自所有 * .glade 文件的 字符串将由 GnuCash用户界面(UI)呈现给用户。 这可能意味着这些字符串的优先级会更高一些-但是,很少使用某些UI元素,因此.glade文件的实际位置也会产生影响,但是现在没有一个简单的规则了。
- 小费
- 如果您希望在上下文中查看* .glade文件中的字符串,但不知道该字符串在gnucash中的隐藏位置,如果
- gnucash源文件和
- Gnome的界面生成器 Glade
- 安装在您的系统上,您可以预览它们,例如
LANG = C Glade-previewer -f $ { SOURCEDIR } / gnucash / gtkbuilder / $ { FILENAME }
- 低优先级: 来自所有 * .schemas.h 文件的 字符串 将 不会 出现在gnucash UI中。 相反,它们仅显示在
- Linux: dconf-editor ,
- macOS: 默认值 或
- Windows: 当用户想要设置 GnuCash的 特定 GSettings 键 时的 regedit 程序 。 您可以安全地考虑比其他优先级低的.schemas.h字符串。 [6]
- ** Register2功能 是一个停滞的发展。 仅当您 #configure
--enable-register2时
,字符串才可见 。 有些但不是全部字符串都带有“ Register2功能”注释。
不幸的是,对于* .c文件或单个大型intl-scm / guile-string.c文件中的字符串没有如此简单的规则。 此处的字符串可能具有较高或较低的优先级,但这并不容易看到。 我们仅建议您使用更新的翻译自行启动GnuCash,然后检查您看到但尚未翻译的字符串。 这些肯定是高度优先的。
可以将两个其他源代码位置标记为低优先级:
- src / bin / gnucash-bin.c 文件中的所有内容 均具有 较低的优先级, 因为在运行gnucash时使用命令行中的其他选项时,这些是命令行选项。 这是一个仅由习惯于使用英语命令行命令的经验丰富的用户执行的用例。 因此,此处的翻译优先级较低。
- 文件夹 src / tax 或intl-scm / guile-string.c文件中的所有内容(带有注释指示 src / reports / locale-specific的 某些文件 都与美国或德国的税收准备有关)。 因此,对于居住在不同国家/地区的任何人来说,这些字符串都不感兴趣,因此您可以放心考虑那些 优先级 非常低的 字符串 。
测试并提交翻译
您必须检查新的翻译在程序上是否正确(即:没有未封闭的引号等)。 为此,请使用msgfmt程序
msgfmt -c --statistics LL.po
上面的调用将报告您的.po文件中最重要的错误,并且 绝不能失败 ,而下面的调用
msgfmt -c --check-accelerators =“ _” --statistics LL.po
另外,请检查您是否错过了一些键盘加速器(也称为热键)。
- 给开发者的提示
- 另一个基于python的工具是 i18nspector- 用于gettext POT,PO和MO文件的检查工具。 它更加严格,还会显示有关.pot文件当前缺少的预期条目的警告。 可以在 #Background中 讨论 。
如果要在运行的gnucash版本中查看翻译,只需将.po文件放在本地gnucash存储库(先前已安装)的po /目录中,然后将其放在po /目录类型中(您可能需要可以做到这一点):
进行安装
现在,您可以使用新翻译运行gnucash了:
LANG = XXXX / opt / gnucash-git / bin / gnucash
要查看架构字符串,您可以使用
- 从2.6开始
- dconf编辑器
- 直到2.4
- gconf编辑器。
Poedit的替代方法
如果在处理.po文件时使用Poedit,您会注意到它以.mo格式保存文件,这是GnuCash本身使用的格式。 因此,只需要将这个LL.mo文件复制到/ opt / gnucash-git下的相应子目录中即可:
cp LL.mo /opt/gnucash-git/share/locale/LL/LC_MESSAGES/gnucash.mo
此处唯一需要更改的是LL,它代表您的语言代码(乔治亚州语言卡,德文等)。 其余方法与上述方法相同:
LANG = XXXX / opt / gnucash-git / bin / gnucash
提交中
除非
- 您想将文件发送到翻译项目,或者
- 它以前不存在,并且您想通过邮件列表发送它,创建它的压缩版本:
gzip XXXX.po
在其他所有情况下,只需推送您的提交( Git#Pull Requests )或上载 文件 的 Git#Patches 。 如 #Update现有的.po文件中 所述,应该有一个包含噪声的提交/补丁, 而第二个包含您的实际工作。
然后按照 #How直接将更改提交到GnuCash 。
或者,您可以通过GNU Translation Project提交完成的翻译。 请参阅 https://translationproject.org/ 上的说明 以及本文档第一部分有关如何执行此操作的信息。
另请参阅 https://lists.gnucash.org/pipermail/gnucash-devel/2009-January/024700.html [FIXME:已过时?]
提交者
- 检查应在哪个分支中提交 翻译 : Translation_Status
- 您是否也获得了 #词汇表文件 ?
- 理想情况下#更新 现有的.po文件
- 检查:
通知提交消息的统计信息。
- Python工具
i18nspector
发现了许多其他错误,特别是错误的标题行。 但是它的语言列表不完整,因为它不知道很多3个字母的语言。 - 一些常见的错误:
- Python工具
- msgstr“翻译者积分”
- 标头中至少应包含“ Last-Translator:”。
- msgstr“ gnucash-icon”
- 不翻译,我们只有一个。
- 如果语言是 新的
- #Adjust po / CMakeLists.txt 已经完成?
- 而不是由 #translationproject.org 处理 ,他们需要 有关外部处理 的注释 。 否则可能会发生,例如,自2015年3月起 https://translationproject.org/team/ar.html 显示:
gnucash 2.6.5 0/4628
如果您单击那里2.6.5,您将获得一个新鲜的gnucash-2.6.5.pot,而我们已经有一个ar.po,其中包含2031年翻译的内容和4条模糊消息。 相反,在外部标记为 https://translationproject.org/team/de.html上 ,您将看到:
gnucash 2.6.5外部未知
并且不会获得新的Pot文件。
但是,如果您将语言添加到 Release Process#TP Status changes中 ,那么我们可以将此说明与发布公告捆绑在一起 。
- 提交后,添加文件中最后一位翻译的姓名和电子邮件地址为作者,例如
git commit --author = “沃尔夫中尉<lt.worf@starfleet.org>” --message = “ L10N:tlh [:可选状态或其他详细信息]
4677已翻译的消息。“ #<< msgfmt统计信息
- 如果您签入新的语言,删除一种语言或查看该语言的状态从部分更改为(几乎)完成,请更新 文件guide / C / ch_oview.xml 中的 <sect2 id =“ oview-featuresintl2”> 中的 数字 的 GnuCash的-文档 。
问题
Gtk关键消息
注意: 解决此问题非常困难。 我们将解释保留在这里,以防将来某些开发人员需要它,但是如果您不知道接下来的句子中要讨论的内容,则应该忽略这些Gtk-CRITICAL消息和我们的解释!
如果在运行gnucash时看到任何“ Gtk-CRITICAL”消息,则可能是因为您翻译的字符串与其他gnome库中的字符串不同。 您必须发现要翻译的字符串不同,并更改翻译以使其与gnome库完全匹配。
为此,您需要在gdb下运行gnucash:
LANG = XXXX / opt / gnucash-git / bin / gnucash-env gdb / usr / bin / guile
然后,从gdb内部发出:
运行-e main -s / opt / gnucash-git / libexec / gnucash / overrides / gnucash --g-致命警告
最终,gnucash应该崩溃(由于--g-fatal-warnings指令),当它崩溃时,将从gdb内部发出:
回溯
您应该看到一些如下所示的输出:
#0 0xffffe002 in ?? () #1 0x42028a73在/lib/tls/libc.so.6中中止() 来自/usr/lib/libglib-1.2.so.0的g_logv()中的#2 0x4019d3d8 来自/usr/lib/libglib-1.2.so.0的g_log()中的#3 0x4019d414 gtk_type_check_object_cast()中的#4 0x40500fdd来自 /usr/lib/libgtk-1.2.so.0 #5 0x407292e5(位于gnc_mdi-utils.c中的gnc_mdi_tweak_menus(mc = 0x825adb0)中):574 #6 0x40729d13 in gnc_mdi_child_changed_cb(mdi = 0x8266fd8,prev_child = 0x0, 数据= 0x8265fd8)在gnc-mdi-utils.c:861
请注意位置#5的位置为“ gnc_mdi_tweak_menus at gnc-mdi-utils.c:574”? 打开该源文件并找到第574行:
573:小部件= gnc_mdi_child_find_menu_item(mc,“ _View / _Toolbar”); 574:gtk_signal_handler_block_by_data(GTK_OBJECT(widget),info);复制代码
因此,问题出在“ _View / _Toolbar”的翻译上。 “ /”是菜单分隔符,因此您现在知道问题出在“ _View”或“ _Toolbar”的翻译上。 通过切换到英语gnucash(LANG = C)并浏览.po文件,您应该能够找到问题所在。 将令人讨厌的翻译更改为您在gnucash应用程序中看到的内容。 请记住,翻译必须包含适当的下划线。
观看文件访问
要在gnucash访问文件时对其进行跟踪,
strace /选择/ gnucash-git / bin / gnucash
谢谢你
非常感谢所有翻译人员的辛勤工作和出色的工作。
检查Repo gnucash的doc目录中的文件
- 笔记
- 该目录的内容已通过
错误797111进行了一些清理 。
从理论上讲,可以创建本地化的手册页(<command>。<man-section> [。in])。 但是它们的内容几乎与 <command> --help
相同 ,后者已翻译为 gnucash
和 gnucash-cli
。
- 任务
- 我们也应该在perl模块中使用gettext。
- 如果要添加的文件将它们添加到
组(doc_DATA ...)
中 的CMakeLists.txt 。
翻译《 GnuCash指南和帮助》
本节介绍翻译手册所需的操作。 当前有2个部分:
- 教程和概念指南 :这是对双重记账的基本原理及其在GnuCash中的应用的介绍。 这段文字对新用户确实有用。
- 帮助 :这是上下文相关的帮助系统。
如果您有兴趣翻译这些文档,请决定是 只 翻译现有文本还是要改进和交叉检查文本,使其与程序中使用语言的实际状态相符。 仅翻译文本会花费较少的精力,但是如果您翻译的解释不再正确,您也将面临进行不必要工作的风险。 仅以英语文本为灵感,以您的语言创建新文本可能会花费更多的精力,但这肯定会带来更多有用和更有用的文档。 我们(程序员)鼓励您这样做,并以您的语言创建一个新的文本。 当您从事这项工作时,决定权就在您自己身上。
这两个文件都包含
- ' 名为 DocBook 的XML格式的'文本 文件 ,其中完整的文档按章节分为xml文件的集合,并且
- 图片 :
- 在少数 可缩放的矢量图形 (SVG)中,您可以替换本地化文件中的文本。
- 但是大多数 截图 是作为 可移植网络图形 (png)文件存储在子目录图形/中的。 xml文件将包含指向png文件的链接,这些链接应在文本中显示。
- 也可以看看
- 文档更新说明#屏幕快照和图像
在开始时,您可能希望专注于文本。 如果需要,可以链接 C / figures
的英语图片 。
您可以在 创建DocBook文档中 找到DocBook的简介 。
请使用 统一的术语 :程序消息的翻译者应已创建 #词汇表文件, 用于翻译程序中的主要用词。 请确保在文档中也使用相同的术语。
您可以检查 每晚的版本 -尤其是在提交更新之后。
先决条件
的Linux
除了用于运行autogen.sh的软件,在Linux上进行开发还需要以下附加软件。 从 截至2019-02-19的gnucash-docs / README 文件中:
- libxml2
- libxslt [Debian将所需的xsltproc打包在一个单独的软件包中,
取决于libxslt]
- docbook-xsl
- 拉里安或
滚动保持器> = 0.3.4(其祖先)
- yelp(用于查看)
可选的:
- gnome-doc-utils(包含
xml2po,
以便像it转换中那样使用po编辑器)
生成Mobipocket的其他要求:
生成chm的其他要求:
- Mingw( http://www.mingw.org )
- HTML帮助研讨会( 适用于Win XP的 https://www.microsoft.com/en-us/download/details.aspx?id=21138-8 )
生成PDF的其他要求:
- Apache FOP> = 0.95
对于日语PDF,包含日语字体。 如果要使用其他日语字体,可以使用--with-japanese-fonts-dir,--with-japanese-mincho-ttf和--with-japanese-gothic-ttf配置选项来选择它们。 从1.1版开始,fop的TTFReader仍然无法处理OpenType字体。
Wiki编辑者注意事项: 保持以上部分与 gnucash-docs / README 同步 [7]
其他作业系统
Wm说下面的部分正在编辑中,尚未完成,请参阅gnucash-devel中的“ Help with help”线程以获取更多信息
苹果系统
目前,我们尚不知道适用于 macOS的 DocBook文件工具集, 尽管Mac上的* nix方法可能/应该起作用。 我们鼓励采用解决方案,因此,如果有人可以记录下来,我们将不胜感激[Wm:顺便说一句吗? 大多数现代Mac都不包括* nix,所以可能适用与我为Win提供的类似说明吗?]
视窗
在 Windows 上能够编辑和生成DocBook文件的一种方法 是使用cygwin下的* nix指令。 以下是获取合适工具集的说明
- 通过转到 https://www.cygwin.com 并按适合您系统的setup-*。exe文件的链接来 获取cygwin
- 保存它,对其进行病毒扫描等,然后根据需要运行它
- 在搜索框中输入“ libxslt”
- 展开Libs并按“跳过”,以便显示所有3个GNOME XSLT库选项的版本,您需要默认提供的最新版本,cygwin将计算出gndependencies
- 您可以按照类似的步骤获取git,即在搜索框中输入“ git”,展开并勾选明显的候选对象
- 注意:因为这些是基于* nix类型文本的实用程序,所以您要下载的是数百KB而不是megaByte; 放松,这不是Windows Update,一些额外的编程不会杀死您的系统,保证
- 在底部的rhs处单击“下一步”,让cygwin进行操作; 这可能需要一些时间,具体取决于两端的连接速度
- 另外:如果您收到有关“软件包:未知软件包/ inetutils.sh退出代码1”的消息,则在阅读完整的内容后,您可能会忽略它,当然,除非您有很多建议,否则我不建议您尝试对其进行跟踪空闲时间在您手上
- 完成后,启动cygwin并按照* nix指令进行操作
更多详细信息:
- 不要寻找
- 耶尔普(观众)
- 在cygwin上:它不存在; 这是一个古老的编(我认为是上次更新是在2007年,
错误,请参阅 https://download.gnome.org/sources/yelp/ 了解来源,并 查看 https://cygwin.com/packages/summary/yelp.html 了解cygwin。 - 费尔 17:21,2013年10月26日(美国东部时间)
),但如果将其安装在其他操作系统上可能会有用,则不应将其视为最新版本
[Wm:
- 我想知道目前有多少* nix用户拥有它?
据我所知它仍然是GNOME桌面的一部分: 谷歌搜索叫喊+侏儒 - 费尔 17:21,2013年10月26日(美国东部时间)
应否使yelp变得不那么突出?
这是我知道从GnuCash内部获得一些上下文相关帮助的唯一方法。 - 费尔 17:21,2013年10月26日(美国东部时间)
]
Wm说上面的部分正在编辑中,尚未完成,请参阅gnucash-devel中的“ Help with help”线程以获取更多信息
Java(所有操作系统)
Eclipse 有
- 几个Git插件,
- 具有自动工具支持的C开发工具,
- 功能丰富的内置XML编辑器和一些插件,例如XML WYSIWYG编辑器
或者换句话说,这里需要的一切都可以使用。
程序,流程
首先,您必须下载gnucash-docs软件包的最新版本。 这样做如下:
- 在目录 gnucash-docs中 签出文档 :
git clone https://github.com/Gnucash/gnucash-docs -b maint gnucash-docs
- 创建您的工作分支。 如果您打算使用请求请求,则应使用诸如 guide-LL-chapter-x-part-n之 类的唯一名称, 而不要使用工作分支。
git checkout -b working-branch
- 在guide / <locale>中创建一个新目录(如果尚不存在),其中<locale>的格式为<language> [_ <region>],例如es,en_GB或pt_PT。 请参阅 #命名约定 。
有关 详细信息, 请参见 Locale_Settings#IETF_language_tags 。
如果您的翻译是您所用语言的第一个,请不要添加区域代码。 因此,其他地区也可以从您的翻译中受益。
并将文件从guide / C复制到此目录中:
cp -r guide/C guide/LL
- 不以拉丁字母书写语言
- 他们需要附加文件才能将文件打印为pdf。 请参阅
ja
或ru
作为示例。
- 将您创建的目录添加到[gnucash-docs /] configure.ac (作为新行 指南/ AC_OUTPUT下的<language> [_ <region>] / Makefile )和[gnucash-docs /] guide / Makefile.am(位于SUBDIRS的结尾)。
- 通知git有关新目录和文件的信息。 “ *”用“ \”引用。
git add guide/LL/\*.\*
- 现在真正的工作是:
- 编辑 所有xml文件 ( 有关合适的编辑器程序, 请参见 下面的 #DocBook xml编辑 器),然后将其翻译成您的语言。
- 如果英文文档得到更新,则在表格的各章标题中添加注释可能会很有用:
<!-基于maint / master提交的翻译1234567 2014-01-01 10:00 UTC->
然后,您以后可以在一个窗口中查看当前版本与该英语文件版本之间的差异,以查找更改并在另一个窗口中调整翻译。 一些翻译人员还喜欢在图形差异程序(例如KDiff3)中进行英语和他们的语言之间的翻译,因为
<sectN id>
s会同步文本。- 使用与 #The_glossary_file中 相同的terminoloy 。 如果没有 #Get_the_source_from_Git ,则只需从 GitHub 的 词汇表目录 下载语言.po文件 。
- 调整
gnucash- {guide | help}-<lang> .omf
。 该文件遵循 Open Metadata Framework (OMF),它是 都柏林核心 元数据描述 的子集 。 有关 诸如强制性标准元素之类的详细信息, 请参见 编写ScrollKeeper OMF文件 。 没有该文件,您的文档将不会显示在 yelp 的索引页中。 将来,我们可能会使用 Gnome Doc Utils 从文档中自动提取这些数据 。 当前, 在$ {docname)-C.omf
两次出现的情况下, 也有必要在{guide | help} / <lang> /Makefile.am中用<lang>替换
“ C” 。 - 有一些常规标头,它们不会出现在您的语言环境目录的xml文件中。 但是可以通过 在xsl / l10n.xml中 添加一个部分 来翻译它们 。 一开始要听从评论。 如果使用非ASCII字符,则应运行
recode -d <input_encoding>..h0 l10n.xml
,其中对UTF8而言input_encoding可能为u8,以便对其进行正确编码。 - 除文本外,您还需要 在guide / C / figures中 重新创建图像文件, 以使其适合您的语言。 有关详细信息(大小,样式等),请参见 Documentation_Update_Instructions#Screenshots_and_Images 。
- 其中大多数 是gnucash会话的 屏幕截图 -将它们另存为png文件,因为这将使用无损压缩。 从理论上讲,gnucash / doc / examples中的某些文件可能是其起点,但目前-2010-09-17已损坏。
- 一些数字采用 可缩放矢量图形 (svg)格式。 在这里,您可以编辑文件,例如在 Libre / OpenOffice中 ,翻译字符串并调整大小。
- 注意:文档本身 可能在许多地方已经过时 ,因为它是为gnucash的1.8.0版本编写的。 您可以在 Concept_Guide#Ongoing_work中 观看当前进度 。 如果您遇到任何与当前版本的gnucash错误的描述,请毫不犹豫地忽略英语原始文本,而在翻译中描述当前版本的gnucash的情况。 如果您还有时间更改英文原始文本,或者至少 要针对它提交错误,那就 更好了 ,但是即使您不能这样做,也可以在翻译中随意描述gnucash的实际状态。只需忽略原始英文文本即可。 如果您针对英文文本提交了补丁程序,那么您也可以提交补丁程序,该补丁程序会将您的姓名和电子邮件地址添加到“作者”中,因此您将成名。 ;-)要求对gnucash / DOCUMENTERS也应用后一个补丁,因为这两个文件应具有相同的内容。 有关编辑英文文本的更多详细信息,请参见《 文档更新说明》 。
- 编辑 所有xml文件 ( 有关合适的编辑器程序, 请参见 下面的 #DocBook xml编辑 器),然后将其翻译成您的语言。
- 通过 在主文件gnucash- {guide | help} .xml 上 运行 xmllint 来 测试xml文件的语法错误 ,例如: ' '
xmllint --valid --noout gnucash-guide.xml
程序 xmllint 是软件包 libxml的 一部分 。 提示: 一些 xml感知编辑器 有一个菜单项,例如 validate 来运行此测试。 - 可选:使用yelp测试您的工作-有一些构建系统方法可以为您提供支持。 确切的步骤因您选择的构建系统而异:
- 使用终端,转到您的gnucash-docs目录
cd / path / to / gnucash-docs #用实际路径替换示例路径
- 创建一个构建目录并进入
mkdir构建
- 设置选择的构建系统
#在基于自动工具的构建系统上运行(不建议使用!) ./autogen.sh 光盘制作 ../configure --PREFIX = ../install# 或为基于cmake的构建系统运行(首选) cd构建 cmake -D CMAKE_INSTALL_PREFIX = ../安装
以上步骤仅需运行一次(尽管多次运行是安全的)。 在处理文档时,可以根据需要重复执行以下操作。
- 要在编辑时检查工作,可以运行
做支票
- 如果您只想检查工作,则需要一个不同的命令,具体取决于您的构建系统。 每个命令都从构建目录的顶层开始,在此示例中,我们将检查该指南德语版本的工作:
#为基于autotools的构建系统运行(不建议使用!) (cd guide / de && make check ) #或为基于cmake的构建系统运行(首选) 进行de-gnucash-guide-check
这将
xmllint
在整个目录结构上 运行 上面 的 命令。 顺便说一句,您可以使用其他格式(例如pdf或html)来生成文档,方法是 分别 将上述命令中的 check 替换 为 pdf 或 html :#为基于autotools的构建系统运行(不建议使用!) (cd guide / de && make pdf ) #或为基于cmake的构建系统运行(首选) 制作de-gnucash-guide-pdf
- 为了能够在yelp中查看您的作品,您仍然必须安装它。 从构建目录运行:
进行安装
- 要在yelp中查看您的工作,请使用以下命令
#在下面的命令中,将 #<language> 替换为您要查看的文档的语言,例如C(英语),de(德语),... #/ path / to / gnucash-docs用文档 #<docname>以及要查看的文档 的源目录的真实路径,或者gnucash-help或gnucash-guide LANG = <language> XDG_DATA_DIRS = / path / to / gnucash-docs / install / share:$ { XDG_DATA_DIRS }:/ usr / local / share:/ usr / share yelp gnome-help:<docname> #示例: LANG = pt XDG_DATA_DIRS = / path / to / gnucash-docs / install / share:$ { XDG_DATA_DIRS }:/ usr / local / share:/ usr / share yelp gnome-help:gnucash-guide
- 或者,您可以直接通过以下方式打开已安装的文档:
yelp / path / to / gnucash-docs / install / share / gnome / help / <docname> / <语言> / <docname> .xml
- 重复这些步骤,直到您对结果满意为止。
- 使用终端,转到您的gnucash-docs目录
- 经常更新本地仓库的分支:
git checkout maint # switch to maint
git pull --rebase # update it
git rebase maint working-branch # update working-branch
git checkout working-branch # switch back to working-branch
- 遵循 #直接将您的工作提交给GnuCash 。
若要翻译帮助文件,请重复步骤2-10,但将“ guide”目录替换为“ help”。
提交者: 如果构建良好,则将目录更改从2.也添加到 gnucash / maint / packaging / win32 / install-impl.sh中,
并在需要时将更改合并到master。
DocBook xml编辑器
为了编辑这些DocBook xml文件,可以使用各种编辑器: https : //en.wikipedia.org/wiki/DocBook 可能包含指向某些 文件的 指针,或者还包含 https://www.tldp.org/LDP/LDP-Author- Guide / html / tools-edit.html 。
一些开发人员使用 Eclipse 。
[ 德国维基百科 说,翻译工具 OmegaT 可以在docbook上使用。
有人说AbiWord和OpenOffice / LibreOffice支持DocBook,在这种情况下,您可以使用DocBook直接编辑gnucash的xml文件。 但是,这些编辑器可能无法使用当前的多文件设置,因为每个章节都位于单独的XML文件中,而主XML文件包含指向章节文件的指向。 解决方法是,您可以通过纯文本编辑器将主XML文件的相关部分复制到章的文件中,以使其看起来像一个DocBook文档。 可以使用OpenOffice / LibreOffice打开它,并按常规进行编辑。 之后,需要再次删除主文件中添加的部分,然后您就可以编辑章节文本了。
使用po编辑器
一些翻译人员更熟悉使用po文件编辑器(例如poedit,Kbabel,Gtranslator等)。对于这些人来说,可以将帮助文档(DocBook XML文件)的内容转换为po文件,将消息翻译为po文件,然后将结果转换回xml。 本节介绍如何将这种方法用于gnucash帮助文档。
- 这种方法的缺点
- 在您不活动的时候,文档记录员将很难修复例如断开的链接。
为了使用po文件,您必须首先将xml文件转换为po文件,将它们转换然后再转换回xml。
首先,您必须安装gnome-doc-utils的新版本。 例如在Fedora 13系统中
yum install gnome-doc-utils。
- 使用以下命令进行转换(xx是您的语言代码,例如:el表示希腊语):
xml2po -o helpfile.xml.pot helpfile.xml
mv helpfile.xml.pot helpfile.xml.xx.po
- 使用您喜欢的po编辑器翻译helpfile.xml.xx.po。
- 转换回xml:
xml2po -e -p helpfile.xml.xx.po -o xx_helpfile.xml helpfile.xml
- 如上所述测试您翻译的xml文件:
xmllint --valid --noout xx.helpfile.xml
- 从xx_helpfile.xml中删除xx,并准备在语言帮助目录中提交它
损坏的OpenSuse帮助系统的解决方法
与OpenSuse 10.x和11.x中的帮助系统一样,有一个解决方法,可以查看工作结果。 在您的系统中找到gnucash-guide.xml,可能是/ usr / local / share / gnome / help / gnucash / C。 然后从该目录执行
xmlto -o /您想在哪里存储文档的路径/ html gnucash-guide.xml
这将使文档的html副本。
将包含内容的'figures'目录复制到上面的html目录中,并在浏览器中将书签设置为index.html,以便您在需要时可以获取所有文档。 上下文相关的功能丢失了,但是对于一般阅读它是有效的。 [2]
GnuCash维护者任务
对于新语言,核心开发人员还有一些其他任务:
新剧本
检查 make pdf
! 我们是否需要其他TTF?
第一个每晚
要求code.gnucash.org的管理员创建新目录。
初版
调整htdocs ...
如何转换包含新帐户层次结构的文件
本节介绍了转换包含新帐户层次结构的文件所需的操作。
初步考虑
但是,请花点时间考虑一下帐户层次结构模板的意图。 与gnucash中的任何其他文件相比,这些文件的意图与语言相关得多。 逐个字符串的翻译不是最好的做法。 相反,您可以并且应该找到一种实际的建议帐户结构,该结构应符合您的语言要求,并以您的语言实现。 借此,我的意思是几个英语帐户仅在美国才有意义,而在其他国家则可能没有意义。 因此,您的翻译帐户模板不应包含它们。 另外,如果用户可能需要,还可以为您的语言添加帐户模板的其他部分。
例如,在美国,用户很可能拥有汽车,因此,存在“汽车”的帐户结构模板。 如果在另一个假设的区域中用户可能拥有而不是汽车的宇宙飞船,则应该删除“汽车”模板,而是创建一个新的帐户结构来表示与该宇宙飞船的所有权有关的所有帐户,并提供此帐户作为其他“太空飞船”模板。
换句话说,您应该随意创建最适合您的语言的全新帐户模板结构。 英文模板只是一个建议,但将需要进一步的适应,而不是逐字符串的翻译。
话虽如此,这是您开始直接翻译英语模板的方法:
如果存在多个使用同一语言的国家/地区,并且在此模板中仅适合其中一个,则 在本节中始终将 <locale>
替换 为您的 语言代码 和 可选 的区域代码。
先决条件
- 如果之前未完成,请 #从Git获取源 。
初始化帐户/ <语言环境>
- 如果尚不存在,请执行以下步骤来初始化您的
account / <locale>
目录:
- 将目录
accounts / C
复制 到accounts / <locale>
- 在目录
account /中,
更改文件CMakeLists.txt并将您的<locale>添加到两个按字母顺序排序的列表中:add_subdirectory (C ) : add_subdirectory (<locale> ) :
集(accounts_DIST $ { C_DIST } ... $ { <语言环境> _DIST } ... $ { dist_list } PARENT_SCOPE )
- 在
accounts / <locale> /CMakeLists.txt中
调整<locale>:: set_dist_list (<locale> _DIST $ { dist_account_DATA } CMakeLists.txt ) 安装(FILES $ { dist_account_DATA } DESTINATION $ { ACCOUNTS_INSTALL_DIR } / <locale> ) 文件(COPY $ { dist_account_DATA } DESTINATION $ { ACCOUNTS_BUILD_DIR } / <locale> )
- 笔记
- 下面的 #Localize帐户图表 中 讨论了接下来的2个步骤 。
- 本地化
acctchrt_full.gnucash-xea
。 这只是一个帮助文件,在该文件中,您拥有所有与其相关的帐户。 - 现在,通过将
acctchrt_full.gnucash-xe
中 的各个部分合并到 其他acctchrt _ *。gnucash-xea文件中来 创建实际模块 。
- 如果删除或创建新文件,请在
accounts / <locale> /CMakeLists.txt中
调整列表设置(dist_account_DATA ... )
- 每当您更改一个或多个
CMakeLists.txt
文件时,都必须重新运行cd $ { SOURCEDIR } cmake <您的选项> cd $ { BUILDDIR } #例如.build make #或ninja
本地化会计科目表
提示: C / acctchrt_full.gnucash-xea
是一个帮助文件。 因为我们更喜欢模块化,所以它通常不是发行版的一部分。 它包含 个人en_US帐户 的完整树 。 其他 acctchrt _ *。gnucash-xea
文件包含该
文件的单个分支。 因此,翻译后,您可以将各个部分复制并粘贴到其他文件中,以确保它们之间的一致性。
如果您对模板进行模块化,则应从 acctchrt_common.gnucash-xea
开始 -这是最基本的。
对于 该目录中的 每个 所需 acctchrt_ *
文件:
- 将
gnc-act:title
,gnc-act:short-description
和gnc-act:long-description
更改为包含适当翻译的文本。 除了在字符串的结尾和开头之外,请勿在详细描述中添加任何换行符。 - 对于 文件中的 每个
gnc:account
- 翻译
act:name
和act:description
字段。 - 您也可以选择
- 在
<act:commodity-scu>
之后 分配一个 帐号<act:code> 1234 </ act:code
>
或 - 添加一个 注释, 例如
<act:slots> <slot> <slot:key>隐藏</ slot:key> <slot:value type = “ string” > true </ slot:value> </ slot> <插槽> <slot:key>注释</ slot:key> <slot:value type = “ string” >有关此帐户使用情况的其他一些文字</ slot:value> </ slot> <slot> <slot:key>占位符</ slot:key> <slot:value type = “ string” > true </ slot:value> </ slot> </ act:slots>
- 在
- 翻译
- 为避免输入错误,请运行 AccountHierarchyTemplate#Syntax Check 。
- 要显示给用户的新文件必须添加到
account_DATA
部分, 辅助性文件,如 acctchrt_full.gnucash-XEA 到EXTRA_DIST
在Makefile.am
。
再次注意: 您绝对不需要翻译 account / C中的
所有文件 。 其中的一部分也很好。 无论如何,其中一些可能不会应用于您当地的立法/经济体系。 对于真正定制的帐户层次结构,您最好在GnuCash中创建一个新的帐户层次结构文件,然后通过手动编辑xml代码,将其拆分为几个文件,然后从account / C / acctchrt_ *文件中剪切并粘贴适当的标签。
如果您希望 手动 添加 新帐户 ,则需要一些额外的 guid ,那些有趣的随机数。 要获得它们,您可以使用:
uuidgen | sed -e 's /-// g'
或使用像 这样 的在线uuid生成器 (其他任何一种也可以)。 确保取消勾选“连字符”以生成与gnucash兼容的向导。 如果您忘记了密码或使用的站点不提供该选项,只需删除连字符即可。
- 依存关系
- uuidgen 在软件包 util-linux中 , sed 有其自己的软件包。
帐户层次结构模板 描述了如何根据本地规则创建新模板,例如用于商业目的。
测试你的工作
为了在实际条件下测试您的工作,您最终应该 编译并安装 它。 但是 在您的accounts / <locale>目录中 需要调整后的 Makefile.am 之前 。 如果不存在,请从 account / c
复制 并调整它:
- 1.行(accountdir):调整区域设置。
- 如果您删除了帐户图表,请从
account_DATA中
删除其行 , - 如果添加了新文件,请插入带有名称和“ \”(行继续符号)的行。
如何创建本地化的所得税表
- 笔记
- 此部分正在开发中,并且大部分未经测试!
截至2015年初,有一个不错的美国税收模块,带有TXF格式的报告和出口。 此外,每月的增值税申报还有一个小的de_DE派生类。 您可以比较它们以查看如何调整它们以获取其他东西。
税表
由于 Edit-> Tax Report Options
也使用 它,因此它是 GnuCash库的 一部分 :
- 将
我们
复制 到您所在地区的小写ISO代码的新子文件夹中。 它包含以下文件- tax.scm-只是一个链接元素,您必须在您 所在的地区两次 替换
我们
。 - txf.scm-表格,以及
- txf-help.scm-每个TXF代码的描述性帮助字符串。 这也用于在gnucash-docs / help /中获取表
- tax.scm-只是一个链接元素,您必须在您 所在的地区两次 替换
- 它们具有相对简单的表结构:
(定义txf-tax-entity-types
包含不同实体(人员,公司...)的表单列表。
(定义txf收入类别 … (定义txf支出类别 …
包含上述每个列表的条目。 如果将此文件与
de中
的各个文件进行比较 ,则可以看到带有附加类别的本地化示例:(定义txf-资产类别 … (定义txf-liab-eq-类别 …
报告和导出
可能您需要其他出口报告。 这是 https://github.com/Gnucash/gnucash/tree/maint/gnucash/report/reports/locale-specific/us 像
- txf-export.scm
- us.scm未使用
在这里,您可能需要程序员的帮助。
如何翻译网站
- 关于操作系统的注意事项
- 这些说明是针对linux编写的。 它们可能也可以在其他类似unix的系统上运行,但不能在Windows上运行。 在Windows上,如果您设置了类似linux的环境(使用cygwin或MinGW [-w64]),则可以执行此操作,但到目前为止尚未经过测试。 请在这里报告您的发现。
- 检出 https://github.com/Gnucash/gnucash-htdocs
- 运行命令
做锅
- 然后,根据您所用语言的翻译是否已经存在(是否完整)而定:
- 现有翻译
运行命令msgmerge-上一个-U po / LL.po po / gnucash-htdocs.pot
其中LL是您的语言代码,请参阅 上面的 #命名约定 。
- 选择
使msgmerge
- 新翻译
在po目录中运行- 作为翻译
msginit
这会将您的姓名,电子邮件和语言环境设置插入到新文件中。 如果失败,则将新创建的文件po / gnucash-htdocs.pot复制到po / LL.po(其中LL是您的语言代码),请参见 #Build 较早的版本。
- 作为维护者
#设置LL = <语言代码> msginit --no-translator --locale = $ LL
- 如#翻译 .po文件中 所述,翻译po / LL.po 文件 。
- 优先事项
- 高的
- 起始页:{index | externals / *}。phtml
- 低的
- sizing.phtml(已过时)search / templates / NMZ。*(未使用)
- 中等的
- 其余的取决于你。
- 跑步
msgfmt -c --statistics po / LL.po
- 可以选择运行
重新编码-d <input_encoding> .. h0 po / LL.po
- 发送您的LL.po作为
- GitHub拉取请求或
- 将Bugzilla增强请求附加到维护团队。
维护者任务
移至 Language_Administration#Website 。
给开发人员的提示
本部分移至 I18N 。
项目维护者
背景
本节开始进行一些概述, 正在进行中! 除此之外,它还有助于摆脱 版本2.7.6中 过时的 #IntlTool 。 有关详细信息,请参见《 GetText手册》 。
配套
在构建过程中,我们在自行编写的脚本下使用以下软件包:
- glib2-devel:glib-gettextize
- gettext,可能在:
- -运行时:msgfmt,...
- -工具:(自动点),gettextize,msg *,xgettext,...
- -runtime-tools-doc:手册等
- (仅限2.7.5以下)intltool:Intltool *
我们的构建过程
这是旧的(直到2.6版)自动工具的构建过程,它经历了以下脚本:
autogen.sh
- 笔记
- 自动工具最多只能使用2.6分支。 2.7及更高版本,请改用 CMake 。
- glib-gettextize
- 帮助准备通过gettext国际化的源包。 它是 gettext附带 的gettextize 的变体 。
- glib-gettextize与gettextize的不同之处在于,它不会创建intl /子目录,并且不会修改po / ChangeLog(请注意,使用--no-changelog选项调用时,较新版本的gettextize的行为类似于此)。
»请注意,在GNU系统上,您 不需要链接libintl, 因为 gettext库函数已经包含在GNU libc中 。”((glibc) [3]
configure.ac
- 套
ALL_LINGUAS = ...
在最新版本中,可以用po目录中的LINGUAS文件代替它。 我们应该考虑这一点,以区分TP维护与GC维护的翻译。
GETTEXT_PACKAGE =石榴
这是intltool样式。 Gettext使用PACKAGE = ...
AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,“ $ GETTEXT_PACKAGE”, [GetText版本号])
AM_GNU_GETTEXT_REQUIRE_VERSION | AM_GNU_GETTEXT_VERSION(x.yy.zz)可用于要求版本。 我们应该用它来避免...
- TP预期> 0.11。
- gnulib期望> = 0.17
- RHEL7提供0.18.2(RHEL6 0.17)
- Debian Stable提供0.18.1和反向移植0.19.3
- Glade2 msgctxt 和Glade3在0.18.3中实现-2013年7月
- GSettings 和 Desktop 条目的实施时间为0.19- 2014年6月
- 并得到了错误修正,直到版本0.19.3-2014年10月
- 计划 格式字符串在0.19.4得到了修复- 2014年12月
- AppData的 支持: gettext的-0.19.6发布 - 2015-09
- ? 0.19.7中的自定义XML格式
据我所知,<gjanssens> GtkUIManager文件不包含可翻译的字符串。 他们也不在POTFIILES.in中。
- 在我们的最后一次更新时间: gettext的-0.19.8.1发布 - 2016-06
- 适用于Windows的gjanssens sv-> swedish修补程序 位于gettext 0.20中。 这也是第一个版本,它从appdata.xml中提取<developer_name>。 IRC日志
- 最近: GNU gettext 0.20.1发布 -2019年5月12日
然后,autoPoInt可以使用此设置。 从 https://www.gnu.org/software/gnulib/manual/html_node/gettextize-and-autopoint.html 观看警告 :
另一方面,如果您的软件包不太关注最新标准的遵从性,而是希望在稳定的环境中进行开发,请执行以下步骤:
- 确定要在开发过程中支持的最旧版本的gettext(目前,gnulib建议版本不超过0.17)。 运行自动点(而不是gettextize)以将基础结构复制到位(较新版本的gettext将安装您请求的较旧的基础结构)。
- 调用gnulib-tool,然后导入gettext-h模块。 #Fixme:是什么意思?
无论您使用哪种方法来建立基础结构,都必须使用以下步骤来保留该基础结构(gnulib的引导脚本遵循以下规则):
- 当您的脚本运行自动指向时,请随后调用gnulib-tool。
- 在gnulib-tool之后调用autoreconf时,请通过设置AUTOPOINT环境变量来确保不再第二次调用autopoint,如下所示:
$ env AUTOPOINT = true autoreconf-安装
AM_GLIB_GNU_GETTEXT#FIXME:是吗?
- 使用设置运行检查
- AC_PROG_INTLTOOL
- AC_CHECK_HEADERS(ltdl.h,...
dnl确保我们已经安装了正确的gettext AC_MSG_CHECKING(用于有效的gettext / gmsgfmt安装) 如果测试“ $ gt_cv_have_gettext”!=“是” || 测试“ x $ GMSGFMT” =“ x”; 然后 AC_MSG_RESULT(否) AC_MSG_ERROR([找不到Glib Gettext。也许您需要安装gettext软件包?]) 别的 AC_MSG_RESULT(是-$ GMSGFMT) 科幻
makefile.am
有以下部分:
.PHONY:锅 罐:Makefile po / POTFILES.in rm -f po / $(包装).pot $ {MAKE} -C po $(PACKAGE).pot $(srcdir)/po/POTFILES.in:make-gnucash-potfiles .potfiles 如果测试-w $ {srcdir)/po/POTFILES.in; 然后./ make-gnucash-potfiles > $(srcdir)/po/POTFILES.in; 科幻 #创建规则,以便始终可以为以下内容创建po / gnucash.pot #使dist。 po / gnucash.pot:po / POTFILES.in $ {MAKE} -C po gnucash.pot .potfiles:
make-gnucash-potfile.in
从那时开始,这是一个自写的Perl脚本,因为gettext存在多个问题。 它创建 po / potfiles.in ,即“包含可翻译字符串的文件列表”。 在基于cmake的gnucash构建环境中不使用此脚本。 由于gnucash 2.7.4及更高版本仅是cmake,因此从该发行版开始已删除此文件。
xgettext
- xgettext
- 从给定的输入文件中提取可翻译字符串。 请参阅--language以获取受支持的列表:
- --language = NAME
- 识别指定的语言( C , C ++ ,ObjectiveC,PO,Shell, Python ,Lisp,EmacsLisp,librep, Scheme ,Smalltalk,Java,JavaProperties,C#,awk,YCP,Tcl, Perl ,PHP,GCC源,NXStringTable,RST , Glade ,Lua,JavaScript,Vala, 桌面 )
- 选项,我们应该检查:
- --copyright-holder = STRING
- 在输出中设置版权所有者
- -外国用户
- 省略外国用户输出的FSF版权
- --msgid-bugs-address =电子邮件@地址
- 设置msgid错误的报告地址
- 跳起来 ↑ 如果没有
LANG = C,
您将看到本地化的标准按钮,但现在您希望以美式英语查看所有内容。