版本:.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 也能正常設定,區域也正確,就是找不到語言包.
發布后的目錄

求教.
uj5u.com熱心網友回復:
可能沒安裝相應的系統字符庫吧。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/255772.html
標籤:ASP.NET
