2011-08-05 40 views
2

我試圖使用i18n機器翻譯.py文件中的某些字符串。翻譯.pt文件不是問題,但每當我嘗試在文件系統的Python代碼中使用_('Something')進行翻譯時,它總是會提供英文文本(這是默認設置),而不是應該在那裏的挪威文本。所以我可以看到英文版python代碼的輸出,而其他頁面模板位正確翻譯。爲Plone產品翻譯文件系統中的內容

有沒有什麼類似的東西?

回答

4

用於域名_('Something')與您在翻譯中使用的挪威語.po文件相同嗎?他們應該是一樣的,所以不要在一個案例中使用'plone',在另一個案例中使用'my.domain'。

此外,對下劃線函數的調用本身並不轉換字符串;它只創建一個可以翻譯的字符串。如果該字符串直接在模板中自行結束,則應該將i18n:translate=""添加到該標記,可能帶有匹配的i18n:域。

否則,您應該手動調用translate方法,如http://readthedocs.org/docs/collective-docs/en/latest/i18n/localization.html#manually-translated-message-ids中所述。請閱讀Plone 4 migration guide瞭解Plone 3和4之間的一些區別,這些區別可能會在這裏引起你的注意。

+0

這工作得很好,正是我需要的幫助。儘管如此,沒有足夠的聲望來投票給你。 – user880151

3

請注意,_()不會在調用時翻譯文本,但會返回一個Message對象,該對象在模板中呈現時將被翻譯。

這意味着:

  1. 沒有CONCAT Message對象。 "text %s" % _('translation')將不起作用,以及"text" + _('translation')
  2. 如果您不通過模板發送文本到瀏覽器,它可能不會被翻譯。例如,如果您生成電子郵件,則需要手動翻譯消息對象