本系列背景介紹
odoo 是乙個基於python語言構建的開源軟體,面向企業應用的crm,erp等領域,其目標是對標sap,oracle等大型軟體提供商,但卻通過僅僅乙個平台滿足企業所有管理的業務需求。
本系列文章針對odoo 14版,從系統安裝,開發環境配置,**結構,主要功能公升級,原始碼賞析,anodoo對odoo的關鍵擴充套件等角度,預先給大家介紹即將在2023年發布的這一最新版本。
本篇概述
odoo在本地化方面非常成熟,一套系統,不同國家不同語言都可以使用。針對系統中儲存的資料,都可以實現多語言支援。本文在介紹odoo14的時候,同時將這個體系向大家做乙個介紹。
odoo官方是怎麼做好本地化工作
odoo已經發展十幾年,具備非常成熟的架構和功能。在本地化方面也是非常成熟的,中國的使用者完全不用擔心。現有包括官方的,以及中國多個社群現有的翻譯成果已經可以很好地支援中文,如果自己定製,還可以基於odoo的翻譯架構輕鬆地進一步優化。anodoo的目標之一就是基於odoo,通過翻譯優化,定製出乙個完全面向國人的crm,除了操作習慣,完全的中文化也是之一。
。(建議註冊和登入體驗一下)。目前在transifex上的翻譯工作有幾千人,其中中文的翻譯有近300人,足以看出odoo在中國的發展。
如何參與到odoo 14官方的翻譯工作貢獻中國人的力量
由於transifex提供了和github整合的方案,odoo應該是將自己的github庫和transifex進行了對接的。同時,從原始碼上,也看到odoo和gengo,transifex等平台有對接的模組,有興趣的可以好好研究,學習一下odoo是如何做好本地化工作的。
如何在專案中做好odoo本地化
由於odoo是原始碼開放的免費產品,所以很多人都會基於原始碼發布,或多或少都會做一些定製。那麼針對中文的翻譯可以說是很重要的一環。
那如何做好odoo的中文翻譯呢,參考我的anodoo專案,我會參與到odoo官方的翻譯專案中,這樣可以將我專案中的一些翻譯提交到官網,同時,為了確保那些未被官方收錄的翻譯能應用在自己專案的上,所以會在transifex上建立乙個自己的翻譯專案,維護好自己的po檔案,供anodoo的使用者使用。
專案中對於一些翻譯的修改還可以通過直接後台修改記錄(ir_translation)的方式直接修改。這種修改的好處是快捷,但缺點是需要備份。
總結一下,最好的辦法,是平時在後台資料庫即時修改,並定期將資料庫做了更新的部分定義同步po檔案,也可以將官方和中國其他平台社群提供的po改進一併同步到自己的po中,在一併更新到自己的系統。anodoo由於是對外提供的crm產品,所以會基於這個方法,同步維護好這些po,從而實現在官方的基礎上,對中文翻譯改進。
odoo的本地化設定
odoo的本地化設定功能是非常豐富的。包括設定系統載入支援的語言,如英語,漢語等。可以通過多種方式如csv,po等匯入翻譯檔案,也可以匯出進行編輯。修改後,再匯入。可以通過「已翻譯術語」,檢視所有的翻譯記錄,並如上文所提到的,在這裡快捷修改翻譯中文。
針對使用者,odoo在個人喜好中可以修改自己的語言。管理員可以設定所有使用者的預設語言為漢語,也可以在使用者管理中設定其他單個使用者的不同語言。
odoo本地化的相關原始碼
odoo的模組化做的非常好,同樣,在每乙個模組下的i18n目錄,都提供了不同語言的翻譯檔案,如中文的zh_cn.po檔案。針對po的檔案格式,這裡不重點描述。odoo會通過注釋,將翻譯對應哪個模組module,哪個模型model,哪個欄位field等都進行備註,所以,開發人員可以按照這個格式去查詢,或者建立翻譯條目。
以下是一段po**,便於你的理解
#. module: crm
#: model:ir.model.fields.field_description:crm.field_crm_lead_expected_revenue
msgid 「prorated revenue」
msgstr 「按比例分攤收入」
在base模組中,odoo通過ir_translation.py對翻譯的所有條目進行管理,也就是系統會將po中的資料匯入到這裡,然後在前台渲染是通過同步到記憶體後進行快速讀取。anodoo的做法是針對後台修改的記錄,都會在這個表新增的標註欄位上做好標註,並定期將這些資料同步到po中,再隨版本發布或對外單獨提供更新。
odoo同樣,提供了針對gengo,transifex的擴充套件,從而實現和這些平台的對接,有興趣的可以具體研究。
結語
odoo的中文化非常成熟,這也解除了國人使用這一國外開源產品的顧慮。中國人使用外國產品,如何做好中文化是基礎,所以這也是為什麼把這個主題放在系列的第三篇文章中介紹,希望對你們有幫助。
odoo14坑點問題(持續更新)
py檔案問題 以下是自己過程中遇到的,解決方法的一些理解 可能有效可能無效 1.更改.py檔案需要重啟。涉及資料庫結構或內容改變需要更新模組。改xml涉及改變資料庫內容,所以需要更新模組。而改變實體類的字段屬性,既改變了py檔案又改變了資料庫結構,所以需要重啟伺服器,同時更新模組。檢視問題報錯 1....
常用的CSS3介紹
border radius 應該是css3最常用的功能了。以前要做round corner真的有點費力,而且你還得用各個browser去test下有沒問題,費時失事。有了border radius就不用再煩了。雖然舊版browser也不可能顯示round corner了,可是正因為你知道,所以也就省...
關於Okhttp3(二)介紹
對於開發者來說優秀的原始碼是最好的學習資源。通過閱讀優質原始碼就相當於和大牛有一次對話。okhttp是支援http和http 2的網路請求框架。自從android4.4開始,google已經開始將原始碼中的httpurlconnection替換為okhttp,而在android6.0之後的sdk中g...