我当前的实现,即基于数组的存储键和值在字典中,例如:
$arr = array(
'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.',
);
我意识到将html存储在像这样的字符串中可能是一个坏主意,但如果我使用gettext,那么在我的.mo / .po文件中我应该如何处理存储类似的字符串?我应该分别存储单词,例如“粘贴一个”和“下面的URL”和“flickr”吗?
答案 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目录。