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
不起作用)