2017-09-25 123 views
1

在ASP.NET中的樣板,我改變語言如ASP.NET樣板本地化

<a href="/AbpLocalization/ChangeCulture?cultureName=en">English</a> 

它可以正常工作我的本地機器上,而不是測試服務器上。
另外,當我在本地單擊它時,有時會出現空內容的abp.message.error。

我想過這幾個問題:

1)這是什麼URL(/ AbpLocalization ...),看起來利卡控制器,但沒有這樣的事情在我的代碼?

2)如何找到並調試它?

3)可能會發生崩潰,它(在測試服務器上點擊按鈕重新加載狀態,另一臺服務器上的內容,但不改變語言)

回答

1

解決! 導致問題的原因是測試服務器上的數據庫沒有一個表位於本地數據庫中,更重要的是:此表包含在通過Entity Framework傳輸到數據庫的模型中。將表添加到測試服務器後,一切正常。

0

ASP.NET樣板是從模塊構建的應用程序框架,其中之一是本地化模塊。既然它是開源的,你可以改變默認行爲,但我不應該建議沒有真正的理由去做。

本地化是核心包的一部分,它的位置爲:GitHub

我建議你使用的文檔,並將其配置您的需求。您可以在這裏找到本地化文檔:documentation

最後,您應該在測試環境中檢查您的運行配置,這可能會以某種方式發生故障。錯誤的另一個原因可能是您的ABP版本issue

0

AbpLocalizationController設在這裏的源代碼

的src/Abp.AspNetCore/AspNetCore/MVC /控制器/ AbpLocalizationController.cs

這是改變文化代碼:

public virtual ActionResult ChangeCulture(string cultureName, string returnUrl = "") 
     { 
      if (!GlobalizationHelper.IsValidCultureCode(cultureName)) 
      { 
       throw new AbpException("Unknown language: " + cultureName + ". It must be a valid culture!"); 
      } 

      var cookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(cultureName, cultureName)); 

      Response.Cookies.Append(
       CookieRequestCultureProvider.DefaultCookieName, 
       cookieValue, 
       new CookieOptions {Expires = Clock.Now.AddYears(2)} 
      ); 

      if (AbpSession.UserId.HasValue) 
      { 
       SettingManager.ChangeSettingForUser(
        AbpSession.ToUserIdentifier(), 
        LocalizationSettingNames.DefaultLanguage, 
        cultureName 
       ); 
      } 

      if (Request.IsAjaxRequest()) 
      { 
       return Json(new AjaxResponse()); 
      } 

      if (!string.IsNullOrWhiteSpace(returnUrl) && AbpUrlHelper.IsLocalUrl(Request, returnUrl)) 
      { 
       return Redirect(returnUrl); 
      } 

      return Redirect("/"); //TODO: Go to app root 
} 

https://github.com/aspnetboilerplate/aspnetboilerplate/blob/dev/src/Abp.AspNetCore/AspNetCore/Mvc/Controllers/AbpLocalizationController.cs

如果您想調試此代碼,請將該項目從github repo中分出並添加到您的解決方案中。將您的abp dll引用替換爲本地項目引用。

同時你沒有提到錯誤說的是什麼。要了解它,請查看網站日誌。

+0

問題是,該錯誤實際上沒有說什麼。 Abp.message.error方法使用空標題和空消息進行調用,並且記錄此類JSON: {data:null,status:0,config:{...},statusText:「」,標題:ƒ – Dawid

+0

哪種語言是你試圖切換?是它cultureName = en ?? –

+0

我正試圖在波蘭語和英語之間切換(分別爲cultureName'pl'和'en') – Dawid