ASP.NET样板本地化
在ASP.NET中的样板,我改变语言如ASP.NET样板本地化
<a href="/AbpLocalization/ChangeCulture?cultureName=en">English</a>
它可以正常工作我的本地机器上,而不是测试服务器上。
另外,当我在本地单击它时,有时会出现空内容的abp.message.error。
我想过这几个问题:
1)这是什么URL(/ AbpLocalization ...),看起来利卡控制器,但没有这样的事情在我的代码?
2)如何找到并调试它?
3)可能会发生崩溃,它(在测试服务器上点击按钮重新加载状态,另一台服务器上的内容,但不改变语言)
解决! 导致问题的原因是测试服务器上的数据库没有一个表位于本地数据库中,更重要的是:此表包含在通过Entity Framework传输到数据库的模型中。将表添加到测试服务器后,一切正常。
ASP.NET样板是从模块构建的应用程序框架,其中之一是本地化模块。既然它是开源的,你可以改变默认行为,但我不应该建议没有真正的理由去做。
本地化是核心包的一部分,它的位置为:GitHub
我建议你使用的文档,并将其配置您的需求。您可以在这里找到本地化文档:documentation。
最后,您应该在测试环境中检查您的运行配置,这可能会以某种方式发生故障。错误的另一个原因可能是您的ABP版本issue。
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
}
如果您想调试此代码,请将该项目从github repo中分出并添加到您的解决方案中。将您的abp dll引用替换为本地项目引用。
同时你没有提到错误说的是什么。要了解它,请查看网站日志。
问题是,该错误实际上没有说什么。 Abp.message.error方法使用空标题和空消息进行调用,并且记录此类JSON: {data:null,status:0,config:{...},statusText:“”,标题:ƒ – Dawid
哪种语言是你试图切换?是它cultureName = en ?? –
我正试图在波兰语和英语之间切换(分别为cultureName'pl'和'en') – Dawid