【愚公系列】2023年02月 WMS智能仓储系统-002.多语言功能实现
【摘要】 前言互联网时代的到来,企业的需要与国际接轨。这就面临一个问题不是所有的人都能看懂网上语言,如果你的网站仅仅使用中文,根据用户使用母语的搜索习惯,那些不以中文为母语的客户们,将很难在你的网站上做过多的停留,所以网站做多语言适配的重要性不言而喻。多语言网站开发重点就是解决语言之间的切换问题。 一、多语言功能实现 1.新建多语言资源文件创建资源文件MultiLanguage,同样的方式再添加Mu...
前言
互联网时代的到来,企业的需要与国际接轨。这就面临一个问题不是所有的人都能看懂网上语言,如果你的网站仅仅使用中文,根据用户使用母语的搜索习惯,那些不以中文为母语的客户们,将很难在你的网站上做过多的停留,所以网站做多语言适配的重要性不言而喻。
多语言网站开发重点就是解决语言之间的切换问题。
一、多语言功能实现
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"]);
}
}
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)