Php Gettext:内部带有HTML的字符串的翻译?

Php Gettext:内部带有HTML的字符串的翻译?,php,gettext,php-gettext,Php,Gettext,Php Gettext,我当前的实现是基于数组的,它将键和值存储在字典中,例如: $arr = array( 'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.', ); $arr=array( '消息'=>'在下面粘贴URL', ); 我意识到将html存储在这样的字符串中可能是个坏主意,但是如果我在.mo/.po文件中使用gettext,我应该如何处理存储类似字符串的问题?我是否应

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

$arr = array(
    'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.',
);
$arr=array(
'消息'=>'在下面粘贴URL',
);

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

您应该存储以下内容

"Paste a %1 URL below"
并使用str_replace('%1',$link,$message)之类的简单方法替换所有“变量”

$link也可以是可翻译的

"<a href="http://flickr.com/">%1</a>"
“”
尽管这可能有些过分(flickr会在不同语言之间进行翻译吗?)

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

更新:

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

我想:

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

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

不要单独存储这些单词,正如Janek提到的“单词的顺序并不总是相同的。”
sprintf()
就是针对这些情况而设计的。
echo sprintf(“”,$url,$link)
(我不清楚为什么
%1$s
不起作用)