美文网首页
为HAP应用启用新语言支持

为HAP应用启用新语言支持

作者: 枫之叶_eliu | 来源:发表于2021-03-25 10:45 被阅读0次

HAP 简介

汉得应用开发平台(HAND Application Platform)是汉得公司为了应对移动互联网化、应用云端化、海量数据化和数字化服务转型的应用开发平台,是中台化产品和应用开发的基础平台。HAP采用开源的Java EE技术体系,平台设计灵活可扩展、可移植、可应对高并发需求。

更多信息请访问:http://eco.hand-china.com/platform/hap.html

启用新语言

HAP 应用开发平台默认支持简体中文和英语两种语言,如果要启用新的语言支持,比如西班牙语,则需要找到所有国际化相关的前后端对象进行翻译。

幸运的是,HAP 应用开发平台对国际化提供了良好的框架支持和开发规范,所以涉及到和多语言或者国际化相关的数据表和其他资源对象的分布相对集中且有规律可循,具体分三部分:

  1. 多语言描述总表 SYS_PROMPTS
  2. 所有平台和功能页面的实体对象所关联的多语言表 *_TL
  3. KendoUI 国际化支持文件 kendo.culture.<locale>.jskendo.messages.<locale>.js

下面以西班牙语为例,详细说明整个过程。

1. 定义语言代码

进入 系统管理 > 语言维护 新增西班牙语言代码 es_ES

image-20181009103555564

2. 适配 KendoUI 国际化资源文件

按照下表将指定的资源文件拷贝到对应目录下:

源文件路径 拷贝后的路径
target/core/lib/kendoui/js/messages/kendo.messages.en-GB.js src/webapp/lib/kendoui/js/messages/kendo.messages.es-ES.js
target/core/lib/kendoui/js/cultures/kendo.culture.en-GB.js src/webapp/lib/kendoui/js/cultures/kendo.culture.es-ES.js

3. 更新数据库记录

使用 en_GB 下的语言记录来更新所有的国际化表,脚本如下:

-- ========================================================
-- Insert all Spanish records based on original en_GB
--
-- Creation Date : 2018-10-08
-- Created By    : eliu
-- Script Version: 1.0.0
-- HAP Version   : 3.5.0-RELEASE
--
-- ========================================================
-- System Prompt table:
--   SYS_PROMPTS
-- Multi-lingual tables listed below:
--   FND_COMPANY_TL
--   HR_ORG_POSITION_TL
--   HR_ORG_UNIT_TL
--   SYS_ATTACH_CATEGORY_TL
--   SYS_CODE_TL
--   SYS_CODE_VALUE_TL
--   SYS_DASHBOARD_TL
--   SYS_FUNCTION_TL
--   SYS_HOTKEY_TL
--   SYS_IF_CONFIG_HEADER_TL
--   SYS_IF_CONFIG_LINE_TL
--   SYS_RESOURCE_ITEM_TL
--   SYS_RESOURCE_TL
--   SYS_ROLE_TL
-- ========================================================

-- sys_prompts
insert into sys_prompts (
  prompt_id,
  prompt_code,
  lang,
  description,
  object_version_number
)
select 
  SYS_PROMPTS_S.NEXTVAL,
  prompt_code,
  'es_ES',
  description,
  object_version_number
from sys_prompts where lang = 'en_GB';

-- FND_COMPANY_TL
INSERT INTO FND_COMPANY_TL(
    COMPANY_ID,
    LANG,
    COMPANY_SHORT_NAME,
    COMPANY_FULL_NAME
) SELECT 
    COMPANY_ID,
    'es_ES',
    COMPANY_SHORT_NAME,
    COMPANY_FULL_NAME
FROM FND_COMPANY_TL WHERE LANG = 'en_GB';

-- HR_ORG_POSITION_TL
INSERT INTO HR_ORG_POSITION_TL(
    POSITION_ID,
    LANG,
    NAME,
    DESCRIPTION
) SELECT 
    POSITION_ID,
    'es_ES',
    NAME,
    DESCRIPTION
FROM HR_ORG_POSITION_TL WHERE LANG = 'en_GB';

-- HR_ORG_UNIT_TL
INSERT INTO HR_ORG_UNIT_TL(
    UNIT_ID,
    LANG,
    NAME,
    DESCRIPTION
) SELECT 
    UNIT_ID,
    'es_ES',
    NAME,
    DESCRIPTION
FROM HR_ORG_UNIT_TL WHERE LANG = 'en_GB';

-- SYS_ATTACH_CATEGORY_TL
INSERT INTO SYS_ATTACH_CATEGORY_TL(
    CATEGORY_ID,
    LANG,
    CATEGORY_NAME,
    DESCRIPTION
) SELECT 
    CATEGORY_ID,
    'es_ES',
    CATEGORY_NAME,
    DESCRIPTION
FROM SYS_ATTACH_CATEGORY_TL WHERE LANG = 'en_GB';

-- SYS_CODE_TL
INSERT INTO SYS_CODE_TL(
    CODE_ID,
    LANG,
    DESCRIPTION
) SELECT 
    CODE_ID,
    'es_ES',
    DESCRIPTION
FROM SYS_CODE_TL WHERE LANG = 'en_GB';

-- SYS_CODE_VALUE_TL
INSERT INTO SYS_CODE_VALUE_TL(
    CODE_VALUE_ID,
    LANG,
    MEANING,
    DESCRIPTION
) SELECT 
    CODE_VALUE_ID,
    'es_ES',
    MEANING,
    DESCRIPTION
FROM SYS_CODE_VALUE_TL WHERE LANG = 'en_GB';

-- SYS_DASHBOARD_TL
INSERT INTO SYS_DASHBOARD_TL(
    DASHBOARD_ID,
    LANG,
    TITLE,
    DESCRIPTION
) SELECT 
    DASHBOARD_ID,
    'es_ES',
    TITLE,
    DESCRIPTION
FROM SYS_DASHBOARD_TL WHERE LANG = 'en_GB';


-- SYS_FUNCTION_TL
INSERT INTO SYS_FUNCTION_TL(
    FUNCTION_ID,
    LANG,
    FUNCTION_NAME,
    FUNCTION_DESCRIPTION
) SELECT 
    FUNCTION_ID,
    'es_ES',
    FUNCTION_NAME,
    FUNCTION_DESCRIPTION
FROM SYS_FUNCTION_TL WHERE LANG = 'en_GB';

-- SYS_HOTKEY_TL
INSERT INTO SYS_HOTKEY_TL(
    HOTKEY_ID,
    LANG,
    DESCRIPTION
) SELECT 
    HOTKEY_ID,
    'es_ES',
    DESCRIPTION
FROM SYS_HOTKEY_TL WHERE LANG = 'en_GB';

-- SYS_IF_CONFIG_HEADER_TL
INSERT INTO SYS_IF_CONFIG_HEADER_TL(
    HEADER_ID,
    LANG,
    NAME,
    DESCRIPTION
) SELECT 
    HEADER_ID,
    'es_ES',
    NAME,
    DESCRIPTION
FROM SYS_IF_CONFIG_HEADER_TL WHERE LANG = 'en_GB';

-- SYS_IF_CONFIG_LINE_TL
INSERT INTO SYS_IF_CONFIG_LINE_TL(
    LINE_ID,
    LANG,
    LINE_NAME,
    LINE_DESCRIPTION
) SELECT 
    LINE_ID,
    'es_ES',
    LINE_NAME,
    LINE_DESCRIPTION
FROM SYS_IF_CONFIG_LINE_TL WHERE LANG = 'en_GB';

-- SYS_RESOURCE_ITEM_TL
INSERT INTO SYS_RESOURCE_ITEM_TL(
    RESOURCE_ITEM_ID,
    LANG,
    ITEM_NAME,
    DESCRIPTION
) SELECT 
    RESOURCE_ITEM_ID,
    'es_ES',
    ITEM_NAME,
    DESCRIPTION
FROM SYS_RESOURCE_ITEM_TL WHERE LANG = 'en_GB';

-- SYS_RESOURCE_TL
INSERT INTO SYS_RESOURCE_TL(
    RESOURCE_ID,
    LANG,
    NAME,
    DESCRIPTION
) SELECT 
    RESOURCE_ID,
    'es_ES',
    NAME,
    DESCRIPTION
FROM SYS_RESOURCE_TL WHERE LANG = 'en_GB';

-- SYS_ROLE_TL
INSERT INTO SYS_ROLE_TL(
    ROLE_ID,
    LANG,
    ROLE_NAME,
    ROLE_DESCRIPTION
) SELECT 
    ROLE_ID,
    'es_ES',
    ROLE_NAME,
    ROLE_DESCRIPTION
FROM SYS_ROLE_TL WHERE LANG = 'en_GB';

4. 人工翻译

将所有西班牙语言下的字符串进行人工翻译,这包括 kendoui 的国际化资源文件和所有的国际化表的记录。

5. 清缓存并重启服务器

启动命令行工具 redis-cli 并连接至 Redis,执行以下命令清除 Redis 缓存:

flushall

重启 Tomcat 服务器。

相关文章

  • 为HAP应用启用新语言支持

    HAP 简介 汉得应用开发平台(HAND Application Platform)是汉得公司为了应对移动互联网化...

  • 适配 Google Play 结算系统的最新特性

    提醒开发者们:2020 年 11 月 1 日之前,启用了订阅功能的应用,需要在应用中为帐号保留和恢复功能提供支持。...

  • Flutter了解之国际化

    国际化:支持多种语言。为应用程序支持的每种语言设置本地化值,如文本(语言差异)、布局(阅读方向差异)、图片(国旗)...

  • Android应用实现语言切换

    语言切换需求 应用内切换语言,支持阿拉伯语(从右到左书写,即RTL语言支持) 语言切换是切换系统语言,不只本应用 ...

  • Android 为方法数超过 64K 的应用启用 MultiDe

    为方法数超过 64K 的应用启用 MultiDex

  • FW-Binder机制

    问题1 应用是怎么启用Binder机制 1 什么时候支持Binder机制 Activity.oncreate()应...

  • Kubernetes job

    应用-job 应用-cronjob 1.启用cronjob 2.创建cronjob,apiVersion为之前ku...

  • Android 简介

    Android 提供了一个内容丰富的应用框架来支持在 Java 语言环境中为移动设备开发应用和游戏 Android...

  • iOS本地化 NSLocalizedString

    在iOS应用程序中,一个app可能会支持多个语言,此时根据不同的语言需要显示该语言对应的内容。适应应用程序以支持特...

  • 为Deepin Linux启用蓝牙支持

    自从安装了Deepin Linux,并采用自己编译的内核后,笔者的ThinkPad X200笔记本体验可谓是上升了...

网友评论

      本文标题:为HAP应用启用新语言支持

      本文链接:https://www.haomeiwen.com/subject/qnelhltx.html