文章目录
- 前言
- 一、多语言功能实现
- 1.新建多语言资源文件
- 2.使用步骤
- 3.控制器中使用
前言
互联网时代的到来,企业的需要与国际接轨。这就面临一个问题不是所有的人都能看懂网上语言,如果你的网站仅仅使用中文,根据用户使用母语的搜索习惯,那些不以中文为母语的客户们,将很难在你的网站上做过多的停留,所以网站做多语言适配的重要性不言而喻。
多语言网站开发重点就是解决语言之间的切换问题。
一、多语言功能实现
1.新建多语言资源文件
创建资源文件MultiLanguage,同样的方式再添加MultiLanguage.en-us、MultiLanguage.zh-cn。
输入如下就可以配置多语言
2.使用步骤
#region 添加多语言本地化支持
services.AddLocalization();services.AddSingleton<IStringLocalizer>((sp) =>
{var sharedLocalizer = sp.GetRequiredService<IStringLocalizer<MultiLanguage>>();return sharedLocalizer;
});
#endregion
AddDataAnnotationsLocalization必须在AddControllers之后
services.AddControllers(c =>
{c.Filters.Add(typeof(ViewModelActionFiter));c.MaxModelValidationErrors = 99999;
}).AddDataAnnotationsLocalization(options => {options.DataAnnotationLocalizerProvider = (type, factory) =>factory.Create(typeof(ModernWMS.Core.MultiLanguage));}); ;
var localization_options = new RequestLocalizationOptions().SetDefaultCulture(support_languages[0]).AddSupportedCultures(support_languages).AddSupportedUICultures(support_languages);
app.UseRequestLocalization(localization_options);
3.控制器中使用
/// <summary>
/// user controller
/// </summary>
[Route("user")]
[ApiController]
[ApiExplorerSettings(GroupName = "Base")]
public class UserController : BaseController
{#region Args/// <summary>/// user Service/// </summary>private readonly IUserService _userService;/// <summary>/// Localizer Service/// </summary>private readonly IStringLocalizer<ModernWMS.Core.MultiLanguage> _stringLocalizer;#endregion#region constructor/// <summary>/// constructor/// </summary>/// <param name="userService">user Service</param>/// <param name="stringLocalizer">Localizer</param>public UserController(IUserService userService, IStringLocalizer<ModernWMS.Core.MultiLanguage> stringLocalizer){this._userService = userService;this._stringLocalizer = stringLocalizer;}#endregion/// <summary>/// Get a record by id/// </summary>/// <returns>args</returns>[HttpGet]public async Task<ResultModel<UserViewModel>> GetAsync(int id){var data = await _userService.GetAsync(id);if (data != null){return ResultModel<UserViewModel>.Success(data);}else{return ResultModel<UserViewModel>.Error(_stringLocalizer["not_exists_entity"]);}}
}