2009-01-15 103 views
36

我們使用resx文件來本地化我們的Web應用程序。我們通常在只有一個頁面使用特定短語時創建本地resx文件(映射到特定頁面),而在多個頁面需要該短語時創建全局resx文件。
但對全球的resx文件的好處是,它們是一類,你可以調用短語,如調用類的屬性:全球資源與ASP.NET中的本地資源

Resource.UI.iNotFound

所以我在想 - 爲什麼有本地resx文件呢?爲什麼不爲整個應用程序使用一個全局resx文件,並且以這種方式避免調用不存在的短語的運行時錯誤?

我敢肯定有應該是一個很好的答案,我只是不知道它是什麼....

回答

47

我一直在尋找的指導方針,並發現這MSDN

全局和本地資源文件之間進行選擇

您可以使用全球 和本地資源文件的任何組合中Web 應用程序。通常,當您想在頁面之間共享資源 時,將 資源添加到全局資源文件 。當您想以編程方式訪問文件 時,全局 資源文件中的資源也會強烈鍵入 。

但是,如果您將全部 本地化資源存儲在其中,全局資源文件可能會變大。全球 資源文件也可能更難 難以管理,如果多個 開發人員正在不同的 頁面,但在一個單一的資源文件。

本地資源文件使管理一個ASP的資源變得更容易。NET 網頁。但是你不能在頁面之間共享 資源。此外,如果您有許多頁面 必須被本地化爲許多 語言,您可能會創建大量本地 資源文件。如果網站規模較大, 許多文件夾和語言,本地 資源可以快速擴大 應用程序域中的程序集數量。

當您更改默認的資源文件, 局部或全局,ASP.NET 重新編譯的資源,並重新啓動 ASP.NET應用程序。這可能會影響 網站的整體性能。如果您添加衛星資源 文件,則不會導致重新編譯資源 ,但將重新啓動ASP.NET應用程序。

所以看起來真的要由編程團隊來衡量每種方法的優缺點並選擇對他們有利的方法。

14

Joe90 - 我必須說,在我的經驗,我可以不同意管理遍佈整個項目的大量本地資源文件比管理全局資源文件更容易。沒有什麼可以一次又一次地停止重複相同的翻譯,而且很難追查。訪問全局資源文件很容易在一個團隊內協調,並且多個用戶一眼就能看到他們所需的翻譯是否已經完成。

我開始使用與Lea完全相同的策略 - 即從本地資源文件開始,然後將其移至全局資源文件(如果該文件被多次引用)。這很快就變成了管理的麻煩,而且我現在每次都轉向使用全局資源文件。

微軟似乎沒有明確的指導方針,最好的做法是什麼,甚至是如何實施這兩種方法,以便我們冒險猜測!

我是猜測比較/收益是本地資源文件只需要重新編譯它們相關的文件,而更改全局資源文件似乎需要重新編譯整個網站 - 具有固有的會話狀態丟失等等,因此需要在更新期間使站點脫機以確保安全。

7

我在一個產品上至少有10個開發人員的開發團隊,我們爲每個站點使用一個全局resx。

合併這個大的resx文件的問題應該在我看來不成問題。

如果您有10位開發人員自己在網站上設置語言,您如何獲得統一的在網站上表達自己的方式?開發人員通常傾向於擅長代碼而不是語法表達。 (我自己是開發者。)

語言專家應該編輯resx文件並將其鎖定給開發人員!

+2

+1最後的評論。 – 2012-12-07 12:12:49

2

全局資源文件是翻譯的最佳方法。關鍵是使用命名約定,如字符串名稱的前幾個字母的頁面名稱縮寫,以便您可以輕鬆地找到每個網頁基礎的資源。試圖在多個頁面上重複使用許多短語會給譯員帶來更多困惑。

通過使用缺少頁面命名約定(前幾個字母沒有頁面名稱縮寫),您可以根據需要定義可重複使用的短語,如Yes,No,BTN_OK,BTN_Cancel,QTN_AreYouSure等。 RESX的絕大多數行都是針對每個頁面的,您不應該專注於盡可能重複使用。在整個文件中更改一個短語可以在幾分鐘內仔細完成,需要時使用文本查找/替換。

+1

感謝您的回答。但是我仍然不明白,爲什麼Global Resource文件比Local更好。 – 2011-10-03 06:59:22