• .NET应用系统的国际化-整体设计思路


    近期产品要支持国际化多语言,主要涉及前端界面国际化以及后端提示信息、异常信息的国际化多语言支持。

    目前我们的开发技术栈:前端VUE、后端.NET。面向前端界面和后端服务,分别涉及对应的国际化多语言支持方案。

    一、前端界面国际化多语言支持

    前端VUE界面的源码如下:

     

     上述代码中,我们将需要多语言支持的文本,统一使用:

    $t("web.layout_logoTitle")

    前端对应的多语言包web对象结构如下:

    上面是标准的VUE前端国际化多语言实现技术。

    如果这么做的话,需要前端开发同学把每个VUE界面都识别、翻译形成一个多语言包JS文件,工作量巨大。

    所以我们有个初步的想法,通过代码文本识别,抽取多语言文本词条,代码中统一替换为词条ID,同时按界面生成多语言JS文件。

    如果能搞定的话,这将大大提升前端国际化改造的效率。

    二、后端服务国际化多语言支持

    后端代码目前是这样的:

    复制代码
    private static void CheckMd5(string fileName, string md5Data)
    {
          string md5Str = MD5Service.GetMD5(fileName);
          if (!string.Equals(md5Str, md5Data, StringComparison.OrdinalIgnoreCase))
          {
               throw new CustomException(PackageExceptionConst.FileMd5CheckFailed, "服务包文件MD5校验失败:" + fileName);
          }
    }
    复制代码

    代码中需要将“服务包文件MD5校验失败”这个文本做多语言改造。

    例如:英文

    throw new CustomException(PackageExceptionConst.FileMd5CheckFailed, "Verification of service pack file MD5 failed:" + fileName);

    如果支持多个语言,这个地方就不好处理了。不能为了每个语言搞一行代码,同时也无法支持后续新增语言。

    因此,计划在后端提供一个多语言词条服务,运行时根据用户登录的语言,动态获取对应的多语言文本。

    整体设计思路是这样的:

    1. 提供一个工具,识别前后端代码中的中文,形成多语言词条,按语言、界面、模块统一管理多有的多语言词条
    2. 提供一个翻译服务,批量翻译多语言词条
    3. 提供一个词条服务,支持后端代码在运行时根据用户登录的语言,动态获取对应的多语言文本
    4. 提供前端多语言JS生成服务,按界面动态生成对应的多语言JS文件,方便前端VUE文件使用。
    5. 提供代码替换工具,将VUE前端代码中的中文替换为$t("词条ID"),后端代码中的中文替换为TermService.Current.GetText("词条ID")

    接下来,将按上述5个部分,给大家的分别展开分享具体的实现。

     

    周国庆

    2023/3/5

     

  • 相关阅读:
    MongoDB-安全认证 (7)
    canvas的常用函数
    贝叶斯理论框架综述
    kafka创建、启动topic遇到的bug汇总 解决方法
    类和对象(上)--关于面向对象,类的定义,访问限定符,this指针
    boot引导升级,成功引导运行loader
    数论-整除分块
    408考研科目《数据结构》第一章:算法
    Linux关闭终端保留程序
    YGG 近期游戏合作伙伴一览
  • 原文地址:https://www.cnblogs.com/tianqing/p/17188422.html