2011-01-20 113 views
0

我有英文和葡萄牙語支持的本網站。 在本地主機中一切正常,內容基於名爲「lang」的querystring參數進行翻譯。本地化在本地主機上運行,​​但不在生產環境中

的代碼塊這使得捉弄,讓每一頁:

protected override void InitializeCulture() 
{ 
    SetCulture(); 
} 

private void SetCulture() 
{ 
    var logger = Util.GetLogger(); 

    string lang = Request.QueryString["lang"]; 
    if (string.IsNullOrEmpty(lang)) { lang = "pt-br"; } 

    string sessionLang = (string)Session["lang"]; 


    if (sessionLang != lang) 
    { 
     Session["lang"] = lang; 
    } 

    logger.Log(string.Format("Culture {0} found",lang)); 

    UICulture = lang; 
    Culture = lang; 

    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang); 
    Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); 

    logger.Log(string.Format("Cultura {0} set", lang)); 

    base.InitializeCulture(); 
} 

得益於記錄器,我可以肯定地說,這種方法被稱爲在兩種情況下(生產和本地主機)。

我在App_GlobalResources文件夾中有兩個資源文件: -WebSitemapGlobal.en-us.resx; -WebSitemapGlobal.resx;

任何線索?

在此先感謝。

回答

0

我可以看到你對.NET中的本地化有點困惑。

首先,如果WebSiteMapGlobal.resx是在巴西葡萄牙語,沒有必要指定pt-br文化,因爲文化是中性

也許,這個問題是由於設置語言後調用base.InitializeCulture()。你也應該發佈一些關於你的頁面執行的日誌。

此外,軟件工程提示:您應該在SetCulture()之後撥打base.InitializeCulture()InitializeCulture()開始。結果是一樣的(我只是要求你去掉那個調用),但是從它的覆蓋調用一個基本方法是一個非常好的習慣。

相關問題