ASP.NET样板本地化

时间:2017-09-25 09:57:41

标签: c# localization asp.net-boilerplate

在ASP.NET Boilerplate中,我正在改变语言,如

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

它可以在我的本地计算机上正常运行,但不能在测试服务器上运行 此外,当我在本地点击它时,有时会出现带有空内容的abp.message.error。

我有几个问题:

1)这个URL是什么(/ AbpLocalization ...),看起来像lika一个控制器,但我的代码中没有这样的东西?

2)我如何找到并调试它?

3)在崩溃它的另一台服务器上会发生什么(在测试服务器点击按钮重新加载状态,但不改变语言)

3 个答案:

答案 0 :(得分:1)

解决! 造成这个问题的原因是,测试服务器上的数据库没有一个本地数据库中的表,而且更重要的是:该表包含在通过Entity Framework传输到数据库的模型中。将表添加到测试服务器后,一切正常。

答案 1 :(得分:0)

ASP.NET Boilerplate是一个由模块构建的应用程序框架,其中一个是Localization模块。由于它是开源的,你可以改变默认行为,虽然我不建议在没有充分理由的情况下这样做。

本地化是核心软件包的一部分,它位于此处:GitHub

我建议您使用文档并根据需要进行配置。您可以在此处找到本地化文档:documentation

最后,您应该检查测试环境中的运行配置,这可能会以某种方式出现故障。错误的另一个原因可能是您的ABP版本为issue

答案 2 :(得分: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引用。

同时你没有提到错误说的是什么。要了解它,请查看网站日志。