我想在我的Zend Framework应用程序中本地化一些文本。 还有像一些文本:使用HTML标签进行本地化
Hello, I'm <a href="test.php" title="Title-Attribute" rel="test">a sample text</a>, greetings to all of you! :)
如果在它没有HTML,它是简单的localizate,但是HTML在里面,我应该怎样做最好呢?
我想在我的Zend Framework应用程序中本地化一些文本。 还有像一些文本:使用HTML标签进行本地化
Hello, I'm <a href="test.php" title="Title-Attribute" rel="test">a sample text</a>, greetings to all of you! :)
如果在它没有HTML,它是简单的localizate,但是HTML在里面,我应该怎样做最好呢?
某些本地化工具(如Virtaal)处理way中的XML(HTML)标记,以便翻译工作。另一种方法是简化呈现给本地人的字符串,方法是用字符串格式化变量替换标记,并使格式字符串局部化而不是格式化结果。例如(我猜主要是为示范起见,不知道PHP非常好):
printf(_("Hello, I'm %sa sample%s, greetings to all of you!"), '<a href="test.php" title="Title-Attribute" rel="test">', "</a>");
在上述声明中的String航向将看到的是只包含一个%s
格式化变量(因为它被包装在_()
gettext函数中)。当然,如果他不知道变量将被替换的位置,那么这对于本地化者来说会有相当混乱的缺点,所以包括适当的本地化评论。
您应该本地化UI中的任何字符串。在这种情况下,您有UI /控件元素的组合。这意味着title
属性的内容必须单独进行本地化。
在这种情况下,这意味着:
$guilink = "<a href='test.php' "
."title='".gettext("Title-Attribute")."'"
." rel='test'>"
.gettext("a sample text")
."</a>";
$guistring = sprintf(
gettext("Hello, I'm %s, greetings to all of you! :)"), $guilink);
但是,正如戈登说:不要过于复杂。
对于翻译适配器,翻译是否包含HTML应该没有什么区别。如果使用内联HTML获得短字符串,只需将翻译和HTML一起根据需要放入语言源文件中。当字符串中存在HTML时,您必须确保输出不会被转义。
编辑像xtofl在评论中指出,具有语言文件中的HTML是不是最佳的解决方案,因为翻译者可能不熟悉处理HTML。虽然有一些事实,我觉得它是可以忽略的。 HTML不是火箭科学,在少数情况下,可能会出现HTML元素,您可以向他们提供备忘单。专业翻译应该能够处理这个问题。另一个问题是他们会插入不需要的内容,例如链接(如果您正在与社区翻译人员合作,而不是专业人士)。但是由于您无论如何都没有提及任何翻译,我假设您自己正在翻译,在这种情况下,以上所有内容均为yagni。没有必要overcomplicate things。
同一主题讨论http://stackoverflow.com/questions/2566432/add-some-html-to-zend-forms/2567764#2567764检查那里 – user1400 2010-05-03 14:46:24