php - Gettext:翻译带有 HTML 的字符串?

标签 php gettext php-gettext

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

$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/

相关文章:

php - ZF2 select 不显示任何结果

internationalization - 如何使用 Automake 将 gettext mo 文件安装到/usr/share/locale?

c - 与 strftime 或 printf 相比,GNU gettext 的本地化行为不稳定

java - 代码看不到 JTextField 的值,尽管它显示在界面中

php - 什么 PHP 需要与 gettext 一起使用?

php - 在线编辑gettext文件?

php ngettext 多个变量

java - 在沙盒中从 PHP 运行 Java 程序

php - Mysql 多对多映射表返回一行并连接会导致重复行的值

php - 把逗号变成 html 实体?是否可以?