[]
        
在线Demo 免费试用
(Showing Draft Content)

系统语言/自定义语言

1. 概述

1.1 功能概述

作为一款国际化产品,Wyn 界面支持多种语言显示。默认可以在en(英语)、pl(波兰语)、zh (中文)和 zh-TW(中文繁体)之间进行切换。除了这四种内置的语言之外, 还支持自定义语言扩展,满足全球用户的多语言需求。

1.2 应用场景

本文将带您探索Wyn系统语言的多语言配置功能。通过可视化工具,管理员可添加自定义语言包,用户则可自由选用已发布语言包,实现个性化的界面语言体验。

2. 官方语言包

  1. 系统管理员登录后,依次单击「系统管理>系统设置>系统外观>系统语言」,进入系统语言包管理界面,在该界面单击官方语言包,可以看到我们有四种内置的官方语言包,分别为中文(简体)、中文(繁体)、英语和波兰语,可以基于这四种官方语言包进行自定义,并应用到整个系统。

    PixPin_2025-07-15_10-30-33

  2. Wyn 支持三种方式自定义语言包:

    1. 创建

    2. 上传

    3. 导入

3. 自定义语言包

3.1 方式一:创建自定义语言包

此种方式通过后台直接生成语言包,操作简单便捷,大幅提升多语言配置效率。

  1. 系统管理员登录后,依次单击「系统管理>系统设置>系统外观>系统语言」,进入系统语言包管理界面,单击 +创建语言包 按钮,进入创建语言包界面。

    PixPin_2025-07-15_10-40-22

  2. 在创建语言包界面,为新的语言包设置基本信息,设置后,单击下方的“ 创建 ”按钮即可保存语言包。

    属性名称

    说明

    系统图示

    语言名称

    输入新语言包的名称,例如图中的“自定义语言包示例”。

    PixPin_2025-07-15_10-48-23

    引用的语言

    选择一个官方语言,后续将在此语言包的基础上进行修改,形成新的语言包。

    例如,系统图示中选择了中文(简体),那么后续将在简体中文的基础上进行修改,形成新的语言包。

    语言代码

    在下拉列表中选择一个代码,作为新语言包的语言代码,应用语言包时用来在URL中标识本语言。

  3. 自定义语言包创建完成后,在自定义语言包中可见刚刚创建的语言包。此时仅是将官方语言包进行了复制,并没有进行定制。

    PixPin_2025-07-15_10-56-47

    属性名称

    说明

    语言名称

    创建、上传或导入语言包时,为语言包输入的名称。

    语言代码:

    自定义语言包时,为语言包选择或自定义的语言代码。

    该代码将在URL中作为 language 参数的参数值标识本语言。

    母语名称:

    语言代码对应的母语名称。如果自定义语言代码,不是从列表中选取的话,这里会显示为“未知语言”。

    产品版本:

    语言代码对应的产品版本号。低于当前系统版本时需手动升级。

    发布状态:

    表示当前语言包是否发布,发布之后即可在系统中使用。

    是否有草稿:

    是否存在未发布的内容。比如刚刚创建的语言包、发布之后又进行的编辑修改等。

    image.png

    手动升级按钮

    当语言包对应的产品版本低于当前系统的版本时,则需手动点击按钮升级。

    升级时可查看版本间的语言差别,如需修改则可以直接单击导出,将不同之处导出为 Excel 文件,修改后上传。如不修改则直接单击升级按钮

    PixPin_2025-07-15_11-04-33

    image.png

    编辑按钮

    单击即可进入语言包编辑器。下一步中将介绍。

    image.png

    更多按钮

    单击后可发布语言包、丢弃草稿、下载、导出和删除。

    PixPin_2025-07-15_11-05-04

  4. 单击自定义语言包的编辑按钮,打开语言包编辑器进行编辑定制。

    PixPin_2025-07-15_11-06-12

    语言包编辑界面布局: 左侧为功能模块导航,右侧对应模块的字串列表采用双栏设计——左栏显示官方语言包内容,右栏支持自定义编辑,实现高效的多语言管理。

    1)根据实际需求修改内容,修改完成后,单击上方的保存按钮保存语言包。未保存时文件标记为"M",保存成功后更新为"D",确保修改状态一目了然。

    PixPin_2025-07-15_11-11-22

    2)保存完成后,单击语言包编辑器右上角的关闭按钮,退出语言包编辑器,完成定制。之后可以对自定义语言包界面对其进行管理,发布后即可使用。

3.2 方式二:上传自定义语言包

支持下载官方语言包进行本地化修改后重新上传,实现个性化多语言配置,兼顾标准化与定制化需求。

  1. 系统管理员登录后,依次单击「系统管理>系统设置>系统外观>系统语言」,进入系统语言管理界面,选择一个官方语言包并下载(例如选择中文包)。

    PixPin_2025-07-15_11-16-28

  2. 下载后将压缩包解压,看到如下文件。

    PixPin_2025-07-15_11-17-52

  3. 修改解压后的文件制作语言包。

    1)其中manifest.txt 为声明文件,其中描述了语言包的信息。需注意以下两点:

    1. 如下红色底纹中内容不要修改,其他内容请根据实际情况进行修改。

    2. 其中 LanguageCode (黄色底纹)为语言代码,其命名必须符合RFC4646规范、i18nnext 源代码规范且必须在微软官方DotNet Core中的Culture 列表中(详见本页最下方内容)。且该代码后续会用来在URL中标识本语言包。

      PixPin_2025-07-15_11-25-30

      例如,我们仅将LanguageCode修改为zh-Hans-CN

      PixPin_2025-07-15_11-26-12

      注意:

      LanguageCode语言代码,不能与系统中已有语言包的语言代码重复。

      为了确保语言代码的合法性,建议您使用新建语言包时下拉列表中给出的语言代码

      PixPin_2025-07-15_11-28-27

    2)其他文件夹中的文件除了工程文件(language-resources.json)之外均为语言资源文件,请按实际需要修改。每个文件夹中包含的模块如下:

    1. gcef-identity-service : 登录页面、重置密码页面、序列号注册页面等。

    2. gces-analysis: 数据模型相关页面。

    3. gces-common: 数据源、数据集、用户、组织、角色、生成令牌等页面。

    4. gces-dashboard: 仪表板相关页面。

    5. gces-forguncy: 填报相关页面。

    6. gces-reporting: 报表相关页面。

    7. gces-server: 其他,比如门户页面、后台管理页面、文档详情页面等。

    3)全部修改完成后,将所有文件选中,压缩成.zip 格式。

    PixPin_2025-07-15_11-33-00

  4. 在系统语言管理界面,单击上传按钮,选中语言包,设置语言名称后单击提交按钮即可完成语言包的上传。

    PixPin_2025-07-15_11-39-17

  5. 语言包上传成功后,可以在自定义语言包列表查看,可以对其进行管理,发布后即可使用。

    PixPin_2025-07-15_11-39-51

3.3 方式三:导入自定义语言包

导入自定义语言包是指先将已有语言包导出为 Excel 格式的文件,然后在本地进行修改,之后导入到系统中这样一个过程。

  1. 系统管理员登录后,依次单击「系统管理>系统设置>系统外观>系统语言」,进入系统语言包管理界面,选择一个官方语言包并导出(例如选择中文包)。

    PixPin_2025-07-15_12-26-44

    1)选择需要导出的模块(例如全选所有文件),然后单击导出

    PixPin_2025-07-15_12-27-10

    2)导出之后为一个 Excel 文件。

    PixPin_2025-07-15_12-27-38

  2. 打开 Excel 文件,找到对应的功能模块编辑字串,然后保存文件。

    image

    1)文件中第一个Sheet 即Manifest 中记录了文件的属性信息。除LanguageCode (即语言代码)和 DisplayName (即语言名称)外,均不可修改。

    2)如需修改 LanguageCode (即语言代码)则必须满足一定的规范,有关的具体介绍请参见本页中方式二中的详细介绍。

    PixPin_2025-07-15_12-34-003. 导入到系统中。

    1) 在系统语言管理界面,单击上传按钮,选中语言包,设置语言名称后单击提交按钮即可完成语言包的上传。使用上传功能进行 Excel 文件导入,单击上传按钮。

    PixPin_2025-07-15_11-55-33

    2)上传后语言包显示在自定义语言包栏列表中,可以对其进行管理,发布后即可使用。

    PixPin_2025-07-15_12-35-03

    3)上传成功后,也可以对已有的自定义语言包使用 Excel 导出导入的方式进行更新。但要求原自定义语言为已发布状态,这样上传新语言包时才会将原来的内容全量覆盖,成为新草稿。后续将其发布使用即可。

    PixPin_2025-07-15_13-35-23

4. 发布语言包

  1. 系统管理员登录后,依次单击「系统管理>系统设置>系统外观>系统语言」,进入系统语言包管理界面,单击自定义语言包 ,鼠标悬浮至任意语言包右侧的更多按钮,选择发布,弹出发布确认框。

    PixPin_2025-07-15_13-41-06

  2. 在弹出的发布确认框中,单击

    PixPin_2025-07-15_13-42-00

  3. 发布成功后,状态显示已发布。此时即可将语言包生效至系统应用。

    PixPin_2025-07-15_13-43-41

5. 应用自定义语言

  1. 自定义语言包发布状态为已发布后即可应用到系统中,有两种方法应用自定义语言包:


    方法一:在个人偏好中设置界面显示语言

    1. 在文档门户或系统管理,单击左下角的个人图标进入个人信息界面,选择偏好,然后找到语言,下拉设置语言,最后单击保存按钮保存设置,保存即可生效。

      PixPin_2025-07-15_13-49-39

    方法二:在URL中使用参数显示语言

    1. 在地址栏的URL中使用lng参数,参数值为自定义语言包或官方语言包的语言代码。例如:http://localhost:51980/?lng=en

      PixPin_2025-10-27_15-21-35

  2. 无论使用哪种方法应用自定义语言后即可查看到效果。

    例如,在方式一的自定义语言包测试中我们将个人配置模块中的偏好改为了个人偏好,在个人偏好中设置界面显示语言后可以看到已经生效。

    PixPin_2025-07-15_13-59-25

6. 语言代码规范

6.1 RFC4646 规范和 i18next 语言代码规则解读

  1. 在产品中LanguageCode 除了遵循 RFC4646 国际规范之外,还必须遵循 i18next语言代码规则。只有遵循了 i18next语言代码规则才可以保证语言包在系统中正常使用。

6.2 RFC4646 国际规范部分解读

以下是我们从RFC4646规范中提取的重要内容,帮助您快速熟悉规范。

6.2.1 组成

languagetag=language[−script][−region]∗[−variant]∗[−extension][−privateuse]

提示:

1.所有子标签值均不区分大小写。虽然子标签不区分大小写,但是统一的格式有助于理解。RFC4646规范建议:

1)非language子标签的两位字母均采用大写。

2)非language子标签的4位字母均采用首字母大写,其他字母小写。(在i18next源代码规范中对大小写规定进行了一定的补充说明,请进一步查看)

2.所有子标签值都具有最长长度为8位的限制,严格不允许存在空格。

3.中括号表示可省略,星号后的内容可有多个。

6.2.2 详解

6.2.2.1 Primary Language Subtag(主语言子标签)

  1. 表示一种被IANA认证通过的语种

  2. 语言代码的第一个子标签

  3. 不能被省略

  4. 格式与规则:

    范围

    规范

    备注

    2 characters

    ISO 639-1


    3 characters

    ISO 639-2


    'qaa'~'qtz'

    reserved by ISO 639-2

    private use

    4 characters

    reserved

    possible future standardization

    5~8characters

    discouraged

    no examples

    'i'

    used by some grandfathered tags


    other

    unallowed


    另外,主语言子标签还可以包含扩展语言子标签。

    Extended Language Subtags(扩展语言子标签)

    1. 位置紧跟主语言子标签,在其他子标签之前,理解成为主语言子标签的一部分

    2. 最多可以拥有三个扩展语言子标签

    3. 扩展语言子标签的值不能被其他规范注册

  5. 举例:

    zh, en

6.2.2.2 Script Subtag(方言子标签)

  1. 用于区分语言书面形式和书写系统,最显著地作用就是标注书写显示或打印时语言是从左到右还是从右到左

  2. 必须紧跟主语言子标签或者扩展语言子标签,在其他子标签之前

  3. 可以省略,最多一个

  4. 不同语言对应有固定的方言子标签,例如Hans和Hant就是针对中文(zh),不能跟在其他主语言子标签之后

  5. 格式与规则:

    范围

    规范

    备注

    3 digits

    ISO15924


    4 characters

    ISO15924


    'Qaaa'~'Qabx'

    reserved

    private use

  6. 举例:

    script subtag: Hans(简体中文)Hant(繁体中文)

    primary language subtag+script subtag: zh-Hanszh-Hant

6.2.2.3 Region Subtag(地区子标签)

  1. 用于标注与国家、地区相关的语言变体,一般只这种语言对该地区的特有表述做了定制化

  2. 地区子标签位于主语言子标签、扩展语言子标签和方言子标签之后,其他子标签之前

  3. 可以省略,最多一个

  4. 格式与规则:

    范围

    规范

    备注

    2 characters

    ISO3166-1(Alpha-2)

    规范中ISO3166 Alpha-3不能使用

    3 digits

    UN M49

    部分可用

  5. 举例:

    region subtag: TW(台湾省)CH(瑞士)

    primary language subtag+region subtag: zh-TW(台湾省使用的中文)de-CH(瑞士使用的德语)

    primary language subtag+script subtag+region subtag: zh-Hant-TW(台湾省使用的繁体中文)

6.2.2.4 Variant Subtag(变体子标签)

  1. 变体子标签用于表示语言的其他的、易于识别的变体,这些变体定义了一种语言或其方言,而其他可用的子标签没有涵盖这些变体。

  2. 变体子标签位于扩展子标签和私有用途子标签之前

  3. 可以没有,也可以有多个

  4. 每个变体都对应固定的主语言子标签,不同语言的变体子标签不能混用

  5. 格式与规则:

    范围

    规范

    备注

    >5characters

    没有规范

    需要rfc4646规范进行注册

    1digit+>3(character

    digit)

    没有规范

  6. 举例:

    variant subtag: 1991(从1991年之后算起)

    primary language subtag+variant subtag: de-1991(自1991年以后的规范德语)

6.2.2.5 Extension Subtag

  1. 扩展子标签提供了一种机制来扩展语言标记,以便在各种应用程序中使用

  2. 扩展子标签与前面的其他子标记之间由一个单字符子标记分隔,该字符不能为x

  3. 可以没有,也可以有多个

  4. 每个扩展子标记的长度必须在2至8个字符之间,且仅由字母或数字组成,每个子标记之间用一个'-'分隔。

  5. 格式与规则:

    格式

    singleton-extension subtag

    singleton

    非x的单字符

    extension subtag

    2~8characters

    其他

    每个singleton之后必须跟至少一个extension subtag

  6. 举例:

    extention subtag: a-USa-AMb-CHRIS

    primary subtag+extension subtag: zh-a-USzh-a-US-AM-b-CHRIS

6.2.2.6 Private Use Subtag

  1. 私有使用子标签被用于通过私有协议来表示特定上下文中重要的语言差异

  2. 私有使用子标签必须放在语言标签的最后

  3. 私有使用子标签与前面的定义的子标签之间有一个'x'字符分隔

  4. 举例:

    private use subtag: x-AZE

    primary language subtag+private use subtag: de-x-AZE

提示:

  • 简单说,RFC4646文件规定,一种语言的标签应该按照如下方式排列:

    language-script-region-variant-extension-privateuse

    1. language:这部分就是ISO639规定的代码,比如中文是zh。

    2. script:表示变体,比如简体汉字是zh-Hans,繁体汉字是zh-Hant。

    3. region:表示语言使用的地理区域,比如zh-Hans-CN就是中国大陆使用的简体中文。

    4. variant:表示方言。

    5. extension-privateuse:表示扩展用途和私有标识。

    一般约定,language标签全部小写,region标签全部大写,script标签只有首字母大写。不同标签之间用连字号-链接。

  • 下面列出一些与中文有关的语言标签。

    • zh-Hans简体中文

    • zh-Hans-CN大陆地区使用的简体中文

    • zh-Hans-HK香港地区使用的简体中文

    • zh-Hans-MO澳门使用的简体中文

    • zh-Hans-SG新加坡使用的简体中文

    • zh-Hans-TW台湾使用的简体中文

    • zh-Hant繁体中文

    • zh-Hant-CN大陆地区使用的繁体中文

    • zh-Hant-HK香港地区使用的繁体中文

    • zh-Hant-MO澳门使用的繁体中文

    • zh-Hant-SG新加坡使用的繁体中文

    • zh-Hant-TW台湾使用的繁体中文

6.3 i18next 语言代码规则

特殊值:hans、hant、lntn、cyrl、cans、mong、arab

具体规范:

  1. 如果code被‘-’分为两部分:

    1. 第一部分: 必须全部为小写;

    2. 第二部分:

      如果全小写后不在特殊值范围内,则第二部分需要全大写;

      如果全小写后在特殊值范围内,则第二部分首字母大写

      举例:zh-HANS(非法)应该为zh-Hans 、zh-tw(非法)应该为zh-TW

  2. 如果code被‘-’分为三部分:

    1. 第一部分: 必须全部为小写;

    2. 第二部分:

      如果全小写后在特殊值范围内,则第二部分首字母大写;

      如果全小写后不在特殊值范围内:

      • 且长度为2,则必须全部大写

      • 且长度不为2,则大小写都可以

    3. 第三部分:

      如果全小写后在特殊值范围内,则第三部分首字母大写;

      如果全小写后不在特殊值范围内:

      1)且第一部分不为sgn,同时第三部分长度为2时,第三部分必须全大写

      2)其他情况大小写都可以

  3. 其他情况,大小写都可以。

6.4 微软官方DotNet Core中的Culture 列表

  1. 微软官方对Culture的支持列表不是固定的,而是与计算机相关。