4

如果我想创建这样的东西,我将如何使用 l20n:

About <strong>Firefox</strong>

我想整体翻译这句话,但我也想要标记。我不想这样做:

<aboutBrowser "About {{ browserBrandShortName }}">
<aboutBrowserStrong "About &lt;strong&gt;{{ browserBrandShortName }}&lt;/strong&gt;">

...因为翻译本身现在被复制了。

我知道这可能不在 l20n 的范围内,但它可能在现实世界中很常见。是否有某种既定的方法来解决这个问题?

4

1 回答 1

7

有时复制翻译是您能做的最好的事情。冗余有利于本地化:它允许对翻译成其他语言做出更少的假设。L20n 的核心原则之一是只有本地化人员才能知道他们真正需要什么

您的解决方案实际上还可以

您提出的解决方案实际上是相当不错的。您试图表达的重点完全有可能<strong>在某些我们可能不知道的语言中产生一些未知的含义。例如,某些语言可能使用变格或后置词<strong>来表示“关于某事”,在这种情况下,作为开发人员,您不应该对元素的确切位置做出太多假设。整个翻译可能是一个由 . 包围的单词<strong>

这是您的代码,使用 L20n 的多行字符串文字格式化:

<aboutBrowser "About {{ browserBrandShortName }}">
<aboutBrowserEmphasized """
  About <strong>{{ browserBrandShortName }}</strong>
""">

请注意,要使其按预期工作,您需要data-l10n-overlay使用data-l10n-id=aboutBrowserEmphasized. 否则,<就会>逃过一劫。

做一些假设很重要

让我快速离题并提出错误 859035 —从 Firefox OS安装 WebApp 时,不要对大小和作者使用相同的“未知”实体。说英语的开发人员假设他们可以在安装对话框中使用“未知”形容词来限定大小和作者。然而,在某些语言中,如法语或波兰语,形容词必须在性和复数方面与宾语一致。所以即使在英语中我们也只能有一个字符串:

<unknown "Unknown">

…其他语言可能需要两个单独的字符串用于它们使用的每个上下文。在法语中,您会说“auteur inconnu”(未知作者,男性)但“taille inconnue”(未知大小,女性):

<unknownSize "inconnue">
<unknownAuthor "inconnu">

在英语中,这意味着一些冗余:

<unknownSize "Unknown">
<unknownAuthor "Unknown">

…但这没关系,因为最终本地化质量得到了提高。在任何地方都使用唯一的字符串并谨慎地重复使用通常是一种很好的做法。理想情况下,您将允许对所有字符串进行不同的翻译。如果你考虑像威尔士语这样的语言,即使是像“是”和“否”这样简单和常见的事情也可能会很棘手:

威尔士语没有一个词可以用于每次是和否的问题。使用的词取决于问题的形式。您通常必须使用问题中使用的动词的相关形式来回答,或者在动词不是您使用“ie”/“nage”的第一个元素的问题中。

于 2013-08-12T10:01:07.860 回答