5 changed files with 292 additions and 285 deletions
Binary file not shown.
@ -0,0 +1,142 @@ |
|||||
|
ASPNET CORE 多语言 |
||||
|
|
||||
|
1. 语言定义zh-TW等同zh-tw |
||||
|
2. 控制器Controllers |
||||
|
a) 修改Startup.cs,添加引用命名空间 |
||||
|
using Microsoft.AspNetCore.Localization; |
||||
|
using System.Globalization; |
||||
|
|
||||
|
b) 修改Startup.cs,指定语言资源目录,代码添加ConfigureServices |
||||
|
services.AddLocalization(o => |
||||
|
{ |
||||
|
o.ResourcesPath = "Resources"; |
||||
|
}); |
||||
|
c) 修改Startup.cs,如果不指定存放翻译文件的目录, ASP.NET Core会默认从网站根目录下读取。需要在Configure方法中添加本地化中间件 |
||||
|
IList<CultureInfo> supportedCultures = new List<CultureInfo> |
||||
|
{ |
||||
|
new CultureInfo("en-US"), |
||||
|
new CultureInfo("zh-CN"), |
||||
|
new CultureInfo("zh-TW") |
||||
|
}; |
||||
|
|
||||
|
app.UseRequestLocalization(new RequestLocalizationOptions |
||||
|
{ |
||||
|
DefaultRequestCulture = new RequestCulture("en-US"), |
||||
|
SupportedCultures = supportedCultures, |
||||
|
SupportedUICultures = supportedCultures |
||||
|
}); |
||||
|
d) 添加Resources |
||||
|
e) 添加控制器对应资源文件,如范例Controllers.HomeController.zh-tw.resx |
||||
|
|
||||
|
|
||||
|
f) 修改控制器cs文件,添加引用using Microsoft.Extensions.Localization; |
||||
|
g) 修改控制器cs文件,添加定义private readonly IStringLocalizer<HomeController> _localizer; |
||||
|
h) 修改控制器cs文件,修改构造函数 |
||||
|
public HomeController(ILogger<HomeController> logger, IAuth authApi, ISYS sysApi, IStringLocalizer<HomeController> localizer) |
||||
|
{ |
||||
|
_logger = logger; |
||||
|
_authApi = authApi; |
||||
|
_sysApi = sysApi; |
||||
|
_localizer = localizer; |
||||
|
} |
||||
|
i) 修改控制器cs文件,添加测试代码 |
||||
|
public IActionResult Test() |
||||
|
{ |
||||
|
return Content(_localizer["Test"]); |
||||
|
} |
||||
|
j) 测试控制器指定语言?culture=zh-TW |
||||
|
|
||||
|
|
||||
|
k) |
||||
|
3. 视图Views |
||||
|
a) 修改Startup.cs,添加引用命名空间 |
||||
|
using Microsoft.AspNetCore.Mvc.Razor; |
||||
|
b) 修改Startup.cs,修改ConfigureServices里的AddMvc |
||||
|
services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix); |
||||
|
c) 添加视图资源文件,如下图,每一个视图对应一组不同语言资源文件 |
||||
|
|
||||
|
d) 修改视图文件,添加引用 |
||||
|
@using Microsoft.AspNetCore.Mvc.Localization |
||||
|
|
||||
|
@inject IViewLocalizer Localizer |
||||
|
e) 修改视图文件,指定资源 |
||||
|
<h2>@Localizer["Test"]</h2> |
||||
|
<h2>@Localizer["Hello"]</h2> |
||||
|
f) 测试控制器指定语言?ui-culture=zh-TW |
||||
|
|
||||
|
4. 修改登录数据model,增加Language |
||||
|
|
||||
|
5. 修改登入页面,增加语言选择 |
||||
|
|
||||
|
6. 设定Cookies保存登录语言 |
||||
|
|
||||
|
7. 资源文件公用 |
||||
|
a) 在Resources目录下建SharedResource.cs |
||||
|
using Microsoft.Extensions.Localization; |
||||
|
|
||||
|
namespace AMESCoreStudio.Web.Resources |
||||
|
{ |
||||
|
public class SharedResource |
||||
|
{ |
||||
|
private readonly IStringLocalizer _localizer; |
||||
|
|
||||
|
public SharedResource(IStringLocalizer<SharedResource> localizer) |
||||
|
{ |
||||
|
_localizer = localizer; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
b) 修改Startup.cs,注册AddDataAnnotationsLocalization服务 |
||||
|
services.AddMvc() |
||||
|
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) |
||||
|
.AddDataAnnotationsLocalization(options => |
||||
|
{ |
||||
|
options.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(SharedResource)); |
||||
|
}); |
||||
|
c) 新增共用资源文件Resources.SharedResource.zh-TW.resx(名字采用范例中的SharedResource.zh-TW.resx会找不到) |
||||
|
d) 修改控制器文件添加 |
||||
|
using AMESCoreStudio.Web.Resources; |
||||
|
|
||||
|
修改构造函数 |
||||
|
public SYSController(ILogger<SYSController> logger, ISYS sysApi , IPCS pCS, IStringLocalizer<SharedResource> sharedLocalizer) |
||||
|
{ |
||||
|
_logger = logger; |
||||
|
_sysApi = sysApi; |
||||
|
_pcsApi = pCS; |
||||
|
_sharedLocalizer = sharedLocalizer; |
||||
|
} |
||||
|
e) 修改视图文件 |
||||
|
@using AMESCoreStudio.Web.Resources; |
||||
|
@inject IHtmlLocalizer<SharedResource> sharedLocalizer |
||||
|
|
||||
|
获取资源 |
||||
|
<input type="hidden" id="ui_systemid" value="@sharedLocalizer["SYSTEM_ID"]" /> |
||||
|
<input type="hidden" id="ui_systemno" value="@sharedLocalizer["SYSTEM_NO"]" /> |
||||
|
<input type="hidden" id="ui_systemname" value="@sharedLocalizer["SYSTEM_NAME"]" /> |
||||
|
<input type="hidden" id="ui_systemdesc" value="@sharedLocalizer["SYSTEM_DESC"]" /> |
||||
|
|
||||
|
修改转列表栏位标题来自资源文件 |
||||
|
{ |
||||
|
field: 'systemID', |
||||
|
width: 160, |
||||
|
title: $("#ui_systemid").val(), |
||||
|
sort: true |
||||
|
}, |
||||
|
{ |
||||
|
field: 'systemNo', |
||||
|
width: 200, |
||||
|
title: $("#ui_systemno").val() |
||||
|
}, |
||||
|
{ |
||||
|
field: 'systemName', |
||||
|
minWidth: 200, |
||||
|
title: $("#ui_systemname").val() |
||||
|
}, |
||||
|
{ |
||||
|
field: 'systemDesc', |
||||
|
title: $("#ui_systemdesc").val(), |
||||
|
width: 160 |
||||
|
}, |
||||
|
8. |
||||
|
|
||||
|
|
Loading…
Reference in new issue