2012-01-26 80 views
2

目前,我正在嘗試將Zend_Translate應用於正在處理的項目。普通文本完美無瑕,但我遇到了表單翻譯的問題。使用Zend_Translate處理標點符號

翻譯適配器在Zend_Registry中註冊,使用Zend_Translate作爲鍵。這在大多數情況下都能正常工作,除了在顯示錶單之前翻譯應該發生時。

代碼例如:

$subformBusiness->setLegend(_('Bedrijfsgegevens') . ':'); 
$subformBusiness->setLegend(_('Bedrijfsgegevens')); 

假設「Bedrijfsgegevens」在相應的翻譯的源文件被翻譯時,上線將被輸出爲「Bedrijfsgegevens:」,而下行輸出「商業信息」。

據我所知,有三種解決方法。可以通過調用存儲的Zend_Translate_Adapter來解決它,然後將它與冒號連接起來,但這會產生大量不必要的代碼。另一種選擇是在翻譯文件中加入標點符號,但這意味着每種標點符號都應該有翻譯。第三個選項是簡單地從圖例中刪除冒號,但那不是我要找的。

我的問題:有沒有辦法告訴Zend_Translate無視標點符號?

+0

會,如果你不串連結腸那不行? $ subformBusiness-> setLegend(_( 'Bedrijfsgegevens:'));這個突破會轉化嗎? – RockyFord

+0

這可行,但我不想添加'Bedrijfsgegevens','Bedrijfsgegevens'。和'Bedrijfsgegevens:'。缺乏另一種方法,我正在使用這種方法,但我寧願使用更通用的東西。 – Lex

回答

0

據我所知,Zend_Translate僅適用於文字字符串,並且不包含任何標點符號功能。我會做的只是從圖例中刪除冒號(第三個選項),然後以某種方式添加它(例如,使用:after CSS屬性)。

希望有幫助,

0

爲什麼不給字符串添加標點符號?好的,你將不得不翻譯'傳奇'和'傳奇:',但這對我來說非常合適。

例如爲:

$subformBusiness->setLegend(_('Bedrijfsgegevens:')); 
$element->setLabel('This is a great label:'); 
+0

它有效,我使用它,但我寧願使用過濾標點符號的東西。 – Lex

+0

然後,您可能想要編輯Zend_Form_Element並創建一個自定義翻譯方法來忽略/替換標點符號。 – guhemama

+0

PS:尋找$ this-> getTranslator()事件。 – guhemama

相關問題