2

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

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

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

4

2 回答 2

4

你应该存储类似的东西

"Paste a %1 URL below"

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

$link 也可以翻译

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

虽然这可能有点矫枉过正(flickr 是否在语言之间进行翻译?)

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

更新:

正如@alex 和@chelmertz 在评论中提到的那样,尝试使用sprintf专为此而构建的功能。

于 2009-12-04T17:24:01.300 回答
0

我会这样做:

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

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

于 2015-07-10T12:06:28.560 回答