【愚公系列】2023年02月 WMS智能仓储系统-002.多语言功能实现

举报
愚公搬代码 发表于 2023/02/28 22:38:54 2023/02/28
【摘要】 前言互联网时代的到来,企业的需要与国际接轨。这就面临一个问题不是所有的人都能看懂网上语言,如果你的网站仅仅使用中文,根据用户使用母语的搜索习惯,那些不以中文为母语的客户们,将很难在你的网站上做过多的停留,所以网站做多语言适配的重要性不言而喻。多语言网站开发重点就是解决语言之间的切换问题。 一、多语言功能实现 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。