diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
index 643d9ac..16a4799 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
@@ -1,6 +1,7 @@
package com.xxl.job.admin.core.util;
import com.xxl.job.core.util.JacksonUtil;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
@@ -9,6 +10,7 @@
import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.IOException;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -21,15 +23,19 @@
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) {
//return prop;
}
try {
- Resource resource = new ClassPathResource(i18n_file);
+ // bild i18n prop
+ String i18n = PropertiesUtil.getString("xxl.job.i18n");
+ i18n = StringUtils.isNotBlank(i18n)?("_"+i18n):i18n;
+ String i18nFile =MessageFormat.format("i18n/message{0}.properties", i18n);
+
+ // load prop
+ Resource resource = new ClassPathResource(i18nFile);
EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
prop = PropertiesLoaderUtils.loadProperties(encodedResource);
} catch (IOException e) {
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
index 643d9ac..16a4799 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
@@ -1,6 +1,7 @@
package com.xxl.job.admin.core.util;
import com.xxl.job.core.util.JacksonUtil;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
@@ -9,6 +10,7 @@
import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.IOException;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -21,15 +23,19 @@
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) {
//return prop;
}
try {
- Resource resource = new ClassPathResource(i18n_file);
+ // bild i18n prop
+ String i18n = PropertiesUtil.getString("xxl.job.i18n");
+ i18n = StringUtils.isNotBlank(i18n)?("_"+i18n):i18n;
+ String i18nFile =MessageFormat.format("i18n/message{0}.properties", i18n);
+
+ // load prop
+ Resource resource = new ClassPathResource(i18nFile);
EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
prop = PropertiesLoaderUtils.loadProperties(encodedResource);
} catch (IOException e) {
diff --git a/xxl-job-admin/src/main/resources/i18n/message_en.properties b/xxl-job-admin/src/main/resources/i18n/message_en.properties
index 689fda5..9bf6dc1 100644
--- a/xxl-job-admin/src/main/resources/i18n/message_en.properties
+++ b/xxl-job-admin/src/main/resources/i18n/message_en.properties
@@ -1,6 +1,229 @@
admin_name=Job Scheduling Center
+admin_name_full=Distributed Task Scheduling Platform XXL-JOB
+admin_version=1.9.1�����հ汾��
+## system
+system_tips=ϵͳ��ʾ
+system_ok=ȷ��
+system_close=�ر�
+system_save=����
+system_cancel=ȡ��
+system_search=����
+system_status=״̬
+system_opt=����
+system_please_input=������
+system_please_choose=��ѡ��
+system_success=�ɹ�
+system_fail=ʧ��
+system_add_suc=�����ɹ�
+system_add_fail=����ʧ��
+system_update_suc=���³ɹ�
+system_update_fail=����ʧ��
+system_all=ȫ��
+system_api_error=�ӿ��쳣
+system_show=�鿴
+system_empty=��
+system_opt_suc=�����ɹ�
+system_opt_fail=����ʧ��
+system_opt_edit=�༭
+system_opt_del=ɾ��
+system_unvalid=�Ƿ�
+system_not_found=������
+
+## daterangepicker
+daterangepicker_ranges_recent_hour=���һСʱ
+daterangepicker_ranges_today=����
+daterangepicker_ranges_yesterday=����
+daterangepicker_ranges_this_month=����
+daterangepicker_ranges_last_month=�ϸ���
+daterangepicker_ranges_recent_week=���һ��
+daterangepicker_ranges_recent_month=���һ��
+daterangepicker_custom_name=�Զ���
+daterangepicker_custom_starttime=��ʼʱ��
+daterangepicker_custom_endtime=����ʱ��
+daterangepicker_custom_daysofweek=��,һ,��,��,��,��,��
+daterangepicker_custom_monthnames=һ��,����,����,����,����,����,����,����,����,ʮ��,ʮһ��,ʮ����
+
+## dataTable
+dataTable_sProcessing=������...
+dataTable_sLengthMenu=ÿҳ _MENU_ ����¼
+dataTable_sZeroRecords=û��ƥ����
+dataTable_sInfo=�� _PAGE_ ҳ ( �ܹ� _PAGES_ ҳ��_TOTAL_ ����¼ )
+dataTable_sInfoEmpty=��¼
+dataTable_sInfoFiltered=(�� _MAX_ ��������)
+dataTable_sSearch=����
+dataTable_sEmptyTable=����������
+dataTable_sLoadingRecords=������...
+dataTable_sFirst=��ҳ
+dataTable_sPrevious=��ҳ
+dataTable_sNext=��ҳ
+dataTable_sLast=ĩҳ
+dataTable_sSortAscending=: �����������
+dataTable_sSortDescending=: �Խ������д���
+
+## login
login_btn=Login
login_remember_me=Remember Me
login_username_placeholder=Please input username
-login_password_placeholder=Please input password
\ No newline at end of file
+login_password_placeholder=Please input password
+login_username_empty=�������¼�˺�
+login_username_lt_5=��¼�˺Ų�Ӧ����5λ
+login_password_empty=�������¼����
+login_password_lt_5=��¼���벻Ӧ����5λ
+login_success=��¼�ɹ�
+login_fail=��¼ʧ��
+login_param_empty=�˺Ż�����Ϊ��
+login_param_unvalid=�˺Ż��������
+
+## logout
+logout_btn=ע��
+logout_confirm=ȷ��ע����¼?
+logout_success=ע���ɹ�
+logout_fail=ע��ʧ��
+
+## dashboard
+job_dashboard_name=�����
+job_dashboard_job_num=��������
+job_dashboard_job_num_tip=�������������������
+job_dashboard_trigger_num=���ȴ���
+job_dashboard_trigger_num_tip=�������Ĵ����ĵ��ȴ���
+job_dashboard_jobgroup_num=ִ��������
+job_dashboard_jobgroup_num_tip=�����������ߵ�ִ������������
+job_dashboard_report=���ȱ���
+job_dashboard_report_loaddata_fail=���ȱ������ݼ����쳣
+job_dashboard_date_report=���ڷֲ�ͼ
+job_dashboard_date_report_suc_count=�ɹ����ȴ���
+job_dashboard_date_report_fail_count=ʧ�ܵ��ȴ���
+job_dashboard_rate_report=�ɹ�����ͼ
+job_dashboard_rate_report_suc_count=�ɹ����ȴ���
+job_dashboard_rate_report_fail_count=ʧ�ܵ��ȴ���
+
+## job info
+jobinfo_name=�������
+jobinfo_job=����
+jobinfo_field_add=��������
+jobinfo_field_update=��������
+jobinfo_field_id=����ID
+jobinfo_field_jobgroup=ִ����
+jobinfo_field_jobdesc=��������
+jobinfo_field_gluetype=����ģʽ
+jobinfo_field_executorparam=�������
+jobinfo_field_cron_unvalid=�������ʽ��ȷ��Cron
+jobinfo_field_author=������
+jobinfo_field_alarmemail=�����ʼ�
+jobinfo_field_alarmemail_placeholder=�����뱨���ʼ�������ʼ���ַ�ŷָ�
+jobinfo_field_executorRouteStrategy=·�ɲ���
+jobinfo_field_childJobId=������ID
+jobinfo_field_childJobId_limit=������ID({0})�����븸�����ظ�
+jobinfo_field_childJobId_placeholder=�����������������ID,����ڶ���ŷָ�
+jobinfo_field_executorBlockStrategy=�����������
+jobinfo_field_executorFailStrategy=ʧ�ܴ������
+jobinfo_script_location=�ű�λ��
+jobinfo_shard_index=��Ƭ���
+jobinfo_shard_total=��Ƭ����
+jobinfo_opt_pause=��ͣ
+jobinfo_opt_resume=�ָ�
+jobinfo_opt_log=��־
+jobinfo_opt_run=ִ��
+jobinfo_glue_remark=Դ�뱸ע
+jobinfo_glue_remark_limit=Դ�뱸ע��������Ϊ4~100
+jobinfo_glue_rollback=�汾����
+jobinfo_glue_jobid_unvalid=����ID�Ƿ�
+jobinfo_glue_gluetype_unvalid=�������GLUEģʽ
+
+## job log
+joblog_name=������־
+joblog_status=״̬
+joblog_status_all=ȫ��
+joblog_status_suc=�ɹ�
+joblog_status_fail=ʧ��
+joblog_status_running=������
+joblog_field_triggerTime=����ʱ��
+joblog_field_triggerCode=���Ƚ��
+joblog_field_triggerMsg=���ȱ�ע
+joblog_field_handleTime=ִ��ʱ��
+joblog_field_handleCode=ִ�н��
+joblog_field_handleMsg=ִ�б�ע
+joblog_field_executorAddress=ִ������ַ
+joblog_clean=����
+joblog_clean_log=��־����
+joblog_clean_type=����ʽ
+joblog_clean_type_1=����һ����֮ǰ��־����
+joblog_clean_type_2=����������֮ǰ��־����
+joblog_clean_type_3=����������֮ǰ��־����
+joblog_clean_type_4=����һ��֮ǰ��־����
+joblog_clean_type_5=����һǧ����ǰ��־����
+joblog_clean_type_6=����һ������ǰ��־����
+joblog_clean_type_7=������������ǰ��־����
+joblog_clean_type_8=����ʮ������ǰ��־����
+joblog_clean_type_9=����������־����
+joblog_clean_type_unvalid=�������Ͳ����쳣
+joblog_handleCode_200=�ɹ�
+joblog_handleCode_500=ʧ��
+joblog_handleCode_501=ʧ������
+joblog_kill_log=��ֹ����
+joblog_kill_log_limit=����ʧ�ܣ�����ֹ��־
+joblog_kill_log_byman=��Ϊ����������ֹ
+joblog_rolling_log=ִ����־
+joblog_rolling_log_refresh=ˢ��
+joblog_rolling_log_triggerfail=���������ʧ�ܣ����鿴ִ����־
+joblog_rolling_log_failoften=��ֹ����Rolling��־,����ʧ�ܴ���������,��ˢ��ҳ�����¼�����־
+joblog_logid_unvalid=��־ID�Ƿ�
+
+## job group
+jobgroup_name=ִ��������
+jobgroup_list=ִ�����б�
+jobgroup_add=����ִ����
+jobgroup_edit=�༭ִ����
+jobgroup_del=ɾ��ִ����
+jobgroup_field_order=����
+jobgroup_field_title=����
+jobgroup_field_addressType=ע�᷽ʽ
+jobgroup_field_addressType_0=�Զ�ע��
+jobgroup_field_addressType_1=�ֶ�¼��
+jobgroup_field_addressType_limit=�ֶ�¼��ע�᷽ʽ��������ַ����Ϊ��
+jobgroup_field_registryList=������ַ
+jobgroup_field_registryList_unvalid=������ַ��ʽ�Ƿ�
+jobgroup_field_registryList_placeholder=������ִ������ַ�б����ַ���ŷָ�
+jobgroup_field_appName_limit=������Сд��ĸ��ͷ����Сд��ĸ�����ֺ��л������
+jobgroup_field_appName_length=AppName��������Ϊ4~64
+jobgroup_field_title_length=���Ƴ�������Ϊ4~12
+jobgroup_field_order_digits=����������
+jobgroup_field_orderrange=ȡֵ��ΧΪ1~1000
+jobgroup_del_limit_0=�ܾ�ɾ������ִ����ʹ����
+jobgroup_del_limit_1=�ܾ�ɾ��, ϵͳ���ٱ���һ��ִ����
+
+## job conf
+jobconf_fail_alarm=ʧ�ܸ澯
+jobconf_fail_retry=ʧ������
+jobconf_route_first=��һ��
+jobconf_route_last=���һ��
+jobconf_route_round=��ѯ
+jobconf_route_random=���
+jobconf_route_consistenthash=һ����HASH
+jobconf_route_lfu=�����ʹ��
+jobconf_route_lru=������δʹ��
+jobconf_route_failover=����ת��
+jobconf_route_busyover=æµת��
+jobconf_route_shard=��Ƭ�㲥
+jobconf_idleBeat=����
+jobconf_beat=�������
+jobconf_monitor=�������ļ�ر���
+jobconf_monitor_detail=��ظ澯��ϸ
+jobconf_monitor_alarm_title=�澯����
+jobconf_monitor_alarm_type=����ʧ��
+jobconf_trigger_admin_adress=���Ȼ���
+jobconf_trigger_exe_regtype=ִ����-ע�᷽ʽ
+jobconf_trigger_exe_regaddress=ִ����-��ַ�б�
+jobconf_trigger_address_empty=����ʧ�ܣ�ִ������ַΪ��
+jobconf_trigger_run=��������
+jobconf_trigger_child_run=����������
+jobconf_trigger_fail_retry=����ʧ������
+jobconf_exe_fail_retry=ִ��ʧ������
+jobconf_callback_child_msg1={0}/{1} [����ID={2}], ����{3}, ������ע: {4}
+jobconf_callback_child_msg2={0}/{1} [����ID={2}], ����ʧ��, ������ע: ����ID��ʽ����
+jobconf_callback_msg1=����{0}, ������ע: {1}
+
+## help
+job_help=ʹ�ý̳�
+job_help_document=�ٷ��ĵ�
\ No newline at end of file
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
index 643d9ac..16a4799 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java
@@ -1,6 +1,7 @@
package com.xxl.job.admin.core.util;
import com.xxl.job.core.util.JacksonUtil;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
@@ -9,6 +10,7 @@
import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.IOException;
+import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -21,15 +23,19 @@
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) {
//return prop;
}
try {
- Resource resource = new ClassPathResource(i18n_file);
+ // bild i18n prop
+ String i18n = PropertiesUtil.getString("xxl.job.i18n");
+ i18n = StringUtils.isNotBlank(i18n)?("_"+i18n):i18n;
+ String i18nFile =MessageFormat.format("i18n/message{0}.properties", i18n);
+
+ // load prop
+ Resource resource = new ClassPathResource(i18nFile);
EncodedResource encodedResource = new EncodedResource(resource,"UTF-8");
prop = PropertiesLoaderUtils.loadProperties(encodedResource);
} catch (IOException e) {
diff --git a/xxl-job-admin/src/main/resources/i18n/message_en.properties b/xxl-job-admin/src/main/resources/i18n/message_en.properties
index 689fda5..9bf6dc1 100644
--- a/xxl-job-admin/src/main/resources/i18n/message_en.properties
+++ b/xxl-job-admin/src/main/resources/i18n/message_en.properties
@@ -1,6 +1,229 @@
admin_name=Job Scheduling Center
+admin_name_full=Distributed Task Scheduling Platform XXL-JOB
+admin_version=1.9.1�����հ汾��
+## system
+system_tips=ϵͳ��ʾ
+system_ok=ȷ��
+system_close=�ر�
+system_save=����
+system_cancel=ȡ��
+system_search=����
+system_status=״̬
+system_opt=����
+system_please_input=������
+system_please_choose=��ѡ��
+system_success=�ɹ�
+system_fail=ʧ��
+system_add_suc=�����ɹ�
+system_add_fail=����ʧ��
+system_update_suc=���³ɹ�
+system_update_fail=����ʧ��
+system_all=ȫ��
+system_api_error=�ӿ��쳣
+system_show=�鿴
+system_empty=��
+system_opt_suc=�����ɹ�
+system_opt_fail=����ʧ��
+system_opt_edit=�༭
+system_opt_del=ɾ��
+system_unvalid=�Ƿ�
+system_not_found=������
+
+## daterangepicker
+daterangepicker_ranges_recent_hour=���һСʱ
+daterangepicker_ranges_today=����
+daterangepicker_ranges_yesterday=����
+daterangepicker_ranges_this_month=����
+daterangepicker_ranges_last_month=�ϸ���
+daterangepicker_ranges_recent_week=���һ��
+daterangepicker_ranges_recent_month=���һ��
+daterangepicker_custom_name=�Զ���
+daterangepicker_custom_starttime=��ʼʱ��
+daterangepicker_custom_endtime=����ʱ��
+daterangepicker_custom_daysofweek=��,һ,��,��,��,��,��
+daterangepicker_custom_monthnames=һ��,����,����,����,����,����,����,����,����,ʮ��,ʮһ��,ʮ����
+
+## dataTable
+dataTable_sProcessing=������...
+dataTable_sLengthMenu=ÿҳ _MENU_ ����¼
+dataTable_sZeroRecords=û��ƥ����
+dataTable_sInfo=�� _PAGE_ ҳ ( �ܹ� _PAGES_ ҳ��_TOTAL_ ����¼ )
+dataTable_sInfoEmpty=��¼
+dataTable_sInfoFiltered=(�� _MAX_ ��������)
+dataTable_sSearch=����
+dataTable_sEmptyTable=����������
+dataTable_sLoadingRecords=������...
+dataTable_sFirst=��ҳ
+dataTable_sPrevious=��ҳ
+dataTable_sNext=��ҳ
+dataTable_sLast=ĩҳ
+dataTable_sSortAscending=: �����������
+dataTable_sSortDescending=: �Խ������д���
+
+## login
login_btn=Login
login_remember_me=Remember Me
login_username_placeholder=Please input username
-login_password_placeholder=Please input password
\ No newline at end of file
+login_password_placeholder=Please input password
+login_username_empty=�������¼�˺�
+login_username_lt_5=��¼�˺Ų�Ӧ����5λ
+login_password_empty=�������¼����
+login_password_lt_5=��¼���벻Ӧ����5λ
+login_success=��¼�ɹ�
+login_fail=��¼ʧ��
+login_param_empty=�˺Ż�����Ϊ��
+login_param_unvalid=�˺Ż��������
+
+## logout
+logout_btn=ע��
+logout_confirm=ȷ��ע����¼?
+logout_success=ע���ɹ�
+logout_fail=ע��ʧ��
+
+## dashboard
+job_dashboard_name=�����
+job_dashboard_job_num=��������
+job_dashboard_job_num_tip=�������������������
+job_dashboard_trigger_num=���ȴ���
+job_dashboard_trigger_num_tip=�������Ĵ����ĵ��ȴ���
+job_dashboard_jobgroup_num=ִ��������
+job_dashboard_jobgroup_num_tip=�����������ߵ�ִ������������
+job_dashboard_report=���ȱ���
+job_dashboard_report_loaddata_fail=���ȱ������ݼ����쳣
+job_dashboard_date_report=���ڷֲ�ͼ
+job_dashboard_date_report_suc_count=�ɹ����ȴ���
+job_dashboard_date_report_fail_count=ʧ�ܵ��ȴ���
+job_dashboard_rate_report=�ɹ�����ͼ
+job_dashboard_rate_report_suc_count=�ɹ����ȴ���
+job_dashboard_rate_report_fail_count=ʧ�ܵ��ȴ���
+
+## job info
+jobinfo_name=�������
+jobinfo_job=����
+jobinfo_field_add=��������
+jobinfo_field_update=��������
+jobinfo_field_id=����ID
+jobinfo_field_jobgroup=ִ����
+jobinfo_field_jobdesc=��������
+jobinfo_field_gluetype=����ģʽ
+jobinfo_field_executorparam=�������
+jobinfo_field_cron_unvalid=�������ʽ��ȷ��Cron
+jobinfo_field_author=������
+jobinfo_field_alarmemail=�����ʼ�
+jobinfo_field_alarmemail_placeholder=�����뱨���ʼ�������ʼ���ַ�ŷָ�
+jobinfo_field_executorRouteStrategy=·�ɲ���
+jobinfo_field_childJobId=������ID
+jobinfo_field_childJobId_limit=������ID({0})�����븸�����ظ�
+jobinfo_field_childJobId_placeholder=�����������������ID,����ڶ���ŷָ�
+jobinfo_field_executorBlockStrategy=�����������
+jobinfo_field_executorFailStrategy=ʧ�ܴ������
+jobinfo_script_location=�ű�λ��
+jobinfo_shard_index=��Ƭ���
+jobinfo_shard_total=��Ƭ����
+jobinfo_opt_pause=��ͣ
+jobinfo_opt_resume=�ָ�
+jobinfo_opt_log=��־
+jobinfo_opt_run=ִ��
+jobinfo_glue_remark=Դ�뱸ע
+jobinfo_glue_remark_limit=Դ�뱸ע��������Ϊ4~100
+jobinfo_glue_rollback=�汾����
+jobinfo_glue_jobid_unvalid=����ID�Ƿ�
+jobinfo_glue_gluetype_unvalid=�������GLUEģʽ
+
+## job log
+joblog_name=������־
+joblog_status=״̬
+joblog_status_all=ȫ��
+joblog_status_suc=�ɹ�
+joblog_status_fail=ʧ��
+joblog_status_running=������
+joblog_field_triggerTime=����ʱ��
+joblog_field_triggerCode=���Ƚ��
+joblog_field_triggerMsg=���ȱ�ע
+joblog_field_handleTime=ִ��ʱ��
+joblog_field_handleCode=ִ�н��
+joblog_field_handleMsg=ִ�б�ע
+joblog_field_executorAddress=ִ������ַ
+joblog_clean=����
+joblog_clean_log=��־����
+joblog_clean_type=����ʽ
+joblog_clean_type_1=����һ����֮ǰ��־����
+joblog_clean_type_2=����������֮ǰ��־����
+joblog_clean_type_3=����������֮ǰ��־����
+joblog_clean_type_4=����һ��֮ǰ��־����
+joblog_clean_type_5=����һǧ����ǰ��־����
+joblog_clean_type_6=����һ������ǰ��־����
+joblog_clean_type_7=������������ǰ��־����
+joblog_clean_type_8=����ʮ������ǰ��־����
+joblog_clean_type_9=����������־����
+joblog_clean_type_unvalid=�������Ͳ����쳣
+joblog_handleCode_200=�ɹ�
+joblog_handleCode_500=ʧ��
+joblog_handleCode_501=ʧ������
+joblog_kill_log=��ֹ����
+joblog_kill_log_limit=����ʧ�ܣ�����ֹ��־
+joblog_kill_log_byman=��Ϊ����������ֹ
+joblog_rolling_log=ִ����־
+joblog_rolling_log_refresh=ˢ��
+joblog_rolling_log_triggerfail=���������ʧ�ܣ����鿴ִ����־
+joblog_rolling_log_failoften=��ֹ����Rolling��־,����ʧ�ܴ���������,��ˢ��ҳ�����¼�����־
+joblog_logid_unvalid=��־ID�Ƿ�
+
+## job group
+jobgroup_name=ִ��������
+jobgroup_list=ִ�����б�
+jobgroup_add=����ִ����
+jobgroup_edit=�༭ִ����
+jobgroup_del=ɾ��ִ����
+jobgroup_field_order=����
+jobgroup_field_title=����
+jobgroup_field_addressType=ע�᷽ʽ
+jobgroup_field_addressType_0=�Զ�ע��
+jobgroup_field_addressType_1=�ֶ�¼��
+jobgroup_field_addressType_limit=�ֶ�¼��ע�᷽ʽ��������ַ����Ϊ��
+jobgroup_field_registryList=������ַ
+jobgroup_field_registryList_unvalid=������ַ��ʽ�Ƿ�
+jobgroup_field_registryList_placeholder=������ִ������ַ�б����ַ���ŷָ�
+jobgroup_field_appName_limit=������Сд��ĸ��ͷ����Сд��ĸ�����ֺ��л������
+jobgroup_field_appName_length=AppName��������Ϊ4~64
+jobgroup_field_title_length=���Ƴ�������Ϊ4~12
+jobgroup_field_order_digits=����������
+jobgroup_field_orderrange=ȡֵ��ΧΪ1~1000
+jobgroup_del_limit_0=�ܾ�ɾ������ִ����ʹ����
+jobgroup_del_limit_1=�ܾ�ɾ��, ϵͳ���ٱ���һ��ִ����
+
+## job conf
+jobconf_fail_alarm=ʧ�ܸ澯
+jobconf_fail_retry=ʧ������
+jobconf_route_first=��һ��
+jobconf_route_last=���һ��
+jobconf_route_round=��ѯ
+jobconf_route_random=���
+jobconf_route_consistenthash=һ����HASH
+jobconf_route_lfu=�����ʹ��
+jobconf_route_lru=������δʹ��
+jobconf_route_failover=����ת��
+jobconf_route_busyover=æµת��
+jobconf_route_shard=��Ƭ�㲥
+jobconf_idleBeat=����
+jobconf_beat=�������
+jobconf_monitor=�������ļ�ر���
+jobconf_monitor_detail=��ظ澯��ϸ
+jobconf_monitor_alarm_title=�澯����
+jobconf_monitor_alarm_type=����ʧ��
+jobconf_trigger_admin_adress=���Ȼ���
+jobconf_trigger_exe_regtype=ִ����-ע�᷽ʽ
+jobconf_trigger_exe_regaddress=ִ����-��ַ�б�
+jobconf_trigger_address_empty=����ʧ�ܣ�ִ������ַΪ��
+jobconf_trigger_run=��������
+jobconf_trigger_child_run=����������
+jobconf_trigger_fail_retry=����ʧ������
+jobconf_exe_fail_retry=ִ��ʧ������
+jobconf_callback_child_msg1={0}/{1} [����ID={2}], ����{3}, ������ע: {4}
+jobconf_callback_child_msg2={0}/{1} [����ID={2}], ����ʧ��, ������ע: ����ID��ʽ����
+jobconf_callback_msg1=����{0}, ������ע: {1}
+
+## help
+job_help=ʹ�ý̳�
+job_help_document=�ٷ��ĵ�
\ No newline at end of file
diff --git a/xxl-job-admin/src/main/resources/xxl-job-admin.properties b/xxl-job-admin/src/main/resources/xxl-job-admin.properties
index 9c425ab..85ea29c 100644
--- a/xxl-job-admin/src/main/resources/xxl-job-admin.properties
+++ b/xxl-job-admin/src/main/resources/xxl-job-admin.properties
@@ -16,4 +16,7 @@
xxl.job.login.password=123456
### xxl-job, access token
-xxl.job.accessToken=
\ No newline at end of file
+xxl.job.accessToken=
+
+### xxl-job, i18n (default empty as chinese, "en" as english)
+xxl.job.i18n=en
\ No newline at end of file