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