我当前的实现是基于数组的,将键和值存储在字典中,例如:
$arr = array(
'message' => 'Paste a <a href="http://flickr.com/">flickr</a> URL below.',
);
我意识到将 html 存储在这样的字符串中可能是一个坏主意,但是如果我使用 gettext 那么在我的 .mo/.po 文件中我应该如何处理存储类似的字符串?我应该只存储单词,例如“粘贴 a”和“下面的 URL”以及“flickr”吗?
最佳答案
你应该存储类似的东西
"Paste a %1 URL below"
并使用 str_replace('%1', $link, $message); 之类的简单内容替换所有“vars”;
$link 也可以翻译
"<a href="http://flickr.com/">%1</a>"
尽管这可能有点过头了(flickr 可以在不同语言之间进行翻译吗?)
其背后的原因是不同的语言具有不同的语法结构,并且单词的顺序不会始终相同。
更新:
正如 @alex 和 @chelmertz 在评论中提到的那样,尝试使用 sprintf
函数,它是专门为此构建的。
关于php - Gettext:翻译带有 HTML 的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848365/