使用__('')功能非常好。但我想知道如何用链接翻译整个段落并在其中突出显示。例如:
<p><?= __('Bla bla text in german bla bla ')?> <a href="/user">Account</a> text bla bla <b>bla</b>.</p>
来自链接的公寓(我知道我应该使用Cake HTML Helper,如何使用它?对于不同语言的翻译,它很难翻译这些块,因为翻译有时不知道上下文。
这是我要找的吗? http://book.cakephp.org/3.0/en/orm/behaviors/translate.html我正在开发视图 - 所以我不是在添加等内容的情况下向DB写内容。也许这是我的第一个问题?
答案 0 :(得分:3)
Context是__x()
函数的用途,它将一个任意的上下文字符串作为第一个参数,当使用I18n shell时,它将被提取为msgctxt
。通过这种方式,您可以为翻译人员提供有关其翻译内容的正确信息。
对于HTML,它取决于,并且有个人偏好。就个人而言,如果它是复杂的HTML,或者我需要使用代码来生成它,我通常会把事情分开。如果它只是真正基本的HTML,或者可能需要以不同语言放置不同的标签,那么我会将它保存在单个消息中。
在你的例子中,我会按照以下方式做点什么:
<?php
$link = $this->Html->link(
__x('Paragraph XYZ link text', 'Account'),
['controller' => 'Users']
);
?>
<p><?= __x('Paragraph XYZ', 'Bla text in german {0} text bla <b>bla</b>.', $link)?></p>
提取翻译时,最终会像
一样#: Template/Foo/bar.ctp:3
msgctxt "Paragraph XYZ link text"
msgid "Account"
msgstr ""
#: Template/Foo/bar.ctp:7
msgctxt "Paragraph XYZ"
msgid "Bla text in german {0} text bla bla <b>bla</b>."
msgstr ""
通过一条消息已经提供了文本上下文本身,以及补充它的msgctxt
值,翻译人员应该没有问题来弄清楚他们正在翻译什么,以及消息是如何相关的。
另见