ASP.NET Core 部署到CentOS下,语言资源只能加载默认的语言资源文件

SX_xiaoxia 2021-02-02 10:47:18
版本:.net Core 2.1
在ASP.NET Core中做多语言网站,在windows不管是通过IIS部署,还是通过dotnet启动,语言切换都正常,可以要找要求加载不同的语言包,但是发布到Cent OS 7.5中,语言资源只加载默认的语言包.
我的具体实现方式如下:
在路由中添加本次要请求语言

routes.MapRoute(
name: "UploadMvc",
template: "UploadMvc/{action}/{id?}",
defaults: new { controller = "UploadMvc", action = "UpdataFile" }
);

routes.MapRoute(
name: "default",
template: "{lang}/{controller}/{action}/{id?}",
defaults: new { lang = "zh-CN", controller = "Home", action = "Index" },
constraints: new { lang = "zh-cn|en-us|de-de|ko-kr|es-es|ja-jp" }
);

在Controller中获取到当前要使用的语言,并保存到ViewData中.

public override void OnActionExecuting(ActionExecutingContext context)
{
var routeData = context.RouteData;
var lang = "zh-cn";
if (routeData != null && routeData.Values != null)
{
var langObj = routeData.Values["lang"];
if (langObj != null)
{
lang = langObj.ToString().ToLower();
}
}
Language = lang;
ViewData["language"] = lang;
}

设置当前区域,如果链接传入 zh-cn 当前区域就设置为中国

Thread.CurrentThread.CurrentUICulture = new CultureInfo(ViewData["language"] as string);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ViewData["language"] as string);

语言资源包

然后再程序中使用

Language.Index_IMPLANT

获取响应的语言设置,Index_IMPLANT是资源文件的名称.

这种方式再windows下部署一切正常,但是在CentOS下部署,就只能加载默认的语言,也就是Language中的语言,不能根据设置的区域加载不同的语言了.

经过测试:经URL传入的语言能正常获取,CurrentUICulture和CurrentCulture 也能正常设置,区域也正确,就是找不到语言包.

发布后的目录




求教.
...全文
391 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cannycsy 2021-03-13
  • 打赏
  • 举报
回复
Linux下要区分大小写,就是数据库的表都要区分。
SX_xiaoxia 2021-02-05
  • 打赏
  • 举报
回复
经过几天的实践,在无意中发现超出认知范围的东西. 这里的en-us必须小写,其他语言才能正常,但是英语资源包以然是无法加载的,我给默认语言文件中配置的英语,这个问题就解决了. 必须是小写,而且还必须存在,其他语言包后两位必须是大写,否在也无法正常加载. Cent OS 7.5 英文环境 也不知道为什么会这样,我会持续实践这个问题. 结帖了,看到的都顶一下,三天后分分吧.
SX_xiaoxia 2021-02-04
  • 打赏
  • 举报
回复
引用 1 楼 icoolno1 的回复:
可能没安装相应的系统字符库吧。
系统改装的字符库都装了,是项目自带的多语言资源包加载不到
八爻老骥 2021-02-02
  • 打赏
  • 举报
回复
可能没安装相应的系统字符库吧。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧