Activiti6界面及流程設計器多語言化


一、界面多語言化
1、添加多語言json文件:
以下文件地址位於activiti-ui模塊下的activiti-app模塊下:

流程設計器界面文件地址:\src\main\webapp\editor\i18n
應用程序界面文件地址:\src\main\webapp\i18n
任務列表界面文件地址:\src\main\webapp\workflow\i18n
用戶管理界面文件地址:\src\main\webapp\idm\i18n

2、修改js文件:
以下文件地址位於activiti-ui模塊下的activiti-app模塊下:

流程設計器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文件即可。

二、流程設計器多語言化
1、添加多語言json文件:
以下文件地址位於activiti-ui模塊下的activiti-app-logic模塊下:

流程設計器多語言文件地址:\src\main\resources

 2、修改java文件:
在activiti-ui模塊下的activiti-app-rest模塊下搜索StencilSetResource文件,可以看出下圖紅框處的代碼便是選擇多語言文件的代碼:

 

 我們對其做修改,改為以下代碼:

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));
這里我們獲取系統語言,然后選擇對應的多語言文件即可。

三、首頁添加App模塊多語言化
最后一個是首頁中的添加App模塊,如下圖所示:

 

我們在activiti-ui模塊下的activiti-app模塊下的\src\main\webapp\views地址下找到landing.html文件,可以看出上圖中的文字是在下圖中的紅框中的div中設置的: 

 

<div class="app create-app">
<a ng-click="addAppDefinition()">
<div class="fixed">Add a new app</div>
<div class="app-content">
<h3>
+
</h3>
</div>
</a>

然后在下邊添加一段js代碼:

<script>
var createApp = '';
var lang = (navigator.browserLanguage||navigator.language).toLowerCase();
switch (lang) {
case 'zh-cn':
createApp = '添加一個新的應用程序';
break;
case 'en':
createApp = 'Add a new app';
break;
default:
createApp = '添加一個新的應用程序';
}
$('.fixed').html(createApp);
</script>
與第一部分的漢化一樣,我們先獲取到瀏覽器的語言,然后將此div中的文字修改為對應語言的文字即可。
---------------------
原文鏈接:https://blog.csdn.net/z1770223284/article/details/90301256


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM