【问题标题】:CakePHP i18n - translating long text / string blocksCakePHP i18n - 翻译长文本/字符串块
【发布时间】:2014-09-07 05:09:32
【问题描述】:

我有一个关于 CakePHP 2.5 的 i18n 默认插件的问题。

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

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

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

假设我们想要翻译成其他语言的文本:

Lorem ipsum dolor sat amet, consectetur adipiscing elit。 Ut sagittis urna augue,一个 eleifend orci ultrices eget。在 iaculis mi mauris,eget luctus leo condimentum 处。 Pellentesque 居民 morbi tristique senectus et netus et malesuada 名声 ac turpis egestas。 Nulla tristique commodo tortor,非调味品 risus egestas sed。 Proin ultricies elit vitae mauris pretium facilisis。 Fusce aliquam orci sed neque feugiat 前庭。 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 一起使用?如何在我的代码中保持干净?

【问题讨论】:

    标签: php cakephp cakephp-2.5


    【解决方案1】:

    __() 不限于短字符串,如果您想保持整洁,您还可以在视图中使用标识符,例如:

    <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."
    

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

    【讨论】:

    • 我知道__() 不仅限于短字符串。如果将它用于大文本块(包括简单的 HTML 标签)是一种好习惯,我只是有点困惑。对性能有好处吗?
    • 我已经将它与长字符串和简单的 HTML 标签一起使用,没有问题。关于性能的确切指标我不确定,但我认为翻译后的字符串是长还是短不会有太大区别。
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2011-08-31
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多