Gettext:用HTML翻译字符串?

时间:2009-12-04 17:08:35

标签: php gettext php-gettext

我当前的实现,即基于数组的存储键和值在字典中,例如:

$arr = array(
    'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.',
);

我意识到将html存储在像这样的字符串中可能是一个坏主意,但如果我使用gettext,那么在我的.mo / .po文件中我应该如何处理存储类似的字符串?我应该分别存储单词,例如“粘贴一个”和“下面的URL”和“flickr”吗?

2 个答案:

答案 0 :(得分:4)

你应该存储像

这样的东西
"Paste a %1 URL below"

并使用str_replace('%1',$ link,$ message)之类的简单替换所有'vars';

$ link也可以翻译

"<a href="http://flickr.com/">%1</a>"

虽然这可能有点过分(flickr会在语言之间进行翻译吗?)

这背后的基本原理是不同的语言具有不同的语法结构,并且词语的顺序不会总是相同。

<强>更新

正如@alex和@chelmertz在评论中提到的那样,尝试使用sprintf函数,它是为此而构建的。

答案 1 :(得分:0)

我会这样做:

$arr = array(
    'message' => _('Paste a %s URL below.'),
);

在gettext函数调用中将所有翻译作为字符串文字允许使用标准工具来更新* .po目录。