1.增加i18n需要的中文json文件
2.把响应文件放入各个目录
3.修改引用json文件代码
流程设计器界面文件地址:\src\main\webapp\editor\i18n
应用程序界面文件地址:\src\main\webapp\i18n
任务列表界面文件地址:\src\main\webapp\workflow\i18n
用户管理界面文件地址:\src\main\webapp\idm\i18n
流程设计器js文件地址:\src\main\webapp\editor\scripts\app.js
应用程序js文件地址:\src\main\webapp\scripts\landing-app.js
任务列表js文件地址:\src\main\webapp\workflow\scripts\workflow-app.js
用户管理js文件地址:\src\main\webapp\idm\scripts\idm-app.js
以上四个文件中需要做的修改是一样的,都是按照以下步骤:
(1)先在js文件中搜索:var proposedLanguage = $translate.proposedLanguage(); 然后再将下图中的代码注释掉。
然后在上图中的代码下面加上以下代码:
var lang = (navigator.browserLanguage||navigator.language).toLowerCase();
switch (lang) {
case 'zh-cn':
$translate.use('zh-CN');
break;
case 'en':
$translate.use('en');
break;
default:
$translate.use('zh-CN');
}
上面的图片里是activiti使用angular的方法获取当前语言,然后使用本地多语言文件的方法。我发现$translate.proposedLanguage()并不能获取到浏览器语言。在这里我们修改成自己的方法,用js获取浏览器的语言,然后设置多语言的key。
(2)然后再搜索registerAvailableLanguageKeys方法,将其修改为以下代码:
$translateProvider.registerAvailableLanguageKeys(['en','zh-CN'], {
'en_*': 'en',
'en-*': 'en',
'zh-CN':'zh-CN'
});
这里是根据上面设置的key来选择使用哪个多语言文件,红框中的值为多语言的文件名。按照以上两个步骤分别修改上面列出的四个js文件即可。
流程设计器多语言文件地址:\src\main\resources
我们对其做修改,改为以下代码:
String language = Locale.getDefault().getLanguage();
String stencilsetJson;
switch (language) {
case "zh":
stencilsetJson = "stencilset_bpmn-zh.json";
break;
case "en":
stencilsetJson = "stencilset_bpmn-en.json";
break;
default:
stencilsetJson = "stencilset_bpmn-zh.json";
}
JsonNode stencilNode = objectMapper.readTree(this.getClass().getClassLoader().getResourceAsStream(stencilsetJson));
这里我们获取系统语言,然后选择对应的多语言文件即可。
我们在activiti-ui模块下的activiti-app模块下的\src\main\webapp\views地址下找到landing.html文件,可以看出上图中的文字是在下图中的红框中的div中设置的:
然后在下边添加一段js代码:
与第一部分的汉化一样,我们先获取到浏览器的语言,然后将此div中的文字修改为对应语言的文字即可。