如果我想创建这样的东西,我将如何使用l20n:
About <strong>Firefox</strong>我想把这个短语翻译成一个整体,但我也想要标记。我不想这么做:
<aboutBrowser "About {{ browserBrandShortName }}">
<aboutBrowserStrong "About <strong>{{ browserBrandShortName }}</strong>">...as翻译本身现在被复制。
我知道这可能不属于l20n的范围,但在现实世界中可能是一个足够普遍的情况。有什么既定的方法来解决这个问题吗?
发布于 2013-08-12 10:01:07
有时候,复制翻译是你能做的最好的事情。冗余在本地化方面是很好的:它允许对翻译成其他语言进行更少的假设。L20n的核心原则之一是only the localizer will know what they really need。
你的解决方案其实没问题
你提出的解决方案其实是相当好的。完全有可能,您试图用<strong>表达的强调在某些我们可能不知道的语言中会产生一些未知的含义。例如,有些语言可能使用解密或postpositions来表示“某事”,在这种情况下,作为开发人员,您不应该对<strong>元素的确切位置做出太多的假设。可能整个翻译将是一个被<strong>包围的单词。
下面是您的代码,使用L20n的多行字符串文本进行格式化:
<aboutBrowser "About {{ browserBrandShortName }}">
<aboutBrowserEmphasized """
About <strong>{{ browserBrandShortName }}</strong>
""">请注意,要使其按预期工作,您将需要向带有data-l10n-overlay的DOM节点添加一个data-l10n-id=aboutBrowserEmphasized属性。否则,<和>将被转义。
做几个假设很重要
让我快速离题,从火狐操作系统中拿出Bug 859035 — Do not use the same "unknown" entity for Size & Author when installing a WebApp。说英语的开发人员假设他们可以使用“未知”形容词来限定安装对话框中的大小和作者。然而,在某些语言中,如法语或波兰语,形容词在性别和复数方面必须与宾语相一致。因此,即使在英语中,我们只能有一个字符串:
<unknown "Unknown">…其他语言可能需要两个单独的字符串来处理它们所使用的每个上下文。在法语中,你会说"auteur inconnu“(未知数作者,男性),但”裁缝不合“(未知大小,女性化):
<unknownSize "inconnue">
<unknownAuthor "inconnu">在英语中,这意味着一些冗余:
<unknownSize "Unknown">
<unknownAuthor "Unknown">…但这是可以的,因为最终本地化的质量得到了提高。通常,在任何地方使用独特的字符串并谨慎地重用是一种很好的实践。理想情况下,您应该允许对所有字符串进行不同的翻译。即使是像“是”和“否”这样简单而常见的语言,如果考虑到威尔士语这样的语言,也会很棘手:
威尔士人没有一个单词可以用来回答“是”和“否”的问题。所用的词取决于问题的形式。您通常必须使用问题中使用的动词的相关形式来回答,或者在动词不是您使用的第一个元素的情况下回答。
https://stackoverflow.com/questions/18160042
复制相似问题