CakePHP i18n - 翻译长文本/字符串块

时间:2014-07-16 15:28:12

标签: php cakephp cakephp-2.5

我对CakePHP 2.5的i18n默认插件有疑问。

我知道只需将短字符串放在__('')表示法之间就可以翻译短字符串。

我也知道可以通过将TranslateBehaviour添加到模型中来翻译所有与模型相关的文本。

当我想在许多不同的页面上翻译较长的文本部分时,问题就开始了。我可以为不同的语言制作不同的视图,但它有点与MVC模式相冲突。

假设我们有一个我们想要翻译成其他语言的文字:

  

Lorem ipsum dolor 坐下来,精神恍惚。 Ut sagittis urna augue,eleifend orci ultrices eget。在iaculis mi mauris,eget luctus leo condimentum at。 Pellentesque居民morbi tristique senectus et netus et malesuada fames ac turpis egestas。 Nulla tristique commodo tortor,non condimentum risus egestas sed。 Proin ultricies elit vitae mauris pretium facilisis。 Fusce aliquam orci sed neque feugiat vestibulum。 Etiam dapibus massa vel dui interdum malesuada。 Nunc fringilla vulputate tristique。 Sed ultrices suscipit erat eget luctus。 Quisque non massa ante。 Fusce volutpat neque sed rhoncus sollicitudin。 Cras porta vulputate neque non congue。

如何将文本打包这么久以使其与i18n一起使用?如何在代码中保持干净?

1 个答案:

答案 0 :(得分:3)

__()不仅限于短字符串,如果要保持清晰,也可以在视图中使用标识符,例如:

<p>
    <?php echo __('long-text'); ?>
</p>

在您的po文件中,您可以进行翻译:

//app/Locale/eng/LC_MESSAGES/default.po
msgid "long-text"
msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sagittis urna augue, a eleifend orci ultrices eget. In iaculis mi mauris, eget luctus leo condimentum at. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla tristique commodo tortor, non condimentum risus egestas sed. Proin ultricies elit vitae mauris pretium facilisis. Fusce aliquam orci sed neque feugiat vestibulum. Etiam dapibus massa vel dui interdum malesuada. Nunc fringilla vulputate tristique. Sed ultrices suscipit erat eget luctus. Quisque non massa ante. Fusce volutpat neque sed rhoncus sollicitudin. Cras porta vulputate neque non congue."

这将输出长字符串,但您的视图将是干净的。