我想在我的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