簡體   English   中英

ASP.NET 樣板本地化

[英]ASP.NET boilerplate localization

在 ASP.NET Boilerplate 中,我正在更改語言,例如

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

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

我有幾個問題:

1) 這個 URL (/AbpLocalization...) 是什么,看起來像一個控制器,但我的代碼中沒有這樣的東西?

2)我怎樣才能找到並調試它?

3)在另一台服務器上可能會發生什么使其崩潰(在測試服務器上單擊按鈕重新加載狀態,但不會更改語言)

解決了! 導致問題的原因是,測試服務器上的數據庫沒有本地數據庫中的一張表,更重要的是:該表包含在通過實體框架傳輸到數據庫的模型中。 將表添加到測試服務器后一切正常。

ASP.NET Boilerplate 是一個由模塊構建的應用程序框架,其中之一是本地化模塊。 由於它是開源的,您可以更改默認行為,盡管我不建議在沒有充分理由的情況下這樣做。

本地化是核心包的一部分,位於此處: GitHub

我建議您使用文檔並根據需要對其進行配置。 您可以在此處找到本地化文檔:文檔

最后,您應該在測試環境中檢查您的運行配置,這可能以某種方式出現故障。 另一個錯誤原因可能是您的 ABP 版本有問題

AbpLocalizationController 在源代碼中位於此處

src/Abp.AspNetCore/AspNetCore/Mvc/Controllers/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 存儲庫 fork 項目並將其添加到您的解決方案中。 用這個本地項目引用替換你的 abp dll 引用。

同時你沒有提到錯誤所說的內容。 要了解它,請查看網站日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM