【发布时间】:2017-08-01 14:05:17
【问题描述】:
我正在开发一个 ASP.NET Core (.NETCoreApp 1.1) Web 应用程序,该应用程序具有多个视图(包括部分共享的视图)和需要本地化的控制器。
限制是本地化字符串位于具有以下结构的单个 JSON 文件中(只要保留在一个文件中即可更改):
{
"HELLO": {
"en": "Hello!",
"fr": "Bonjour !"
}
}
所以我想我需要的是本地化来访问这个独特的文件并提供我可以在我的控制器和视图中使用的IStringLocalizer 和IViewLocalizer 对象,例如_localizer["HELLO"],显然这不是默认模式。
为了增加难度,我还需要能够在默认情况下自动检测浏览器中的首选语言,或者明确地将语言作为路由值,例如 /en/Home/Index 或 /fr/Home/索引也是 /Home/Index。
我对 ASP.NET Core 非常陌生,即使有文档和各种示例实现位或我需要的东西,我也无法实现可以在生产中使用的任何可靠的东西。我遇到的所有东西要么缺少某些东西,要么已经过时了。
如果有了解这些事情的人能告诉我如何做到这一点,我将不胜感激!
编辑:我想我已经想出了如何从路线或浏览器中获取语言(如果路线中没有任何内容)。这是我所做的:
我的路由模板是template: "{lang?}/{controller=Home}/{action=Index}/{id?}"),这是我用来从控制器获取语言的代码:
string lang = this.RouteData.Values["lang"] as string;
if (lang == null)
{
string userLangs = HttpContext.Request.Headers["Accept-Language"].ToString();
lang = userLangs.Split(',').FirstOrDefault();
}
【问题讨论】:
标签: c# json asp.net-core localization