Переглянути джерело

国际化:调度中心实现国际化,支持中文、英文两种语言,默认为中文。

xuxueli 7 роки тому
батько
коміт
0269864bb9

+ 8 - 8
doc/XXL-JOB官方文档.md

@@ -1128,6 +1128,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 ### 6.21 版本 V1.9.1 特性[迭代中]
 - 1、修复打包部署时资源文件乱码问题;
 - 2、修复新版本chrome滚动到顶部失效问题;
+- 3、国际化:调度中心实现国际化,支持中文、英文两种语言,默认为中文。(迭代中)
 
 ### TODO LIST
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
@@ -1138,14 +1139,13 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 - 6、调度任务优先级;
 - 7、移除quartz依赖,重写调度模块:新增或恢复任务时将下次执行记录插入delayqueue,调度中心集群竞争分布式锁,成功节点批量加载到期delayqueue数据,批量执行。
 - 8、springboot 和 docker镜像,并且推送docker镜像到中央仓库,更进一步实现产品开箱即用;
-- 9、国际化:调度中心界面。
-- 10、任务告警逻辑调整:任务调度,以及任务回调失败时,均推送监控队列。后期考虑通过任务Log字段控制告警状态;
-- 11、执行器Log清理功能:调度中心Log删除时同步删除执行器中的Log文件;
-- 12、Bean模式任务,JobHandler自动从执行器中查询展示为下拉框,选择后自动填充任务名称等属性;
-- 13、API事件触发类型任务(更类似MQ消息)支持"动态传参、延时消费";该类型任务不走Quartz,单独建立MQ消息表,调度中心竞争触发;
-- 14、任务依赖增强,新增任务类型 "流程任务",流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题;
-- 15、分片任务某一分片失败,支持分片转移;
-- 16、调度中心触发任务后,先推送触发队列,异步触发,然后立即返回。降低quartz线程占用时长。
+- 9、任务告警逻辑调整:任务调度,以及任务回调失败时,均推送监控队列。后期考虑通过任务Log字段控制告警状态;
+- 10、执行器Log清理功能:调度中心Log删除时同步删除执行器中的Log文件;
+- 11、Bean模式任务,JobHandler自动从执行器中查询展示为下拉框,选择后自动填充任务名称等属性;
+- 12、API事件触发类型任务(更类似MQ消息)支持"动态传参、延时消费";该类型任务不走Quartz,单独建立MQ消息表,调度中心竞争触发;
+- 13、任务依赖增强,新增任务类型 "流程任务",流程节点可挂载普通类型任务,承担任务依赖功能。现有子任务模型取消;需要考虑任务依赖死循环问题;
+- 14、分片任务某一分片失败,支持分片转移;
+- 15、调度中心触发任务后,先推送触发队列,异步触发,然后立即返回。降低quartz线程占用时长。
 
 
 ## 七、其他

+ 36 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java

@@ -0,0 +1,36 @@
+package com.xxl.job.admin.core.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.EncodedResource;
+import org.springframework.core.io.support.PropertiesLoaderUtils;
+
+import java.io.IOException;
+import java.util.Properties;
+
+public class I18nUtil {
+    private static Logger logger = LoggerFactory.getLogger(I18nUtil.class);
+
+    private static final String i18n_file = "i18n/message.properties";
+    private static Properties prop = null;
+
+    public static Properties loadI18nProp(){
+        if (prop == null) {
+            try {
+                Resource resource = new ClassPathResource(i18n_file);
+                EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
+                prop = PropertiesLoaderUtils.loadProperties(encodedResource);
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+        return prop;
+    }
+
+    public static String getString(String key) {
+        return loadI18nProp().getProperty(key);
+    }
+
+}

+ 1 - 0
xxl-job-admin/src/main/resources/i18n/message.properties

@@ -0,0 +1 @@
+admin_name=任务调度中心

+ 0 - 0
xxl-job-admin/src/main/resources/i18n/message_en.properties