開發世界性的應用程式的最佳作法
本章節將說明開發世界性的應用程式的最佳作法。
全球化最佳作法
請在內部製作您的應用程式 Unicode。
使用 System.Globalization 命名空間提供的文化特性感知類別來管理和格式化資料。
如需排序,請使用 SortKey 類別和 CompareInfo 類別。
如需字串比較,請使用 CompareInfo 類別。
如需日期和時間格式化,請使用 DateTimeFormatInfo 類別。
如需數字格式化,請使用 NumberFormatInfo 類別。
對於西曆和非西曆,請使用 Calendar 類別或其中一個特定曆法實作。
在適當情況下使用 System.Globalization.CultureInfo 類別提供的文化特性屬性設定。 使用 CultureInfo.CurrentCulture 屬性來格式化工作,例如日期和時間或數字格式化。 使用 CultureInfo.CurrentUICulture 屬性來擷取資源。 請注意,您可以根據個別執行緒來設定 CurrentCulture 和 CurrentUICulture 屬性。
啟用您的應用程式使用 System.Text 命名空間中的編碼類別來回讀取和寫入各種編碼方式的資料。 請勿假設 ASCII 資料。 請假設在使用中輸入文字的地方提供國際字元。 例如,應用程式應該會接受在伺服器名稱、目錄、檔名和 URL 中使用國際字元。
在使用 UTF8Encoding 類別時,基於安全理由,請使用這個類別所提供的錯誤偵測功能。 為了開啟錯誤偵測功能,應用程式會使用採用 throwOnInvalidBytes 參數的建構函式,並將此參數的值設定為 true,以建立此類別的執行個體。
如果可能的話,請將字串當做完整的字串處理,而不是連續的個別字串。 在排序或搜尋子字串時,這點特別重要。 它將可避免發生剖析組合字元的相關問題。
使用 System.Drawing 命名空間提供類別來顯示文字。
為了作業系統的一致性,請勿使用使用者設定來覆寫 CultureInfo。 請使用採用 useUserOverride 參數的 CultureInfo 建構函式,並將此參數設定為 false。
使用國際資料,在國際作業系統版本上測試您的應用程式功能。
如果安全性決策是根據字串比較或大小寫變更作業的結果,請讓應用程式執行不區分文化特性的作業。 這種作法可以確保結果不會受 CultureInfo.CurrentCulture 的值所影響。 請參閱自訂大小寫對應和排序規則,其中的範例示範了區分文化特性的字串比較如何產生不一致的結果。
當地語系化最佳作法
將所有可當地語系化資源移到個別僅含資源的 DLL。 可當地語系化的資源包括使用者介面項目,例如字串、錯誤訊息、對話方塊、功能表和內嵌物件資源。
請勿將字串或使用者介面資源寫在程式中。
請勿將不可當地語系化的資源放入僅含資源的 DLL。 它將造成轉譯器的混淆。
請勿使用在執行階段建置和來自連結字詞的複合字串。 複合字串很難進行當地語系化,因為它們通常會使用不適用於所有語言的英文文法順序。
避免模糊的建構,例如 "Empty Folder",其中的字串將依據字串元件擔任的文法角色,而進行不同的轉譯。 例如,"empty" 可以是動詞或形容詞,在某些語言中會有不同的轉譯結果,例如義大利文或法文。
避免在您的應用程式中使用含有文字的影像和圖示。 它們進行當地語系化的成本過高。
請保留充分的空間,以便在應用程式介面中擴展字串長度。 在某些語言中,字詞所需要的空間可能比在其他語言多百分之 50-75。
使用 System.Resources.ResourceManager 類別來根據文化特性擷取資源。
請使用 Visual Studio 2010 來建立 Windows Form 對話方塊,如此便能使用 Windows Form 資源編輯器 (Winres.exe) 對它們進行當地語系化。 請不要以手動方式編碼 Windows Form 對話方塊。
進行專業當地語系化 (轉譯)。
如需建立和當地語系化資源的完整描述,請參閱應用程式中的資源。
ASP.NET 應用程式的當地語系化最佳作法
在應用程式中明確設定 CurrentUICulture 和 CurrentCulture 屬性。 請勿過於依賴預設值。
請注意,ASP.NET 應用程式是 Managed 應用程式,因此可使用和其他 Managed 應用程式相同的類別,根據文化特性來擷取、顯示和管理資訊。
請注意,您可以指定下列三種 ASP.NET 中的編法方式型別:
requestEncoding 指定從用戶端瀏覽器接收的編法方式。
responseEncoding 指定要傳送到用戶端瀏覽器的編碼方式。 在多數情況下,此編碼方式應該與 requestEncoding 指定的編碼方式相同。
fileEncoding 指定 .aspx、.asmx 和 .asax 檔案剖析的預設編碼方式。
指定 ASP.NET 應用程式中,下列三個位置的 requestEncoding、responseEncoding、fileEncoding、culture 和 uiCulture 屬性值:
在 Web.config 檔案的全球化區段中。 這個程式位於 ASP.NET 應用程式外部。 如需詳細資訊,請參閱 <globalization> 項目。
在網頁指示詞中。 請注意,當應用程式位於網頁中,表示這個檔案已被讀取。 因此,此時要指定 fileEncoding 和 requestEncoding 已經太遲了。 您只能在網頁指示詞中指定 uiCulture、Culture 和 responseEncoding。
應用程式的程式碼。 這個設定會根據個別要求而有所不同。 和網頁指示詞一樣,使用應用程式碼時,表示要指定 fileEncoding 和 requestEncoding 已經太遲了。 您只能在應用程式碼中指定 uiCulture、Culture 和 responseEncoding。
請注意,uiCulture 值可設為瀏覽器所接受的語言。 如需詳細資料,請參閱 ASP.NET 快速入門和資源範例。