i18n cakephp 1.3 国际化

i18n cakephp 1.3 internatialization

我正在使用 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'); ?>

语法没问题。我认为这是因为我有字符串:<? __('Bla'); ?>,它属于 pot 文件而不是小写兄弟。请帮忙,抱歉我的英语不好。

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

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

这会在您的 .po 文件中给您 bla bla bla %s bla

你的第二个问题(你真的应该把它作为一个单独的 Whosebug 问题来问)据我所知,字符串不区分大小写。

我认为你可以使用 __d() 对字符串应用 'domain' 来区分它(但我不是 100% 确定):-

__d('lower', 'bla');