帮助:扩展:翻译/页面翻译管理

From mediawiki.org
Jump to navigation Jump to search
This page is a translated version of the page Help:Extension:Translate/Page translation administration and the translation is 82% complete.
Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Esperanto • ‎Kiswahili • ‎Lëtzebuergesch • ‎Türkçe • ‎Zazaki • ‎català • ‎dansk • ‎español • ‎français • ‎italiano • ‎lietuvių • ‎polski • ‎português • ‎português do Brasil • ‎slovenčina • ‎svenska • ‎čeština • ‎беларуская (тарашкевіца) • ‎македонски • ‎русский • ‎українська • ‎עברית • ‎العربية • ‎فارسی • ‎मराठी • ‎हिन्दी • ‎বাংলা • ‎中文 • ‎日本語 • ‎한국어

“什么”:页面翻译功能支持把 wiki 页面翻译为其他语言。 这意味着每种翻译的内容通常都等同于源页面。 与之不同的是,例如在不同的维基百科中,不同语言的条目内容完全是独立的。 一般假定为页面仅从一种主要语言翻译为其他语言,不过译者也可以利用其他存在的翻译。

“为什么”:如果不利用辅助工具,翻译大量页面到其他语言最好的情况也会成为耗时的事情,最糟糕时会变成无法管理的一团乱麻。 通过页面翻译功能,您可以避免混乱并在翻译过程中保持结构清晰。 核心方法是把源文本分割成更小的单元,在翻译时每个单元保持独立。 把源文本分割成单元后,所有的改变都是独立的,译者只需更新源文本有变化单元的译文。 同时也让译者可操作于可管理大小的单元或在后面的会话中继续,而不用一次性做完。

“谁”:页面翻译指南深入并且详细地说明了系统工作的原理,并提供了适用于大部分情况的最佳实践的建议。 本页面专门提供给页面翻译管理员和编辑可译页面源文本的每个人的,即使后者无法访问批准翻译变化的管理功能。

如要申请翻译管理员的扩展权限,请前往Project:Requests

翻译页面的生命力

角色。多人参与编写和翻译 wiki 页面的过程:最初有编者创建页面,有人纠正拼写错误,页面翻译管理员标记页面待翻译,译者翻译页面,有人修改了页面,翻译管理员标记这些修改为待译接着译者更新了译文。 这些角色多少有些重合,不过无争议翻译的根本责任在于页面翻译管理员。 他最开始决定页面是否适合翻译,确保片段分割合理及批准(或改正)变化。

预备。在翻译之前您必须编写内容。 如果您未使用翻译扩展就完成了翻译,请参阅下面的有关迁移翻译的段落。 如果您想快速完成大量翻译,确保原词条的完整与准确十分重要。 在标记页面为待译前,让别人先校对过,如果可以的话,让语言专家把文本调整到更简洁清晰。 生涩的词汇和难懂的句子会给志愿者的翻译产生障碍。 标记也可能给译者带来问题,不过作为翻译管理员您可以去除这些问题,请参阅下面的有关标记处理的段落。 通常情况下您对翻译的源内容的修改会要求强制更新所有的现有译文,所以最好等到页面内容稳定后再进行。 另一方面,改变会发生,系统也能正常处理,因此请检查下面的有关处理变更的段落

加标签。当文本已经适合翻译时,每个人都可以把需要翻译的部分括在 ‎<translate> 标签中并添加 ‎<languages /> 栏到页面。 后者在页面中增加了当前页面的所有译文列表及翻译完成百分率。 这是表示存在译文的唯一提示。 请参阅下面的加标记的具体方法。 系统能检测到在可译页面包含的标签,且该页将会出现待译标记。 如果您忘记加上闭标签或类似问题,它还会提示并无法保存。 可译页面还会列出于 Special:PageTranslation 的等待标记部分。

标记。添加标签后,翻译管理员标记页面为待译状态。 其界面的说明在页面翻译示例。 翻译管理员的职责是确保分割合理、所加标签合适。 如果在这期间内容改变了可以再次标记该页。 请参阅下面的如何做出产生最小扰乱的更改。 页面的标记开启了使用 MediaWiki作业队列的后台进程。 该进程扫描每个翻译页面并重新生成:反映出翻译页面模板的变化并把过时翻译临时替换为源文本。 反之,立即更新翻译界面。

变更。用户可以继续修改源页面的内容。在查看源语言页面时可以看到该变更,从标记为翻译的可译页面最新版本中提取了翻译单元后翻译页面中也可以看到:如果翻译了所有单元则会提示 100%,即使此时源页面发生了新变更。查看源语言的可译页面时您可以很容易看到未标记的变更:在页面靠上的位置会显示通告提示您可以翻译本页及链接到包含的变更。

过时。如果可翻译的页面源代码被更改了,则翻译管理员可以选择对每一段进行“不要使翻译作废”。 如果一个段落是过时的,则被翻译的语言的那一段会有粉红色背景,翻译界面会显示一个钟的图标,翻译者可以看到。 如果一个段落并未过时,那么被翻译的页面对读者不会造成变化,译者会通过翻译界面检查段落以查看变更。

源语言。还有个含源语言代码的翻译页面,不过这种翻译页面不包含附加标记和其他可译的源页面中使用的翻译相关标记。它不会链接到翻译界面,不过在转置(通常用于可译模板)或导出页面时很方便。 比如,你当前所在的页面是在没有标记的Help:Extension:Translate/Page translation administration/en可用的。

改变源语言。扩展会自然地假设翻译的源语言是wiki的默认语言。管理员可以通过Special:PageLanguage页面改变特定页面的语言设置,从而可以用作待翻译的源页面。参见页面内容语言以了解详细。

翻译语言。如果没有完成翻译,翻译页面可能包含其他语言的文本。 在翻译页面,未翻译的单元会显示为相应的语言和文本方向,以便 CSS 规则能够正常应用。 然而 MediaWiki 目前并不支持将部分文本设为其他语言来解析,只能设定整个页面的语言。 即使周围文字仍未翻译,所有魔术字和解析器函数也都使用翻译的目标语言。 这可能会造成不匹配的问题,例如数字和日期的格式错误。 一些魔术字和解析器标签支持设定输出语言,这样的话您可以使用{{TRANSLATIONLANGUAGE}}魔术字,它在未翻译的单元返回源语言,在已翻译的单元返回目标语言。

封闭的翻译请求。一些可译页面的内容只在某段时间中有意义,例如通告和周期性的状态更新(如维基媒体每月亮点)。您可以让这些页面包含翻译,但从翻译界面中隐藏它们。这样不会阻止这些页面之后进行翻译,不过极大降低了用户偶然翻译它们的机会。设置为不建议翻译和恢复可在 Special:PageTranslation 中进行。

优选语言。您还可以指定特别想翻译的目标语言列表,保持语言列表为空表示允许翻译为所有语言。这样的页面让不在优先列表中的语言感到泄气(请参阅前段),翻译为这些语言时,译者会看到提示。您还可以阻止翻译为其他语言,这表示它们在别处使用但在这里您不希望如此。

分组。 可以把相关页面分组在一起。 这些组与其他信息组类似, 它们有自己的统计且包含所有子分组的信息(此时为可译页面)。 该功能可用于Special:AggregateGroups。 默认在 Special:Translate 的组选择器中 Special:LanguageStats 是收缩显示聚合信息组的。

移动。您可以像其他页面那样移动可译页面。移动时可同时选择移动所有未译子页面。移动时通过后台作业来移动许多相关页面。正在移动时,无法翻译该页面,完成后会记录在翻译日志中。

删除。与移动类似,可在标准位置找到删除功能。您可以通过删除按钮删除整个可译页面或只是其中某种翻译页面。删除操作会同时删除所有相关的翻译单元页。像移动那样,删除也是在后台作业中进行,完成后会记录在页面翻译日志中。该操作需要“delete”和“pagetranslation”权限,不过如果是删除单个翻译单元页则只需标准的“delete”权限。

恢复。类似地,恢复不当编辑也如平常(包括回退按钮):您只有在编辑有效的翻译单元后,译文页面才会更新。要在译文页面中找到对翻译单元的编辑,请点击编者的“贡献”链接,寻找该时间附近的编辑。

保护。可以在 保护可译页面。无法保护译文页面,也无法保护它们所扩展自的可译页面。要阻止译文的后续编辑,您应该把源语言添加为唯一优先语言并禁用到其他语言的翻译,请参阅上面的优选语言。这两种操作一起可有效阻止对源页面和包含其翻译单元的译文页面。还可以包含单个翻译单元页面,不过不建议这么做。

从译文中移除。还可以取消翻译标记。您可以使用Special:PageTranslation 或点击可译页面顶部的链接来将其从译文中移除。这样会去除有关页面翻译的结构元素,但原位保留所有现存页面且可自由编辑。不推荐这么做。

Language aware transclusion. It is possible to transclude a translatable page into another page as a template. In such a case, the translatable page will be loaded in the language of the source page if it has been translated to that language. If that translation does not exist, the translatable page will be loaded in the source language. This behavior of a translatable page is controlled by the Enable translation aware transclusion for this page option when marking the page for translation. New translatable pages will have this behavior turned on by default.

可译页面的拆分

翻译可可译页面会生成许多页面,它们一起组成了可译页面:他们的标题由可译页面决定:

  • Page(源页面)
  • Page/<language code>(译文页面,加上没有嵌入部分的源页面)
  • Translations:Page/<translation unit identifier>/<language code>(所有翻译单元页)

此外,还有提取自源页面并保存在数据库中的翻译页面目标和翻译单元。系统会跟踪源页面哪些版本包含翻译标记和哪些版本已标记为翻译。

每次更新翻译单元页时,系统会重新生成相应的译文页面。该操作会产生两次编辑。最近变更中默认隐藏翻译单元页的编辑,不过可在翻译过滤器中选择“显示翻译”让其显示出来。除编辑翻译单元页外的其他操作(如删除和移动)都不会重新生成相应的译文页。

如果你需要源页面不带标记的副本,比如粘贴到另一个维基但不带Translate,

  • 识别源语言代码(比如对于英语,是en),然后访问页面名称/语言代码
  • 点击“查看历史”按钮以到达像这样的地址,并将地址栏中的action=history替换为action=raw,请输入:
文本会被显示或保存的

分割

一般原则:

  1. 所有要翻译的文本必须括在 ‎<translate> 标记内。一个页面可以有许多对翻译标记。
  2. 这些标记外的所有内容在任何译文页面中都保持一致。这些静态文本及标记每个翻译单元替换位置的占位符被称为翻译页面模板。
  3. 太多的嵌入项会使译者很难翻译。请使用更多放置良好的 ‎<translate> 标签来移除嵌入项。
  4. 带有 ‎<translate> 标签的文字会被分割成翻译单元,它们之间会有一或多个空行(两个或更多新行符)。

限制。页面翻译功能给文本附加了一些限制。 所有标记都不应跨两个或更多翻译单元。 换句话说,每个段落都应该是自包含的。 目前软件并不强制如此,但若不符合则页面会渲染错误,这完全取决于 MediaWiki 自身是否能修复最终输出的 HTML。

解析顺序。需注意,在其他标记中的 ‎<translate> 标记会表现异常,因为它们无法穿过解析器。 这样通常不会出现问题,不过如果您在尝试新点子则可能会。 详细地说,在任何其他标记如 ‎<pre>‎<source> 之前解析它们,‎<nowiki>是个例外,翻译扩展会识别它们。

在Translate版本2020.10之前,‎<nowiki>不会被持续处理,页面仍会出现在Special:PageTranslation。 可以将“&lt;translate>...&lt;/translate>”转义。

标记放置。如果可行,请把标记放在自己的行中,内容和标记间不用空行。有时无法做到,例如当您要翻译被标记包围的一些内容但不翻译标记时。这样也行,例如:

{{Template|1=<translate>一些本地化的参数</translate>}}

要让这样有效,该扩展有个简单的空白处理:保留空白,但如果开放或闭合的 ‎<translate>‎</translate> 标记是一行中唯一的内容则例外。此时忽略在开放标记后或闭合标记前的新行符。也就是说它们不会在渲染后的页面中产生额外的空白。

变量。像模板变量那样使用变量是可行的。其语法为 $code1contents$code2。在翻译时会显示为 $name,而在译文页面会自动被替换为在可译页面定义的值(因此它们是适用于所有译文页面的全局“常量”)。变量可用于隐藏翻译单元中的不可译内容,还可用于经常更新的数字类似的内容。通过在可译页面源和重新标记的页面中改变该数字,可更新所有译文中的这个数字。您无需让译文失效,因为这个数字不是翻译单元页的一部分。

Before Translate version 2021.04, the syntax was <tvar|name>contents</> (T274881). This syntax is still supported, but it is deprecated.

逗号分隔的值。对于像Graph数据这样的内容,需要被软件解析为逗号分隔的值,你应该在每个逗号之间分隔翻译单元,这样翻译管理员不会使用本地化的逗号导致软件不识别。

纯文本值。 如要避免任何类型的翻译值的修改,使用像这样的nowrap属性:<translate nowrap>...<nowiki> 默认过时的和未翻译的值会被修改,以便支持高亮和语言标签。

嵌入部分示例

下面列出一些处理这些嵌入的wiki元素的可选方法和建议。

分类 有两种方式添加分类:在译文页面的目标或某个翻译单元中。如果您在译文页面模板中使用分类,则所有的译文会以相同分类结束。如果在翻译单元中使用目标,则您应教会用户命名的结构。另一方面我们显示两种独立于技术方面的可行结构。

通过添加后缀翻译:Category:Cars/fi(推荐使用)

[...]
</translate>

[[Category:MediaWiki{{#translation:}}]]
  • 分类页面名称不翻译(就像页面名称)。
  • 每个语言都使用一个分类。
  • 页面中的翻译功能可用于翻译分类:分类间比较链接在一起,它们的标题可以翻译(但链接及类似位置中的分类名不行)。

不翻译: Category:Cars

  • 所有译文划归一分类(如果只有少量语言的话很好,但有很多语言时就不是很合适)。
  • 分类名称不要翻译(可以像模板一样原样放置)。
标题 标题原则上可以和后面的段落联系在一起,但是最好使它们和空行隔开。这样就可以在浏览内容时快速翻译目录。给标题加标签时,需要把标题标记囊括在标签内,并在开启翻译标签和标题标记之间添加一个新行,否则MediaWiki不再恰当地识别它们。比如,段落编辑仅对示例中推荐的标记有效。标记会直接给予翻译者一个上下文:他们在翻译标题。

错误:

== <translate>文化</translate> ==

错误:

<translate>== 文化 ==</translate>

推荐分割:

<translate>
== 文化 ==

Lorem ipsum dolor.
</translate>
图片 确实包含语言特定的内容的图像应该把整个图像语法囊括在一个单元中。其他图像可以只给描述加标签,并在标记后,在消息文档中添加可选的提示。
<translate>
[[File:Europe.png|thumb|包括首都城市的欧洲地图]]
<translate>
[[File:Ball.png|50px|<translate>球形图标</translate>]]
链接 链接可以在内部的段落中包括。这允许改变链接标签,但也会将链接目标改变为本地化的版本(如果有)。

如果目标页面也翻译(而且也应该翻译),你应该通过在标题前加上Special:MyLanguage/。只有链接标签会需要被翻译,因为这会自动地将用户重定向到他们自己的用户语言的翻译页面,比如,就像通过UniversalLanguageSelector选择的。但是,要实现恒定的行为,语法必须使用在所有链接上。

因为标题也被翻译了,所以你不能够依靠标题的自动生成的id。你可以添加你自己的锚点。如要把这些锚点标记放在翻译模板之外,你需要把页面分成多个‎<translate>标签对,在标签之外放置这些锚点标记。

内部链接:

<translate>
Helsinki是Finland的首都。
</translate>

链接至翻译页面

<translate>
它有有许多[[Special:MyLanguage/Seagull|海鸥]]的海滩。
</translate>

外部链接:

<translate>
PHP([http://php.net 网站])是编程语言。
</translate>

页面中的链接:

<span id=culture></span>
<translate>
== 文化 ==

Lorem ipsum dolor.

...

更多关于食物的信息,参考[[#culture|关于文化的段落]]。
</translate>
列表 列表可能很长,所以可能需要将列表分割成多个部分,每个单元中只有一项。

Do so only if the items are sufficiently independent to be translated separately in all languages: don't create "lego messages". For instance, you must avoid to split a single sentence in multiple units, or to separate logically dependent parts which may affect each other (with regard to punctuation or style of the list, for instance). 要拆分列表,请为每个项目使用‎<translate>标签,但不要包含前导星号/井号/分号。 不要添加空行,以防破坏HTML输出。

* <translate>一般原则</translate>
* <translate>标题</translate>
* <translate>图像</translate>
* <translate>表格</translate>

or

<translate>
Please visit:
* our main page
* then the FAQ page.
</translate>
数字 带有数字或其他非语言的元素时,你可能需要把数字作为不需要翻译的内容,使之成为变量(variable)。这样有以下好处:
  • 你可以更新这些数据,而不会使之过时。
  • 翻译记忆忽略这些数据变化效果更好。
<translate>
本月收入<code><tvar name=income>3,567,800</tvar></code></translate>

注意这会是翻译者不能通过作货币转换来本地化数据。FORMATNUM的调用可以确保数字按照目标语言当前格式的。

模板 不同的模板有不同的功能和目的,因此最好的解决办法取决于这是什么样的模板。如果模板不是一长段的一部分,则应该被省略,除非它有需要被翻译的参数。如果模板本身没有可翻译的文本,你不需要对模板本身做什么。 比如通过页面翻译翻译的模板,参考$navigation。要使用这个模板,你需要让其他模板类似于{{Translatable navigation template}},因为你不再能够通过{{TemplateName}}来包括扩模板。Translate扩展暂时还没有提供,但是这已经在计划中。

另一种方式是使用非结构化的元素翻译来翻译模板,但是模板的语言会跟随用户的界面语言,而不是他们查看的页面的语言。

属性 默认Translate扩展会把过时的翻译单元包括起来(wrap),使之高亮,并将未翻译的单元包括起来以设置恰当地语言元数据。

在某些情况下,通过这种包括额外添加的标记不合适。

<abbr title="<translate nowrap>Frequently asked questions</translate>"><translate>FAQ</translate></abbr>
Translation language (引入 自 5e8106cdc353) When text is using language-dependent formatting methods, a mismatch may appear for untranslated sections.

{{TRANSLATIONLANGUAGE}} can be used to avoid that.

2020-09-15 is {{#time:l|2020-09-15|{{TRANSLATIONLANGUAGE}}}}

The above input may render as:

  • 英语: 2020-09-15 is Tuesday.
  • 芬兰语: 2020-09-15 on tiistai.

Without the magic word, untranslated text on a Finnish translation page would render as:

  • 2020-09-15 is tiistai

更改源文本

一般原则:

  • 避免更改
  • 变动尽可能的独立
  • 不要人为添加翻译单元标记

单元标记。当页面被标记翻译时,系统会自动更新可翻译页面的源代码,并为每个翻译单元添加独自的标识符。 参见下面的例子。 这些标记对系统很重要,因为系统使用这些来追踪每个翻译单元的变化。 你不应该擅自添加单元标记。 标记总是在单元的前一行,或者,如果从标题开始,会在第一个标题后面的同一行。 对标题的不同设置是为了保持段落编辑如期起作用。

<translate>
== Birds == <!--T:1-->
Birds are animals which....

<!--T:2-->
Birds can fly and...
</translate>

更改单元文本。更改是对翻译单元最常见的操作。你对翻译单元可以修改拼写错误,修正语法或者作出其他修改。重新标记要翻译的页面时,你会在单元文本中看到差异。译者更新他们的翻译时也会看到差异。对于简单的拼写修复和其他情况,你不需要现存的翻译在被翻译的页面被标记,你可以避免使其过时:译者以任何原因更新翻译时会看到差异。

添加新文本。你可以自由地在‎<translate>内添加新文本。确保相邻单元之间有一个空行,这样系统会将其视为新的单元。对于不在现存的‎<translate>内的新文本,你也可以在其周围添加‎<translate>标签。

删除文本。 你可以删除整个翻译单元。删除时,请同时删除翻译单元标记。

分割单元。你可以通过在单元中间添加新的空行来分隔单元,或者放置可以分割单元的‎<translate>标签。你也可以留存第一个翻译标记,其内是第一个单元,或者直接删除。第一种情况下,译者会更新过时翻译时看到旧的文本。如果移除单元标记,则页面被重新标记翻译后,整个单元都会表现得似乎没有现存翻译。

原始状态 保持标记 移除标记
<!--T:1-->
Cat purrs. Dog barks.
<!--T:1-->
Cat purrs.

<!--T:2--> (重新标记后添加的)
Dog barks.
<!--T:2--> (重新标记后添加的)
Cat purrs.

<!--T:3--> (重新标记后添加的)
Dog barks.
Kissa kehrää. Koira haukkuu. Kissa kehrää. Koira haukkuu.

Dog barks.

Cat purrs.

Dog barks.

合并翻译单元 如果你要合并翻译单元,你可以合并至少所有内容但应移除一个翻译标记。

移动单元。你可以移除单元,而不会使翻译无效。只需要连同单元剩余部分一起移除单元标记。

在标记要翻译的页面的新版本之前,确保遵循了最佳实践(the best practices are followed),尤其是当内容被修改时,译者得到新的嵌入包含。同时确保没有不必要的改变,以避免浪费译者时间。如果源页面正在被多次更改,则最好先等待稳定(即用户更改结束),然后再进行移动。

未使用的单元翻译不会被自动删除,但也不会造成麻烦。

移动翻译页面

If you have been translating pages before using the page translation system, you might want to migrate the pages to the new system, at least the ones you expect to have new translations and want statistics for. You will probably have existing templates for language switching and maybe different page naming conventions.

You can start migration by cleaning up, tagging and marking the source page. You can keep the existing language-switching templates while you migrate the old translations. If your pages follow the language code subpages naming convention, they will be replaced with the source text after marking the source page for translation, but you'll still be able to access translations from history.

This manual task has been partly automated by Special:PageMigration, which shows the source and target units besides each other and allows the user to adjust the units by providing a set of features mentioned later in this page.

如何使用?

Screenshot showing an example use of Special:PageMigration for "Help:Special pages" as page name and "fr" as language code.
  1. 前往Special:PageMigration
  2. Enter the title of the page and the language code. For example, "Help:Special pages" & "fr"
  3. The source text which was divided into units by Translate and the imported translations will be shown besides each other with some initial alignment.
  4. Use the actions available for each unit to manually do the remaining alignment
  5. As translated units are editable, do required manual improvements (for add translation variables, fix links and markup, etc.)
  6. Click on the "保存" button. This will create pages under the Translations namespace of the form Translations:Page/<translation unit identifier>/<language code>. The old translations have been imported into Translate.
  7. Else, if you wish to abort the importing, click on the 'Cancel' button.

可用操作

Each row consisting of source and target unit has a set of action icons. They are used as follows:

  1. Add: Clicking on this action icon adds a new empty unit below the current one. Use this feature if you want to split the current unit and need a unit below.
  2. Swap: Clicking on this action icon swaps the content of the current unit with the unit below it. You can use this feature when the units get aligned improperly due to different ordering of sections. Or when you need to drag a unit below or above. In either case, remember it swaps with the unit below and does not create any additional units.
  3. Delete: Clicking on this action icon completely removes the corresponding target unit from the page and shifts the remaining target units up by one unit. Use this to remove unwanted content like code or imported translations which are present completely in the source language. Note: this irrevocable action (in the current session).

故障排除

  1. If you mark a page for translation and immediately go to the special page and try to import translations, you may get an error message like "<page-name>/<language-name>没有旧翻译". This is because FuzzyBot didn't fuzzy the messages on the old page yet: the tool won't find an edit by FuzzyBot on the translation page. In this case, simply wait for FuzzyBot to do its job. Once an edit is seen, you can proceed with the imports.
  2. Please wait for some time after pressing the "保存" button. While the button background remains gray, there is an ongoing process of importing non-empty units. Once the button becomes colored again, the import is completed.

小贴士

  1. Migration will be easier if you first (before the mark to translation) check whether existing translations are similar to the original English text, and manually edit the structure of pages: break paragraphs and lists, add the missing headers (even if empty).
  2. Will be useful to check the result in the core translation interface - some of the units may be immediately marked as obsolete because of errors markup or if not all of the translation variables was added.
  3. Translation of the page title will have to be added manually. If you do not know very well the language of the imported page, you can try to find the translation of the page title among the "links here" or sometimes in redirects. Note: Please don't translate the namespace, keep it untranslated.