首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 全球化與本地化實戰:全球化架構篇

     編輯:關於ASP.NET

資源檔架構與命名慣例

專案建立 App_GlobalResources 資料夾,資源檔命名:Resources.resx(預設/備援)、Resources.zh-TW.resx、Resources.en-US.resx、Resources.fr-FR.resx 等。ASP.NET 依 UICulture 自動選擇對應檔案。

動態文化切換核心:InitializeCulture()

在 BasePage 覆寫 InitializeCulture()(頁面生命週期早期,控制項尚未建立),透過 Request.Form 讀取主版頁面 Header 控制項下拉選單值(名稱含命名容器前綴,如 ctl00$cphHeader$Header1$ddlLanguage),以 switch 設定 Thread.CurrentThread.CurrentUICulture 與 CurrentCulture,並寫入 Session 跨頁保持。

關鍵程式碼片段

protected override void InitializeCulture() {
    if (Request[PostBackEventTarget] != null) {
        string controlID = Request[PostBackEventTarget];
        if (controlID.Equals(LanguageDropDownID)) {
            string val = Request.Form[controlID];
            switch (val) {
                case "0": SetCulture("zh-TW", "zh-TW"); break;
                case "1": SetCulture("en-US", "en-US"); break;
                // ...
            }
        }
    }
    if (Session["MyUICulture"] != null) {
        Thread.CurrentThread.CurrentUICulture = (CultureInfo)Session["MyUICulture"];
        Thread.CurrentThread.CurrentCulture = (CultureInfo)Session["MyCulture"];
    }
    base.InitializeCulture();
}
void SetCulture(string ui, string cult) {
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(ui);
    Thread.CurrentThread.CurrentCulture = new CultureInfo(cult);
    Session["MyUICulture"] = Thread.CurrentThread.CurrentUICulture;
    Session["MyCulture"] = Thread.CurrentThread.CurrentCulture;
}

web.config 全球化設定

<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />

UTF-8 相容 ASCII 且支援全球字元,為多語言網站標準編碼。

資源檔部署考量

  • 保留 .resx 原始檔於伺服器便於翻譯修改,但任何異動會觸發應用程式重啟。
  • 大型專案建議預先編譯為 .resources DLL 或使用資料庫 Provider,避免頻繁回收影響可用性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved