You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampark.apache.org by be...@apache.org on 2022/11/12 01:12:32 UTC

[incubator-streampark] branch dev updated: [Improve]Add i18n support for flink app menu (add/edit). (#2006)

This is an automated email from the ASF dual-hosted git repository.

benjobs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-streampark.git


The following commit(s) were added to refs/heads/dev by this push:
     new 9bc281ff3 [Improve]Add i18n support for flink app menu (add/edit). (#2006)
9bc281ff3 is described below

commit 9bc281ff378a6ef07f3660b7e6efc3f0127c6cc4
Author: lvlin241 <lv...@163.com>
AuthorDate: Sat Nov 12 09:12:26 2022 +0800

    [Improve]Add i18n support for flink app menu (add/edit). (#2006)
---
 .../src/locales/lang/en/flink/app.ts               | 43 +++++++++++++++++
 .../src/locales/lang/zh-CN/flink/app.ts            | 43 +++++++++++++++++
 .../flink/app/hooks/useCreateAndEditSchema.ts      | 54 +++++++++++-----------
 .../src/views/flink/app/hooks/useCreateSchema.ts   | 44 +++++++++---------
 4 files changed, 135 insertions(+), 49 deletions(-)

diff --git a/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts b/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
index e6742c582..424cee3ae 100644
--- a/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
+++ b/streampark-console/streampark-console-webapp/src/locales/lang/en/flink/app.ts
@@ -144,6 +144,7 @@ export default {
     jmMemoryOptions: 'JM Memory Options',
     tmMemoryOptions: 'TM Memory Options',
     properties: 'Flink application dynamic configuration',
+    podTemplate: 'Kubernetes Pod Template',
     flinkCluster: 'Flink Cluster',
     yarnQueue: 'Yarn Queue',
     yarnSessionClusterId: 'Yarn Session ClusterId',
@@ -160,6 +161,7 @@ export default {
     module: 'Module',
     appType: 'Application Type',
     programArgs: 'Program Args',
+    programJar: 'Program Jar',
   },
   runStatusOptions: {
     added: 'ADDED',
@@ -173,4 +175,45 @@ export default {
     silent: 'SILENT',
     terminated: 'TERMINATED',
   },
+  addApplicationTips: {
+    developmentModePlaceholder: 'please select job type',
+    developmentModeIsRequiredMessage: 'Job Type is required',
+    executionModePlaceholder: 'please select execution mode',
+    executionModeIsRequiredMessage: 'Execution Mode is required',
+    hadoopEnvInitiMessage: 'Hadoop environment initialization failed, please check the environment settings',
+    resourceFromMessage: 'resource from is required',
+    mainClassPlaceholder: 'Please enter Main class',
+    mainClassIsRequiredMessage: 'Program Main is required',
+    projectPlaceholder: 'Please select Project',
+    projectIsRequiredMessage: 'Project is required',
+    projectModulePlaceholder: 'Please select module of this project',
+    applicationTypePlaceholder: 'Please select Application type',
+    applicationTypeIsRequiredMessage: 'Application Type is required',
+    programJarIsRequiredMessage: 'Program Jar is required',
+    useSysHadoopConf: 'Use System Hadoop Conf',
+    flinkVersionIsRequiredMessage: 'Flink Version is required',
+    applicationNamePlaceholder: 'Please enter jobName',
+    applicationNameIsRequiredMessage: 'Application Name is required',
+    applicationNameNotUniqueMessage: 'application name must be unique. The application name already exists',
+    applicationNameExistsInRunningJobYarnMessage: 'The application name is already running in yarn,cannot be repeated. Please check',
+    applicationNameExistsInRunningJobK8sMessage: 'The application name is already running in k8s,cannot be repeated. Please check',
+    applicationNameNotValid: 'The application name is invalid.characters must be (Chinese|English|"-"|"_"),two consecutive spaces cannot appear.Please check',
+    tagsPlaceholder: 'Please enter tags,if more than one, separate them with commas(,)',
+    parallelismPlaceholder: 'The parallelism with which to run the program',
+    slotsOfPerTaskManagerPlaceholder: 'Number of slots per TaskManager',
+    restartSizePlaceholder: 'restart max size',
+    alertTemplatePlaceholder: 'Alert Template',
+    totalMemoryOptionsPlaceholder: 'Please select the resource parameters to set',
+    tmPlaceholder: 'Please select the resource parameters to set',
+    yarnQueuePlaceholder: 'Please enter yarn queue',
+    descriptionPlaceholder: 'Please enter description for this application',
+    yarnSessionClusterIdPlaceholder: 'Please Select Yarn Session clusterId',
+    kubernetesNamespacePlaceholder: 'default',
+    kubernetesClusterIdPlaceholder: 'Please enter Kubernetes clusterId',
+    kubernetesClusterIdIsRequiredMessager: 'Kubernetes clusterId is required',
+    flinkImagePlaceholder: 'Please enter the tag of Flink base docker image, such as: flink:1.13.0-scala_2.11-java8',
+    flinkImageIsRequiredMessager: 'Flink Base Docker Image is required',
+    k8sRestExposedTypePlaceholder: 'kubernetes.rest-service.exposed.type',
+    hadoopXmlConfigFileTips: 'Automatically copy configuration files from system environment parameters',
+  },
 };
diff --git a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
index 9ab73ed99..e1906f260 100644
--- a/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
+++ b/streampark-console/streampark-console-webapp/src/locales/lang/zh-CN/flink/app.ts
@@ -141,6 +141,7 @@ export default {
     jmMemoryOptions: 'JM内存配置',
     tmMemoryOptions: 'TM内存配置',
     properties: '动态参数配置',
+    podTemplate: 'Kubernetes Pod 模板',
     flinkCluster: 'Flink集群',
     yarnQueue: 'Yarn队列',
     yarnSessionClusterId: 'Yarn session模式集群',
@@ -157,6 +158,7 @@ export default {
     module: '模块',
     appType: 'Application类型',
     programArgs: '程序参数',
+    programJar: '程序jar文件',
   },
   runStatusOptions: {
     added: '新增',
@@ -170,4 +172,45 @@ export default {
     silent: '静默',
     terminated: '终止',
   },
+  addApplicationTips: {
+    developmentModePlaceholder: '请选择开发模式',
+    developmentModeIsRequiredMessage: '开发模式必选',
+    executionModePlaceholder: '请选择执行模式',
+    executionModeIsRequiredMessage: '执行模式必选',
+    hadoopEnvInitiMessage: 'hadoop环境检查失败, 请检查配置',
+    resourceFromMessage: '资源来源必选',
+    mainClassPlaceholder: '请输入程序入口类',
+    mainClassIsRequiredMessage: '入程序入口类必填',
+    projectPlaceholder: '请选择项目',
+    projectIsRequiredMessage: '项目必选',
+    projectModulePlaceholder: '请选择项目的模块',
+    applicationTypePlaceholder: '请选择Application类型',
+    applicationTypeIsRequiredMessage: 'Application类型必选',
+    programJarIsRequiredMessage: '程序jar文件必选',
+    useSysHadoopConf: '使用系统hadoop配置',
+    flinkVersionIsRequiredMessage: 'Flink版本必选',
+    applicationNamePlaceholder: '请输入作业名称',
+    applicationNameIsRequiredMessage: '作业名称必填',
+    applicationNameNotUniqueMessage: '作业名称必须唯一, 输入的作业名称已经存在',
+    applicationNameExistsInRunningJobYarnMessage: '应用程序名称已经在yarn中运行,不能重复。请检查',
+    applicationNameExistsInRunningJobK8sMessage: '该应用程序名称已经在k8s中运行,不能重复。请检查',
+    applicationNameNotValid: '应用程序名称无效。字符必须是(中文|英文|"-"|"_"),不能出现两个连续的空格,请检查',
+    tagsPlaceholder: '请输入标签,如果超过一个,用逗号(,)分隔',
+    parallelismPlaceholder: '运行程序的并行度',
+    slotsOfPerTaskManagerPlaceholder: '每个TaskManager的插槽数',
+    restartSizePlaceholder: '最大重启次数',
+    alertTemplatePlaceholder: '告警模板',
+    totalMemoryOptionsPlaceholder: '请选择要设置的资源参数',
+    tmPlaceholder: '请选择要设置的资源参数',
+    yarnQueuePlaceholder: '请输入yarn队列名称',
+    descriptionPlaceholder: '请输入此应用程序的描述',
+    yarnSessionClusterIdPlaceholder: '请选择 Yarn Session 集群',
+    kubernetesNamespacePlaceholder: '默认',
+    kubernetesClusterIdPlaceholder: '请选择k8s集群',
+    kubernetesClusterIdIsRequiredMessager: 'k8s集群必填',
+    flinkImagePlaceholder: '请输入Flink基础docker镜像的标签,如:flink:1.13.0-scala_2.11-java8',
+    flinkImageIsRequiredMessager: 'Flink基础docker镜像是必填的',
+    k8sRestExposedTypePlaceholder: 'k8s服务对外类型',
+    hadoopXmlConfigFileTips: '从系统环境参数自动复制配置文件',
+  },
 };
diff --git a/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateAndEditSchema.ts b/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateAndEditSchema.ts
index 71a66eff8..7b0c13213 100644
--- a/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateAndEditSchema.ts
+++ b/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateAndEditSchema.ts
@@ -200,19 +200,19 @@ export const useCreateAndEditSchema = (
         label: t('flink.app.table.flinkVersion'),
         component: 'Select',
         componentProps: {
-          placeholder: 'Flink Version',
+          placeholder: t('flink.app.table.flinkVersion'),
           options: unref(flinkEnvs),
           fieldNames: { label: 'flinkName', value: 'id', options: 'options' },
           onChange: (value) => handleFlinkVersion(value),
         },
-        rules: [{ required: true, message: 'Flink Version is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.flinkVersionIsRequiredMessage') }],
       },
       {
         field: 'flinkClusterId',
         label: t('flink.app.table.flinkCluster'),
         component: 'Select',
         componentProps: {
-          placeholder: 'Flink Cluster',
+          placeholder: t('flink.app.table.flinkCluster'),
           options: getExecutionCluster(1, 'id'),
         },
         ifShow: ({ values }) => values.executionMode == ExecModeEnum.REMOTE,
@@ -224,7 +224,7 @@ export const useCreateAndEditSchema = (
         component: 'Select',
         componentProps: () => {
           return {
-            placeholder: 'Please Select Yarn Session clusterId',
+            placeholder: t('flink.app.addApplicationTips.yarnSessionClusterIdPlaceholder'),
             options: getExecutionCluster(3, 'clusterId'),
           };
         },
@@ -238,7 +238,7 @@ export const useCreateAndEditSchema = (
         ifShow: ({ values }) => isK8sExecMode(values.executionMode),
         render: ({ model, field }) =>
           renderInputDropdown(model, field, {
-            placeholder: 'default',
+            placeholder: t('flink.app.addApplicationTips.kubernetesNamespacePlaceholder'),
             options: unref(historyRecord)?.k8sNamespace || [],
           }),
       },
@@ -248,7 +248,7 @@ export const useCreateAndEditSchema = (
         component: 'Input',
         componentProps: ({ formModel }) => {
           return {
-            placeholder: 'Please enter Kubernetes clusterId',
+            placeholder: t('flink.app.addApplicationTips.kubernetesClusterIdPlaceholder'),
             onChange: (e) => (formModel.jobName = e.target.value),
           };
         },
@@ -261,10 +261,10 @@ export const useCreateAndEditSchema = (
         component: 'Select',
         ifShow: ({ values }) => values.executionMode == ExecModeEnum.KUBERNETES_SESSION,
         componentProps: {
-          placeholder: 'Please enter Kubernetes clusterId',
+          placeholder: t('flink.app.addApplicationTips.kubernetesClusterIdPlaceholder'),
           options: getExecutionCluster(5, 'clusterId'),
         },
-        rules: [{ required: true, message: 'Kubernetes clusterId is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.kubernetesClusterIdIsRequiredMessager') }],
       },
       {
         field: 'flinkImage',
@@ -274,10 +274,10 @@ export const useCreateAndEditSchema = (
         render: ({ model, field }) =>
           renderInputDropdown(model, field, {
             placeholder:
-              'Please enter the tag of Flink base docker image, such as: flink:1.13.0-scala_2.11-java8',
+              t('flink.app.addApplicationTips.flinkImagePlaceholder'),
             options: unref(historyRecord)?.k8sSessionClusterId || [],
           }),
-        rules: [{ required: true, message: 'Flink Base Docker Image is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.flinkImageIsRequiredMessager') }],
       },
       {
         field: 'k8sRestExposedType',
@@ -285,7 +285,7 @@ export const useCreateAndEditSchema = (
         ifShow: ({ values }) => values.executionMode == ExecModeEnum.KUBERNETES_APPLICATION,
         component: 'Select',
         componentProps: {
-          placeholder: 'kubernetes.rest-service.exposed.type',
+          placeholder: t('flink.app.addApplicationTips.k8sRestExposedTypePlaceholder'),
           options: k8sRestExposedType,
         },
       },
@@ -295,7 +295,7 @@ export const useCreateAndEditSchema = (
   /* Detect job name field */
   async function getJobNameCheck(_rule: RuleObject, value: StoreValue) {
     if (value === null || value === undefined || value === '') {
-      return Promise.reject('Application Name is required');
+      return Promise.reject(t('flink.app.addApplicationTips.applicationNameIsRequiredMessage'));
     } else {
       const params = { jobName: value };
       if (edit?.appId) Object.assign(params, { id: edit.appId });
@@ -305,19 +305,19 @@ export const useCreateAndEditSchema = (
           return Promise.resolve();
         case 1:
           return Promise.reject(
-            'application name must be unique. The application name already exists',
+            t('flink.app.addApplicationTips.applicationNameNotUniqueMessage'),
           );
         case 2:
           return Promise.reject(
-            'The application name is already running in yarn,cannot be repeated. Please check',
+            t('flink.app.addApplicationTips.applicationNameExistsInRunningJobYarnMessage'),
           );
         case 3:
           return Promise.reject(
-            'The application name is already running in k8s,cannot be repeated. Please check',
+            t('flink.app.addApplicationTips.applicationNameExistsInRunningJobK8sMessage'),
           );
         default:
           return Promise.reject(
-            'The application name is invalid.characters must be (Chinese|English|"-"|"_"),two consecutive spaces cannot appear.Please check',
+            t('flink.app.addApplicationTips.applicationNameNotValid'),
           );
       }
     }
@@ -334,7 +334,7 @@ export const useCreateAndEditSchema = (
         field: 'jobName',
         label: t('flink.app.table.applicationName'),
         component: 'Input',
-        componentProps: { placeholder: 'Please enter jobName' },
+        componentProps: { placeholder: t('flink.app.addApplicationTips.applicationNamePlaceholder') },
         dynamicRules: () => {
           return [{ required: true, trigger: 'blur', validator: getJobNameCheck }];
         },
@@ -344,7 +344,7 @@ export const useCreateAndEditSchema = (
         label: t('flink.app.table.tags'),
         component: 'Input',
         componentProps: {
-          placeholder: 'Please enter tags,if more than one, separate them with commas(,)',
+          placeholder: t('flink.app.addApplicationTips.tagsPlaceholder'),
         },
       },
       {
@@ -359,7 +359,7 @@ export const useCreateAndEditSchema = (
         label: t('flink.app.table.parallelism'),
         component: 'InputNumber',
         componentProps: {
-          placeholder: 'The parallelism with which to run the program',
+          placeholder: t('flink.app.addApplicationTips.parallelismPlaceholder'),
           ...commonInputNum,
         },
       },
@@ -367,7 +367,7 @@ export const useCreateAndEditSchema = (
         field: 'slot',
         label: t('flink.app.dashboard.taskSlots'),
         component: 'InputNumber',
-        componentProps: { placeholder: 'Number of slots per TaskManager', ...commonInputNum },
+        componentProps: { placeholder: t('flink.app.addApplicationTips.slotsOfPerTaskManagerPlaceholder'), ...commonInputNum },
       },
       {
         field: 'restartSize',
@@ -375,14 +375,14 @@ export const useCreateAndEditSchema = (
         ifShow: ({ values }) =>
           edit?.mode == 'flink' ? true : !isK8sExecMode(values.executionMode),
         component: 'InputNumber',
-        componentProps: { placeholder: 'restart max size', ...commonInputNum },
+        componentProps: { placeholder: t('flink.app.addApplicationTips.restartSizePlaceholder'), ...commonInputNum },
       },
       {
         field: 'alertId',
         label: t('flink.app.table.faultAlertTemplate'),
         component: 'Select',
         componentProps: {
-          placeholder: 'Alert Template',
+          placeholder: t('flink.app.addApplicationTips.alertTemplatePlaceholder'),
           options: unref(alerts),
           fieldNames: { label: 'alertName', value: 'id', options: 'options' },
         },
@@ -417,7 +417,7 @@ export const useCreateAndEditSchema = (
           allowClear: true,
           mode: 'multiple',
           maxTagCount: 2,
-          placeholder: 'Please select the resource parameters to set',
+          placeholder: t('flink.app.addApplicationTips.totalMemoryOptionsPlaceholder'),
           fieldNames: { label: 'name', value: 'key', options: 'options' },
           options: optionData.filter((x) => x.group === 'jobmanager-memory'),
         },
@@ -438,7 +438,7 @@ export const useCreateAndEditSchema = (
           allowClear: true,
           mode: 'multiple',
           maxTagCount: 2,
-          placeholder: 'Please select the resource parameters to set',
+          placeholder: t('flink.app.addApplicationTips.tmPlaceholder'),
           fieldNames: { label: 'name', value: 'key', options: 'options' },
           options: optionData.filter((x) => x.group === 'taskmanager-memory'),
         },
@@ -454,12 +454,12 @@ export const useCreateAndEditSchema = (
         field: 'yarnQueue',
         label: t('flink.app.table.yarnQueue'),
         component: 'Input',
-        componentProps: { placeholder: 'Please enter yarn queue' },
+        componentProps: { placeholder: t('flink.app.addApplicationTips.yarnQueuePlaceholder') },
         ifShow: ({ values }) => values.executionMode == ExecModeEnum.YARN_APPLICATION,
       },
       {
         field: 'podTemplate',
-        label: 'Kubernetes Pod Template',
+        label: t('flink.app.table.podTemplate'),
         component: 'Input',
         slot: 'podTemplate',
         ifShow: ({ values }) => values.executionMode == ExecModeEnum.KUBERNETES_APPLICATION,
@@ -482,7 +482,7 @@ export const useCreateAndEditSchema = (
         field: 'description',
         label: t('common.description'),
         component: 'InputTextArea',
-        componentProps: { rows: 4, placeholder: 'Please enter description for this application' },
+        componentProps: { rows: 4, placeholder: t('flink.app.addApplicationTips.descriptionPlaceholder') },
       },
     ];
   });
diff --git a/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateSchema.ts b/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateSchema.ts
index 353381bb8..43f52b3cd 100644
--- a/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateSchema.ts
+++ b/streampark-console/streampark-console-webapp/src/views/flink/app/hooks/useCreateSchema.ts
@@ -93,7 +93,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
         component: 'Select',
         componentProps: ({ formModel }) => {
           return {
-            placeholder: 'Please select Development Mode',
+            placeholder: t('flink.app.addApplicationTips.developmentModePlaceholder'),
             options: getJobTypeOptions(),
             onChange: (value) => {
               if (value === 'sql') {
@@ -105,14 +105,14 @@ export const useCreateSchema = (dependencyRef: Ref) => {
           };
         },
         defaultValue: 'sql',
-        rules: [{ required: true, message: 'Job Type is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.developmentModeIsRequiredMessage') }],
       },
       {
         field: 'executionMode',
         label: t('flink.app.table.executionMode'),
         component: 'Select',
         componentProps: {
-          placeholder: 'Please select Execution Mode',
+          placeholder: t('flink.app.addApplicationTips.executionModePlaceholder'),
           options: executionModes,
         },
         dynamicRules: () => {
@@ -121,7 +121,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
               required: true,
               validator: async (_rule, value) => {
                 if (value === null || value === undefined || value === '') {
-                  return Promise.reject('Execution Mode is required');
+                  return Promise.reject(t('flink.app.addApplicationTips.executionModeIsRequiredMessage'));
                 } else {
                   if ([2, 3, 4].includes(value)) {
                     const res = await fetchCheckHadoop();
@@ -129,7 +129,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
                       return Promise.resolve();
                     } else {
                       return Promise.reject(
-                        'Hadoop environment initialization failed, please check the environment settings',
+                        t('flink.app.addApplicationTips.hadoopEnvInitiMessage'),
                       );
                     }
                   }
@@ -147,7 +147,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
         label: t('flink.app.table.resourceFrom'),
         component: 'Select',
         render: ({ model }) => renderResourceFrom(model),
-        rules: [{ required: true, message: 'resource from is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.resourceFromMessage') }],
         show: ({ values }) => values?.jobType != 'sql',
       },
       {
@@ -161,9 +161,9 @@ export const useCreateSchema = (dependencyRef: Ref) => {
         field: 'mainClass',
         label: t('flink.app.table.mainClass'),
         component: 'Input',
-        componentProps: { placeholder: 'Please enter Main class' },
+        componentProps: { placeholder: t('flink.app.addApplicationTips.mainClassPlaceholder') },
         ifShow: ({ values }) => values?.jobType !== 'sql' && values?.resourceFrom == 'upload',
-        rules: [{ required: true, message: 'Program Main is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.mainClassIsRequiredMessage') }],
       },
       {
         field: 'project',
@@ -173,7 +173,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
           showSearch: true,
           optionFilterProp: 'children',
           filterOption,
-          placeholder: 'Please select Project',
+          placeholder: t('flink.app.addApplicationTips.projectPlaceholder'),
           fieldNames: { label: 'name', value: 'id', options: 'options' },
           options: unref(projectList),
           onChange: (value: string) => {
@@ -185,7 +185,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
           },
         },
         ifShow: ({ values }) => values?.jobType != 'sql' && values.resourceFrom != 'upload',
-        rules: [{ required: true, message: 'Project is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.projectIsRequiredMessage') }],
       },
       {
         field: 'module',
@@ -196,7 +196,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
             showSearch: true,
             optionFilterProp: 'children',
             filterOption,
-            placeholder: 'Please select module of this project',
+            placeholder: t('flink.app.addApplicationTips.projectModulePlaceholder'),
             options: unref(moduleList),
             onChange: () => {
               Object.assign(formModel, {
@@ -208,7 +208,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
           };
         },
         ifShow: ({ values }) => values?.jobType != 'sql' && values?.resourceFrom != 'upload',
-        rules: [{ required: true, message: 'Project is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.projectIsRequiredMessage') }],
       },
       {
         field: 'appType',
@@ -216,7 +216,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
         component: 'Select',
         componentProps: ({ formModel }) => {
           return {
-            placeholder: 'Please select Application type',
+            placeholder: t('flink.app.addApplicationTips.applicationTypePlaceholder'),
             options: [
               { label: 'StreamPark Flink', value: '1' },
               { label: 'Apache Flink', value: '2' },
@@ -237,15 +237,15 @@ export const useCreateSchema = (dependencyRef: Ref) => {
           };
         },
         ifShow: ({ values }) => values?.jobType !== 'sql' && values?.resourceFrom !== 'upload',
-        dynamicRules: () => [{ required: true, message: 'Application Type is required' }],
+        dynamicRules: () => [{ required: true, message: t('flink.app.addApplicationTips.applicationTypeIsRequiredMessage') }],
       },
       {
         field: 'jar',
-        label: 'Program Jar',
+        label: t('flink.app.talbe.programJar'),
         component: 'Select',
         componentProps: ({ formModel }) => {
           return {
-            placeholder: 'Please select Application type',
+            placeholder: t('flink.app.addApplicationTips.applicationTypePlaceholder'),
             options: unref(jars).map((i) => ({ label: i, value: i })),
             onChange: (value) => {
               fetchMain({
@@ -260,20 +260,20 @@ export const useCreateSchema = (dependencyRef: Ref) => {
         },
         ifShow: ({ values }) =>
           values?.jobType != 'sql' && values?.resourceFrom != 'upload' && values.appType == '2',
-        rules: [{ required: true, message: 'Program Jar is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.programJarIsRequiredMessage') }],
       },
       {
         field: 'mainClass',
-        label: 'Program Main',
+        label: t('flink.app.table.mainClass'),
         component: 'Input',
-        componentProps: { placeholder: 'Please enter Main class' },
+        componentProps: { placeholder: t('flink.app.addApplicationTips.mainClassPlaceholder') },
         ifShow: ({ values }) =>
           values?.jobType != 'sql' && values?.resourceFrom != 'upload' && values.appType == '2',
-        rules: [{ required: true, message: 'Program Main is required' }],
+        rules: [{ required: true, message: t('flink.app.addApplicationTips.mainClassIsRequiredMessage') }],
       },
       {
         field: 'config',
-        label: 'Application conf',
+        label: t('flink.app.table.applicationConf'),
         component: 'ApiTreeSelect',
         componentProps: ({ formModel }) => {
           return {
@@ -298,7 +298,7 @@ export const useCreateSchema = (dependencyRef: Ref) => {
       },
       {
         field: 'useSysHadoopConf',
-        label: 'Use System Hadoop Conf',
+        label: t('flink.app.addApplicationTips.useSysHadoopConf'),
         component: 'Switch',
         slot: 'useSysHadoopConf',
         defaultValue: false,