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

gMIS吉密斯部署和使用范围日益扩大,跨国多语言版本成为迫切须要的功能,早在2018年年中就考虑要增长这一功能——在gMIS吉密斯中实现多语言版本的支持。以期实现gMIS吉密斯的跨行业、跨地区和国际化多语言的广谱应用目标。php

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

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

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

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

语言模块对象:
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,
app

全局变量:
全局实例化 $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的大部分视图文件,都以模版文件都方式呈现。

在国际化多语言的扩展中,咱们须要在模版引擎中增长对语言对象的输出,形如:
$data[‘lang’][‘lang_key’] = ‘lang_value’;

而后在模版文件中使用以下方式增长对 lang_key 的调用:
{$lang[‘lang_key’]}

4. JavaScript脚本中调用

因为 gMIS 在设计上采用了高效的 Ajax 技术,页面进行了局部或部分的更新。这在多语言环境中,可能涉及到须要将相应的标签字符进行多语言翻译。
基于这种考虑,咱们在 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吉密斯

-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. 下降成本, 提升效率.

相关文章
相关标签/搜索