2010-01-02 19 views
0

可以推出自己的本地化框架嗎?我可以使用默認的.NET本地化行爲(即將文本放入程序集中以特定方式命名的資源文件中),不同之處在於除了WinForms和WPF之外,還需要在DirectX中呈現本地化圖像和文本。在.NET應用程序中推出自己的本地化層可以嗎?

我可以將形式特定的字符串放在一個地方,其他字符串放在其他地方,但我認爲將所有東西放在一個地方更有意義,更不用說它將有助於避免重複(對於域值/否等)。也有可能我們將來可能會將此工具轉移到另一個平臺,因此將所有本地化信息放在一個平臺無關的區域將會很好。

我意識到這有點主觀,但我正在尋找一個最佳實踐...我已經在採取兩種方法的項目上工作。有什麼想法嗎?

+0

不要問我們,向您的本地化服務提供商詢問當您向他們提交非標準內容時他們收取了多少費用。 – 2010-01-02 21:39:18

+0

現在我只是從要求工作。本地化將進入項目的另一個階段......當然。 :/ – 2010-01-02 21:43:41

回答

2

我已經開發了系統,通過數據庫存儲的數據和元數據實現本地化。如果您的應用程序已經在密集使用快速數據庫後端,您可以創建一個數據庫支持的本地化層,並使用它來存儲本地化信息,包括文本和非文本數據。它在一些場合對我們很有幫助。

編輯。細節不適合這裏,但基本上我們鏡像了Windows API或.NET使用的鍵/值資源管理器的邏輯。我們通過允許將資源分組爲可任意嵌套的組擴展了這一點。例如,可以給出資源名稱,例如「ClientManagement.MainForm.StatusBar.ReadyMsg」,表示準備好的消息文本顯示在客戶端管理用戶界面的主窗體的狀態欄上。在應用程序啓動時,會從配置文件和用它初始化的資源管理器中讀取區域設置;所有對資源管理器的後續調用都將使用這樣的區域設置,直到明確更改。我們還構建了一個管理用戶界面,允許我們編輯存儲在數據庫中的資源,甚至添加新的語言。最後的評論:要本地化的數據不僅僅是屏幕上的標籤和圖標。例如,組合框中的選項值也需要進行本地化。

+0

那麼,你們是否創建了一種資源管理器,根據我假設的當前文化,從數據庫中獲取字符串?這聽起來像我會做的。 – 2010-01-02 21:44:31

+0

@Ed:是的;我正在編輯解釋它。 – CesarGon 2010-01-02 21:45:44

+0

非常感謝。這驗證了我的想法。 – 2010-01-02 22:01:48

0

我們使用DB後端實現了本地化。我們能夠創建一個優秀的資源編輯器,它允許「翻譯者」最終用戶動態更新翻譯(不能用resx來完成!)。我們還能夠支持按模塊進行的審批流程和小組翻譯,從而可以批准整個模塊在語言中使用。

我們還決定實施Asp.Net的本地化服務提供商,該服務基本上不進行開發人員的代碼自動化本地化。這實際上是項目中唯一困難的部分,因爲界面沒有很好的記錄。這很難調試,因爲它實際上在Visual Studio主機進程中運行。我們使用Web服務來解耦實現,這大大簡化了事情。另一件好事是翻譯會自動緩存,所以數據庫不會很難。壞消息是,當你的翻譯服務/後端停止工作時,如果你不預編譯你的asp.net網站,當用戶啓動一個'新'頁面時,編譯器可能決定不翻譯這個頁面。這種行爲仍然存在(即使翻譯服務再次啓動後),直到您強制重新編譯網站。

相關問題