基於.Net Framework的國際應用程序

此文章來源於msdn

-----------------------

基於.Net Framework的國際應用程序


基於.Net Framework的國際應用程序可分爲兩部分:

  1. 全球化,即設計可適合不同區域性的應用程序的過程;
  2. 本地化,即翻譯爲特定區域性的資源的過程。

 

 

 

全球化最佳做法

1、在內部使應用程序代碼成爲 Unicode。

2、使用 System.Globalization 命名空間提供的區域性識別類來操作和格式化數據。   

 

  • 對於排序,使用 SortKey 類和 CompareInfo 類。
  • 對於字符串比較,使用 CompareInfo 類。
  • 對於日期和時間格式化,使用 DateTimeFormatInfo 類。
  • 對於數字格式化,使用 NumberFormatInfo 類。
  • 對於公曆和非公曆,使用 Calendar 類或特定的 Calendar 實現之一。

3、在適當的情況下,使用 System.Globalization..::.CultureInfo 類提供的區域性屬性設置。使用 CultureInfo..::.CurrentCulture 屬性來執行格式化任務,如日期和時間或數字的格式化。使用 CultureInfo..::.CurrentUICulture 屬性來檢索資源。請注意,CurrentCulture 和 CurrentUICulture 屬性可以基於每個線程來設置。

4、通過使用 System.Text 命名空間中的編碼類,使應用程序能夠與各種編碼相互進行數據讀寫。不要採用 ASCII 數據。假定在用戶可以輸入文本的任何位置都將提供國際字符。例如,在服務器名、目錄、文件名、用戶名和 URL 中接受國際字符。

5、使用 UTF8Encoding 類時,出於安全原因,建議您使用此類提供的錯誤檢測功能。要打開錯誤檢測功能,請使用帶有 throwOnInvalidBytes 參數的構造函數創建該類的實例,並將 throwOnInvalidBytes 的值設置爲 true。

6、儘可能將字符串按整個字符串處理,而不是按一系列個別字符處理。這在排序或搜索子字符串時尤爲重要。這可以防止與分析組合字符有關的問題。

7、使用 System.Drawing 命名空間提供的類來顯示文本。

8、爲保持操作系統間的一致性,不要允許用戶設置重寫 CultureInfo。使用接受 useUserOverride 參數的 CultureInfo 構造函數,並將該參數設置爲 false。

9、在國際操作系統版本上使用國際數據來測試應用程序功能。

10、如果安全決策基於字符串比較或大小寫更改操作的結果,請通過顯式指定 CultureInfo..::.InvariantCulture 屬性來執行不區分區域性的操作。這種做法確保結果不會受 CultureInfo.CurrentCulture 的值的影響。有關說明不區分區域性的字符串比較如何產生不一致結果的示例,請參見自定義大小寫映射和排序規則。

本地化最佳做法

1、將所有可本地化的資源移動到單獨的純資源 DLL 中。可本地化的資源包括用戶界面元素,如字符串、錯誤信息、對話框、菜單以及嵌入的對象資源。

2、不要對字符串或用戶界面資源進行硬編碼。

3、不要將不可本地化的資源放在純資源 DLL 中。否則會使翻譯人員產生困惑。

4、不要使用在運行時從串聯詞組生成的複合字符串。複合字符串難以本地化,因爲它們往往採用英語語法順序,而此順序並不適用於所有語言。

5、避免不明確的構造,如“Empty Folder”,因爲根據字符串組成部分的語法規則,這些字符串可能產生不同的翻譯。例如,“empty”既可以是一個動詞,也可以是一個形容詞,因此在諸如意大利語或法語等語言中就可能導致不同的翻譯。

6、避免在應用程序中使用包含文本的圖像和圖標。本地化這些圖像和圖標的成本是很大的。

7、允許在用戶界面中爲字符串長度的擴展保留足夠的空間。在某些語言中,詞組可能另外需要百分之五十到百分之七十五的空間。

8、使用 System.Resources..::.ResourceManager 類來根據區域性檢索資源。

9、使用 Microsoft Visual Studio 2005 創建 Windows 窗體對話框,以便可以使用 Windows 窗體資源編輯器 (Winres.exe) 對它們進行本地化。不要對 Windows 窗體對話框進行手動編碼。

10、安排進行專業本地化工作(翻譯)。

11、有關創建並本地化資源的完整說明,請參見“應用程序中的資源”。

ASP.NET 應用程序的全球化最佳做法

1、在應用程序中顯式設置 CurrentUICulture 和 CurrentCulture 屬性。不要依賴於默認設置。

2、請注意,ASP.NET 應用程序是託管應用程序,因此可以使用與其他託管應用程序相同的類,以根據區域性檢索、顯示和操作信息。

3、注意在 ASP.NET 中可以指定以下三種編碼類型:    

  • requestEncoding 指定從客戶端瀏覽器接收的編碼。
  • responseEncoding 指定要發送到客戶端瀏覽器的編碼。在大多數情形下,這應與 requestEncoding 是相同的。
  • fileEncoding 指定用於 .aspx、.asmx 和 .asax 文件分析的默認編碼。

4、在 ASP.NET 應用程序中的以下三個位置指定 requestEncoding、responseEncoding、fileEncoding、culture 和 uiCulture 屬性的值:    

  • 在 Web.config 文件的全球化一節中。此文件是 ASP.NET 應用程序的外部文件。有關更多信息,請參見 <globalization> 元素。
  • 在頁面指令中。請注意,當應用程序在頁面中時,文件已經被讀取。因此,指定 fileEncoding 和 requestEncoding 爲時已晚。只有 uiCulture、Culture 和 responseEncoding 可以在頁面指令中指定。
  • 在應用程序代碼中以編程方式指定。該設置可能隨請求的不同而不同。同頁面指令一樣,到打開應用程序代碼時,指定 fileEncoding 和 requestEncoding 爲時已晚。只有 uiCulture、Culture 和 responseEncoding 可以在應用程序代碼中指定。

5、請注意,uiCulture 可以設置爲瀏覽器接受語言。有關詳細信息,請參見 ASP.NET 快速入門中的“使用資源”示例。

發佈了17 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章