2012-10-17 33 views
2

我想爲我的國家創建OpenERP l10n模塊(帳戶圖表)。我需要翻譯成兩種語言。在account_chart.xml我用英語說話。所以,單詞是靜態的。 如何翻譯在下面的示例中的帳戶的name值:如何翻譯OpenERP本地化模塊的內容

<record id="chart01" model="account.account.template"> 
    <field name="code">01</field> 
    <field name="parent_id" ref="chart0"/> 
    <field name="type">view</field> 
    <field name="user_type" ref="account.data_account_type_view"/> 
    <field name="name">Expenses</field> 
    </record> 

例如,我要翻譯單詞費用。我不知道如何在* .po文件中配置它。有人能告訴我一些例子嗎?乾杯

回答

3

好問題!創建OpenERP本地化模塊的官方參考是this page of the documentation。然而它並沒有解釋如何翻譯本地化模塊,因爲具有諷刺意味的是,本地化模塊很少需要翻譯

上下文的位:與通用的OpenERP模塊的編寫方式對比,單語國家的定位模塊具有的稅,G/L賬戶等在該國的語言直接定義的名稱,而不是用英文定義,然後翻譯成.po文件。實際上,用於本地化數據(稅收模板,賬戶模板等)的OpenERP模型具有自動關閉翻譯標誌。原因很簡單:如果這些項目的名稱總是可以翻譯的,它們將出現在翻譯所有OpenERP翻譯的術語列表中!想象一下,如果每個翻譯團隊都被要求翻譯世界上所有的稅收和總賬科目的名稱,這些東西完全沒有用處,那麼這個爛攤子就是一團糟。

比利時是幸運的多語種國家之一,但是有一種(實驗性)方式可以使您的會計科目表可翻譯。

解決的辦法是三重

  1. 你l10n_xx模塊必須依賴於l10n_multilang模塊。這個小模塊爲您想要在賬戶圖表中翻譯的大部分字段打開translation flag on。它還增加了對帳戶模板模型圖表特殊spoken_languages場,並會自動嘗試加載相應的翻譯時,安裝帳戶中的圖表(提供這些語言已經在同一數據庫中以前安裝的)

  2. 你必須將spoken_languages字段添加到您的會計科目表的XML聲明中。它的值必須是以分號分隔的語言代碼列表,其中每個代碼是安裝在OpenERP中時該語言的code字段的值。你可以看到所有可用的語言代碼列表in the source。例如,如果你想添加一個法語和德語翻譯會計科目表,你可以使用下面的值XML領域:
    <field name="spoken_languages">fr_FR;de_DE</field>

  3. 最後但並非最不重要的,你需要實際創建翻譯文件,類似於您爲其他OpenERP模塊所做的工作。理想情況下,您應該在主數據文件中使用英文名稱,如果英文不是官方的國家語言之一,則可能會很尷尬,因此使用您所在國家的某種官方語言也可以。然後使用OpenERP內的翻譯導出嚮導(在導出嚮導中選擇您的模塊並且不使用語言)導出l10n_xx.pot PO模板文件,並將其放入模塊的l10n_xx/i18n/目錄中。最後,您可以通過爲每種所需語言複製l10n_xx.pot來創建初始翻譯(例如法語爲fr.po等),並使用PO編輯器(例如Poedit)填寫翻譯。
    查閱關於OpenERP translations的文檔以獲取更多關於PO/POT文件格式和組織的信息,以及DReispt's related question(已經提到)。

執行上述步驟後,翻譯應自動在您安裝定位模塊(但之前確保安裝了所有相關的語言安裝帳戶的圖表)

每個數據庫加載

這種技術仍然有點實驗性,所以如果它不像描述的那樣工作,請毫不猶豫地報告錯誤。

PS:很顯然這一切應在正式OpenERP localization文檔中提到,所以如果有人感覺就像做,記住documentation is open和任何人都可以直接作出貢獻;-)

+0

工作,但一個重要的事情不見了。 l10n_multilang僅爲* account.account.template *創建翻譯,而不是* account.account *。也許是[source]中的問題(http://bazaar.launchpad.net/~openerp/openobject-addons/trunk/view/head:/l10n_multilang/l10n_multilang.py)。在第128行* _process_accounts_translations *使用force_write = True調用process_translations。由於**不**在第68行,* account.account *翻譯從未被創建。我刪除** not **並獲得* account.account *的翻譯。 * l10n_multilang.py *中的這些更改是否會產生負面影響? –

0

我的經驗是由OpenERP導出的.po文件包含數據XML文件中的文本。我認爲,爲了將name字段值包含在.po文件中,它需要是可翻譯的,也就是說,它的模型中有translated=True(本例中爲account.account.template)。

您可能還會發現How to translate an OpenERP module?問題很有用。