2009-02-04 74 views
6

我有一個適用於全球市場的應用程序,需要可本地化。在開發過程中,我遇到了一些問題,即使改變了我的語言環境,我的衛星組件也從未被拾起。經過一番研究後,我現在明白了爲什麼這樣做,並且能夠通過在代碼中設置CurrentUICulture並驗證事情按預期工作來進行測試。我應該在我的應用中默認設置Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture?

現在來包裝發佈的應用程序,我不確定如果在我的應用程序啓動時爲當前線程設置Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture是個好主意。從好的一面來說,我的應用程序可以通過改變區域設置來進行本地化設置(如果這是一個好的方面),但是我擔心可能會有一些不確定的因素。一個立即想到的是,雖然我所做的一切都很好,對我的線程來說,它不會適用於(從我在這裏和周圍閱讀時瞭解的)到由我的應用程序創建的任何線程(除非我也設置了CurrentUICulture),或者更糟糕的是我使用的任何組件可能會創建自己的線程。

會有其他問題嗎?將CurrentCultures設置爲與標準實踐相同的東西還是令人不悅的東西?

我想在做出決定之前儘可能多地瞭解這個起起落落的信息。

感謝

山姆

回答

5

山姆, 不惹它,除非你真的確定你在做什麼。

我假設我們在這裏說的是WinForms。該框架從系統中獲取可以說是最好的設置(由用戶配置)。從你的問題來看,它可能只是更多的測試問題。我經常在#if DEBUG之後輸入一些代碼來爲測試目的選擇一個語言環境。

我自己的例子:我的語言環境是荷蘭語(NL-NL),但我通常運行英文版的Windows。如果你重寫CurrentUICulture,我會得到荷蘭語版本(如果有的話),這通常是可以的。但我從經驗中知道一些控件/插件將保持英文(包括ShowMessage框和std對話框)。這個組合很難看。

但也要考慮不添加與CurrentCulture匹配的衛星的情況。系統會回退到程序中的默認值,而用戶的UI文化可能是更好的選擇。我不知道所有的後備規則,但你可能會得到類似於:

用戶在FR-FR窗口上運行fr-CA設置。你的節目回落到美國,用戶沒有快樂。

我的建議是:

  • 做一些實地測試
  • 如果你建立了覆蓋然後 中的app.config
+0

感謝所有有用的信息。我同意的原則,並認爲我們將使用的方法,將允許開啓和關閉選項的切換。 – 2009-02-05 18:38:29

2

老問題用一個開關,但是從一些意見用戶和開發人員:

  • 我是挪威人,但我有一個英文操作系統的原因。當應用程序出現在挪威時,我討厭它,因爲我的區域設置是挪威語。
  • 我已經使用前Thread.CurrentThread.CurrentCulture,而它似乎在第一工作不錯...然後突然你有一些觸發關閉一個新線程...(花了相當長的一段弄清楚爲什麼我得到了正確的數字格式中我的應用程序,但不是在我的例如報告)
相關問題