【问题标题】:i18n cakephp 1.3 internatializationi18n cakephp 1.3 国际化
【发布时间】:2015-05-19 15:04:52
【问题描述】:

我使用的是 CakePHP 1.3,但在使用 i18n 时遇到了一些问题。 我的项目中有大约 10,000 个字符串,这没关系。但是我对一些字符串有很大的问题:

代码中的第一个字符串:

<?=  sprintf( __('bla bla bla <span id="count">%s</span> bla', true), $count ); ?>

*.po 文件中的这个字符串:

msgid "bla bla bla <span id=\\\"count\\\">%s</span> bla"

在人群中:

bla bla bla <span id=\"companies-count\">%s</span> bla

为什么会发生这种情况,我该如何避免这种情况?

第二个字符串不会从 *.pot 文件中加载:

<? __('bla'); ?>

他们的语法都很好。我认为这是因为我有字符串:&lt;? __('Bla'); ?&gt;,它属于 pot 文件而不是小写 bro。请帮忙,对不起我的英语不好。

【问题讨论】:

    标签: cakephp internationalization cakephp-1.3


    【解决方案1】:

    您要翻译的字符串中不应有任何 HTML 标记。所以你想把你的&lt;span&gt;标签放在替换文本中:-

    <?=  sprintf( __('bla bla bla %s bla', true), '<span id="count">' . $count . '</span>' ); ?>
    

    这将在您的 .po 文件中为您提供bla bla bla %s bla

    据我所知,您的第二个问题(您真的应该将其作为单独的 * 问题提出)是不区分大小写的。

    我认为您可以使用 __d() 将“域”应用于字符串以区分它(但我对此不是 100% 确定):-

    __d('lower', 'bla');
    

    【讨论】: