gMIS吉密斯 部署和使用范围日益扩大,跨国多语言版本成为迫切需要的功能,早在2018年年中就考虑要增加这一功能——在gMIS吉密斯中实现多语言版本的支持。

以期实现gMIS吉密斯的跨行业、跨地区和国际化多语言的广谱应用目标。

经过一段时间的密集开发、测试,目前gMIS吉密斯i18n多语言国际化更新已经完成。其中过程比预料的长,修改完善难度比预想的大,涉及到的修改模块也较多,兹记录备忘于此。

1. 基于GWA2的多国语言包设计

gMIS的开发框架是 GWA2吉娃兔,GWA2本身有跨语言的版本实现,如GWA2 Java, GWA2PHP,GWA2Perl等编程语言版本。gMIS所依赖的GWA2的编程语言版本为GWA2PHP,所以gMIS的多语言实现也是继承和扩展了 GWA2PHP(吉娃兔的PHP版本)的多语言开发模式。

在GWA2PHP的多国语言版本多实现中,主要依靠如下设施。

语言模块对象:

mod/language.class.php

其主要方法是实例化 Language.class 并加载语言包文件;同时提供按 lang_key 进行相应翻译的操作方法;

语言包文件:

lang/language.pkg.zh_CN.json,

lang/language.pkg.en_US.json,

lang/language.pkg.ja_JP.json,

全局变量:

全局实例化 $lang 语言包对象,并在全局范围内可以访问。

同时对当前语言环境进行探测,对语言版本环境对探测又进一步地区分为有显式的语言版本参数如 “&lang=zh” 等,或者使用隐式的语言环境参数来判断当前应该加载哪种语言包。

输出 $lang 到模板引擎:

$data[‘$lang’][‘lang_key’] = $lang->get(‘lang_key’);

如此以来,便可在 模版文件中以 {$lang[‘lang_key’]} 多方式进行访问。

后面会进一步地详细描述。

2. Module类或Controler类PHP程序中调用语言包对象

在gMIS中,普通PHP文件中对多语言对象多访问形式如下:

print $lang->get(‘lang_key’);

该语句将输出按当前语言配置所加载语言包对应多 lang_key 所指向的语言版本相应的内容,其中语言对象 $lang 是全局变量,可以在任意 controller文件中进行调用。类似地,在Module模块类中,需要更多的修改,在Module模块类的声明创建和实例化时,引入全局变量语言包对象。

如在 mod/abc.class.php 的文件中,传递 $lang 对象:

public function __construct($args, $lang=null);

为后向兼容,也可以不安全或不推荐地直接使用全局变量 $ lang :

`public function _myFunc(){

return if($lang){ $lang->get(‘lang_key’); }

}`

3. HTML模板文件中调用

gMIS 在设计和实现 GWA2 PHP 时,完整地继承了 GWA2 的 MVC,因此,作为兼容和后续扩展,gMIS的大部分视图文件,都以模版文件都方式呈现。默认的模板引擎 Smarty 将替换为 Hanjst汉吉斯特.

在国际化多语言的扩展中,我们需要在模版引擎中增加对语言对象的输出,形如:

$data‘lang’ = ‘lang_value’;

然后在模版文件中使用如下方式增加对 lang_key 的调用:

{$lang[‘lang_key’]}

4. JavaScript脚本中调用

由于 gMIS 在设计上采用了高效的 Ajax 技术: GTAjax ,页面进行了局部或部分的更新。这在多语言环境中,可能涉及到需要将相应的标签字符进行多语言翻译。

基于这种考虑,我们在 ido.php 进行加载时,输出 userinfo.$lang 全局变量,在其中以 JSON 方式将待翻译的语言标签输出到 JavaScript中,从而使得当我们需要在 JavaScript 调用相应的语言标签时,能够进行顺利的调用,进而显示合适的语言版本给终端用户。

userinfo.$lang = {“lang_key”:”lang_value”, “”:””};

在 JavaScript 实际调用中:

let buttonValue = userinfo.$lang[‘lang_key’];

5. XML/JSON数据表配置文件中调用

gMIS强大对可扩展性和伸缩性依赖于我们所涉及对元数据与用户数据对隔离,而实现元数据与用户数据对融合操作对就是我们对gMIS表数据处理引擎。

在gMIS,我们针对每一张被管理的数据表创建了一个表格属性描述文件,该属性描述文件以配置文件xml格式存储在 xml子目录下。当目标数据表被加载时,数据处理引擎将读取配置文件,以属性描述文件定义的各种格式将用户数据呈现出来。

在这一过程中,显然,如果我们在属性描述文件中有关于国际化多语言的内容标签,就需要一并也要创建对应的语言版本的属性描述文件。基于这些考虑,我们将xml文件的国际化多语言修改形如下:

xml/abctbl.xml –> xml/abctbl.en_US.xml

xml/abctbl.xml –> xml/abctbl.zh_CN.xml

xml/abctbl.xml –> xml/abctbl.ja_JP.xml

….

默认情况下,如果某个数据表efgtbl没有 xml/efgtbl.xml 属性描述文件,则使用系统默认的形式将用户数据显示出来;也是默认的,如果某个数据表 efgtbl 的某个国际化语言版本 xml/efgtbl.zh_CN.xml 没有被创建出来,系统依然鲁棒地使用默认配置将用户数据用默认语言版本呈现出来。

6. lang_key /value 的设计与规划

gMIS 国际化多语言的语言包文件的设计采用通用数据交换文件格式 JSON。在多语言标签设计时,将标签按如下分类进行设置:每个标签键名称以下划线分割的多段英文字符隔空。每段表示不同的层级。

样例如下:

navi_xxxx,

func_xxxx,

form_xxxx,

user_xxxx,

func_importxlsx,

func_importxlsx_hint,

navi_help_company,

navi_help_company_faq,

….

7. 国际化多语言使用者/开发者社区

gMIS吉密斯源码早几年前已开源在 -github 上,然而由于没有进行国际化多语言操作,开发和使用仅限于中文环境,随着这次国际化多语言的完善,gMIS的开发将迎来更多非中文开发者和使用者。

这将为gMIS吉密斯的发展壮大注入更加强大而持续的动力,为gMIS吉密斯由管理后台进化为管控操作系统做进一步地准备。

对非中文母语的开发者而言,源代码中没有了写死的常量“中文”字符, 修改代码不再有障碍;gMIS吉密斯的代码将得到全球范围内的开发者的审阅、修订和完善。

对于非中文母语的使用者而言,可以通过在首页的使用语言切换功能,快速切换为自己熟悉的语言界面. 从而为gMIS带来全世界的用户。使用范围将进一步地扩大到全球范围。

从而实现了gMIS的跨行业、跨地区和跨语言的全新时代。

2019-11-04,山东威海国际机场。

-gMIS (general Management Information System,吉密斯) 是一种基于 -GWA2 (General Web Application Architecture,吉娃兔) 的通用管理信息系统应用软件,具有可配置的输入和输出接口、开箱即用等特征。

可以在其上构建各种信息管理应用软件系统,例如:

内容管理系统(CMS), 客户资源管理(CRM), 企业资源计划管理(ERP),

办公自动化系统(OA)等, 以及各种行业应用管理系统软件,例如:

人力资源管理系统(HR),学生管理,档案管理,旅游管理,图书管理,

商品管理及业务运营支撑系统(BOSS)等等。

实现零代码开发、快速搭建各种管理信息系统(MIS, Management Information System).

-gMIS is a -GWA2 based Management Information System (MIS) software with characteristics like configurable input and output interfaces, open-box-to-use.

Various management application software systems can be built on it, such as

Content Management System (CMS), Customer Resource Management (CRM), Enterprise Resource Planning Management (ERP),

Office automation systems (OA), as well as different industry application management system softwares, such as

Human Resource Management System (HR), Student Management, Archive Management, Tourism Management, Book Management,

Commodity management and business operations support systems (BOSS), etc.

With zero code development, -gMIS can build a set of management information systems (MIS) software in a few minutes.

**Lower Costs,

Better Productivity.

降低成本,

提高效率.**

-R/o2SP

html多语言国际化,gMIS吉密斯i18n多语言国际化更新相关推荐

  1. ☘gMIS吉密斯i18n国际化多语言更新

    gMIS吉密斯部署和使用范围日益扩大,跨国多语言版本成为迫切需要的功能,早在2018年年中就考虑要增加这一功能--在gMIS吉密斯中实现多语言版本的支持.以期实现gMIS吉密斯的跨行业.跨地区和国际化 ...

  2. gMIS吉密斯十年执念:Lower Costs较低成本Better Productivity较高效率

    Hello 2020! 元旦快乐!今起揭开21世纪20年代的篇章. 1. gMIS吉密斯十周年 2010-2020,十年转眼已成历史,gMIS吉密斯--通用管理信息系统(general Managem ...

  3. gMIS吉密斯更新:Pivot透视+图示,List+观察模式

    2019独角兽企业重金招聘Python工程师标准>>> gMIS 吉密斯 持续更新升级,本次更新主要如下數據透視增加圖示\List視圖增加觀察模式等几点,备忘如下. Pivot透视增 ...

  4. 超越前端Beyond Frontend — 吉密斯/gMIS 增加点选/PickUp概览功能

    "-.总是拿着微不足道的成就来骗自己-., 总是靠一点酒精的麻醉才能够睡去-." - 台湾歌手郑智化<水手>歌词. 超越前端Beyond Frontend - 吉密斯/ ...

  5. 机械学习与R语言--Naive Bayes 朴素贝叶斯在R语言中的实现

    为什么天气预报说70%概率下雨?为什么垃圾短信垃圾邮件被自动归类?这一切的基础算法便是朴素贝叶斯理论(算法有很多,这仅是其中之一). 1.由贝叶斯理论到朴素贝叶斯(naive bayes) 理论的基础 ...

  6. c语言第二版吉顺如答案,C语言程序设计教程 第2版 教学 吉顺如 刘新铭 辜碧容 29315 C第2版实验与习题参考答案.pdf...

    第 1 章 实验与习题答案 1.5 实验 P8-9 2.改错题 1) #include main() { int x,y,sum; // x=10; y=20; // sum=x+y; printf( ...

  7. aqara (737) -(a俩)_A-史密斯:勇士有人类已知的最强后场组合,湖人很难限制

    虎扑11月7日讯 今日,NBA评论员斯蒂芬-A-史密斯在<First Take>节目中谈到了他对于新赛季的勇士的期待.节目未上线前史密斯曾与节目官方推特互动预热,称后场投射最强的那支球队更 ...

  8. AlphaGo之父戴密斯·哈萨比斯:是天才,也是生活里的普通人

    来源:砺石商业评论(libusiness)丨 文:高冬梅 数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中 ...

  9. 项目国际化I18N多语言切换

    作为国际化的门户网站,支持多种不同的语言,以方便不同国家,不同语种的用户访问尤其重要,目前通过Vue I18n已实现中英文自由切换. 一.了解I18N 1.什么是I18N i18n(其来源是英文单词 ...

最新文章

  1. 20项任务横扫BERT!CMU谷歌发布XLNet,NLP再迎屠榜时刻
  2. 改工作空间_打拼六年换的新房,装修花了17万,飘窗改柜子很实用,谁见过?...
  3. JAVA——改变观感
  4. Boost:额外的bimap的测试程序
  5. sharepoint 弹出框
  6. 正则表达式匹配减号_THOR断点教程0910 网球规则1112 后附常用正则表达式数据...
  7. 【研究方向是SDN该怎么做?】软件定义网络(SDN)的安全挑战和机遇
  8. 哈佛博士主导的一桩勒索病毒离奇历史
  9. BZOJ3252攻略——长链剖分+贪心
  10. sourceTree外部工具解决冲突
  11. oracle中sqldrunl结尾符号,oracle笔记(韩顺平oracle视频教学整理)
  12. UniWebView 3 使用心得
  13. 高等数学导数公式与积分表
  14. system进程占用资源高居不下
  15. NC65与蓝凌OA审批集成
  16. 1960-征战的Loy
  17. 前厅(the backrooms)
  18. EMC测试仪器_如何实现EMC的测试工作?
  19. 让明日科技今日成真,Mali-G72有何妙招?
  20. vue-seamless-scroll 点击click失效

热门文章

  1. 【原】概率论——第一章第1节
  2. Android添加垂直滚动scrollview
  3. CentOS5.6下配置rsync内网同步数据到外网
  4. WIF基本原理(2)基于声明的标识模型
  5. 51Testing第二十一期软件测试免费沙龙开始报名(上海)
  6. 以电商网站为例,谈大型分布式架构设计与优化
  7. easyui-window 关闭事件,只要关闭窗口就会触发
  8. 关于graphviz绘制的点(dot)图在显示时中文乱码问题的解决方法(亲测)
  9. 磁盘df看还有剩余空间,但是创建文件时报错,提示磁盘已经满问题解决
  10. 数据库(分库分表)中间件对比