Просмотр исходного кода

Merge pull request #255 from crush394/next-dev

locale translate
Lind 4 лет назад
Родитель
Сommit
e951387f36

+ 36 - 3
src/locales/en-US/menu.ts

@@ -11,18 +11,51 @@ export default {
   'menu.system.open-api': 'OpenAPI',
   'menu.system.permission': 'Permission',
   'menu.system.tenant': 'Tenant',
+  'menu.system.datasource': 'Data Source',
   'menu.device': 'Device',
   'menu.device.product': 'Product',
   'menu.device.product-detail': 'ProductDetail',
+  'menu.device.category': 'Category',
   'menu.device.instance': 'Instance',
   'menu.device.instance-detail': 'InstanceDetail',
   'menu.device.command': 'Command',
   'menu.device.firmware': 'Firmware',
   'menu.device.alarm': 'Alarm',
-
+  'menu.link': 'Link',
+  'menu.link.certificate': 'Certificate',
+  'menu.link.protocol': 'Protocol',
+  'menu.link.type': 'Type',
+  'menu.link.gateway': 'Gateway',
+  'menu.link.opcua': 'OPC UA',
+  'menu.notice': 'Notice',
+  'menu.notice.config': 'Config',
+  'menu.notice.template': 'Template',
+  'menu.rule-engine': 'Rule-engine',
+  'menu.rule-engine.instance': 'Instance',
+  'menu.rule-engine.sqlRule': 'SQL Rule',
+  'menu.rule-engine.scene': 'Scene',
+  'menu.visualization': 'Visualization',
+  'menu.visualization.category': 'Category',
+  'menu.visualization.screen': 'Screen',
+  'menu.visualization.configuration': 'Configuration',
+  'menu.simulator': 'Simulator',
+  'menu.simulator.device': 'Device',
   'menu.log': 'Log',
-  'menu.log.access': 'AccessLog',
-  'menu.log.System': 'System Log',
+  'menu.log.access': 'Access Log',
+  'menu.log.system': 'System Log',
+  'menu.cloud': 'Cloud',
+  'menu.cloud.duer': 'DuerOS',
+  'menu.cloud.aliyun': 'Aliyun',
+  'menu.cloud.onenet': 'Mobile OneNet',
+  'menu.cloud.ctwing': 'Telecom CTWing',
+  'menu.media': 'Media',
+  'menu.media.config': 'Config',
+  'menu.media.device': 'Device',
+  'menu.media.reveal': 'Reveal',
+  'menu.media.cascade': 'Cascade',
+  'menu.edge': 'Edge',
+  'menu.edge.product': 'Product',
+  'menu.edge.device': 'Device',
   'menu.admin.sub-page': 'Sub-Page',
   'menu.login': 'Login',
   'menu.register': 'Register',

+ 21 - 5
src/locales/en-US/pages.ts

@@ -38,7 +38,7 @@ export default {
   'pages.table.describe': 'Describe',
   'pages.table.description': 'Explain',
   'pages.table.type': 'Type',
-
+  'pages.table.provider': 'Provider',
   // 统计分析
   'pages.analysis.cpu': 'CPU Usage',
   'pages.analysis.jvm': 'JVM Memory',
@@ -134,14 +134,17 @@ export default {
   'pages.device.alarm.option.data': 'Alarm Data',
   // 设备接入
   'pages.link.certificate': 'Certificate',
-  'pages.link.protocol': 'protocol',
-  'pages.link.type': 'Network components',
+  'pages.link.protocol': 'Protocol',
+  'pages.link.component': 'Network components',
   'pages.link.gateway': 'Gateway',
   'pages.link.opcua': 'OPC UA',
-
+  'pages.link.type': 'Type',
+  'pages.link.provider': 'Provider',
+  'pages.link.option.debug': 'Debug',
+  'pages.link.option.record': 'Record',
   // 通知管理
   'pages.notice.config': 'Config',
-  'pages.notice.config.service': 'Service',
+  'pages.notice.config.provider': 'Provider',
   'pages.notice.config.type': 'Type',
   'pages.notice.template': 'Template',
   'pages.notice.option.download': 'Download Configuration',
@@ -163,9 +166,13 @@ export default {
   'pages.visualization.category': 'Category',
   'pages.visualization.screen': 'Screen',
   'pages.visualization.configuration': 'Configuration',
+  'pages.visualization.option.addClass': 'Add Subclasses',
+  'pages.visualization.option.record': 'Notification Records',
+  'pages.visualization.option.copy': 'Copy',
 
   // 模拟测试
   'pages.simulator.device': 'Device',
+  'pages.simulator.device.networkType': 'Type',
 
   // 日志管理-访问日志
   'pages.log.access': 'Access Log',
@@ -193,6 +200,14 @@ export default {
 
   // 视频网关
   'pages.media.config': 'Config',
+  'pages.media.device.transport': 'Transport',
+  'pages.media.device.streamMode': 'Stream Mode',
+  'pages.media.device.channelNumber': 'Channel Number',
+  'pages.media.device.port': 'Port',
+  'pages.media.device.manufacturer': 'Manufacturer',
+  'pages.media.device.model': 'Model',
+  'pages.media.device.firmware': 'Firmware',
+  'pages.media.device.networkType': 'Type',
   'pages.media.device': 'Device',
   'pages.media.reveal': 'Reveal',
   'pages.media.cascade': 'Cascade',
@@ -200,4 +215,5 @@ export default {
   // 边缘网关
   'pages.edge.product': 'Product',
   'pages.edge.device': 'Device',
+  'pages.edge.device.productName': 'Product Name',
 };

+ 18 - 3
src/locales/zh-CN/pages.ts

@@ -37,6 +37,7 @@ export default {
   'pages.table.equipmentName': '设备名称',
   'pages.table.describe': '描述',
   'pages.table.description': '说明',
+  'pages.table.provider': '服务商',
 
   // 统计分析
   'pages.analysis.cpu': 'CPU使用率',
@@ -134,13 +135,14 @@ export default {
   // 设备接入
   'pages.link.certificate': '证书管理',
   'pages.link.protocol': '协议管理',
-  'pages.link.type': '网络组件',
+  'pages.link.component': '网络组件',
   'pages.link.gateway': '设备网关',
   'pages.link.opcua': 'OPC UA',
-
+  'pages.link.type': 'Type',
+  'pages.link.option.debug': '调试',
+  'pages.link.option.record': '通知记录',
   // 通知管理
   'pages.notice.config': '通知配置',
-  'pages.notice.config.service': '服务商',
   'pages.notice.config.type': '通知类型',
   'pages.notice.template': '通知模板',
   'pages.notice.option.debug': '调试',
@@ -161,9 +163,13 @@ export default {
   'pages.visualization.category': '分类管理',
   'pages.visualization.screen': '大屏管理',
   'pages.visualization.configuration': '组态管理',
+  'pages.visualization.option.addClass': '添加子分类',
+  'pages.visualization.option.record': '通知记录',
+  'pages.visualization.option.copy': '复制',
 
   // 模拟测试
   'pages.simulator.device': '设备模拟器',
+  'pages.simulator.device.networkType': '类型',
 
   // 日志管理-访问日志
   'pages.log.access': '访问日志',
@@ -190,6 +196,14 @@ export default {
 
   // 视频网关
   'pages.media.config': '基本配置',
+  'pages.media.device.transport': '信令传输',
+  'pages.media.device.streamMode': '流传输模式',
+  'pages.media.device.channelNumber': '通道数',
+  'pages.media.device.port': '端口',
+  'pages.media.device.manufacturer': '设备厂家',
+  'pages.media.device.model': '型号',
+  'pages.media.device.firmware': '固件版本',
+  'pages.media.device.networkType': '类型',
   'pages.media.device': '视频设备',
   'pages.media.reveal': '分屏展示',
   'pages.media.cascade': '国标级联',
@@ -197,4 +211,5 @@ export default {
   // 边缘网关
   'pages.edge.product': '产品',
   'pages.edge.device': '设备',
+  'pages.edge.device.productName': '产品名称',
 };

+ 9 - 3
src/pages/cloud/Aliyun/index.tsx

@@ -2,7 +2,6 @@ import { PageContainer } from '@ant-design/pro-layout';
 import BaseService from '@/utils/BaseService';
 import { useRef } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { useIntl } from '@@/plugin-locale/localeExports';
 import BaseCrud from '@/components/BaseCrud';
 import { message, Popconfirm, Tooltip } from 'antd';
 import {
@@ -13,6 +12,7 @@ import {
 } from '@ant-design/icons';
 import { CurdModel } from '@/components/BaseCrud/model';
 import type { AliyunItem } from '@/pages/cloud/Aliyun/typings';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<AliyunItem>('device/aliyun/bridge');
 
@@ -31,12 +31,18 @@ const Aliyun = () => {
       width: 48,
     },
     {
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
       align: 'center',
       dataIndex: 'name',
     },
     {
-      title: '说明',
+      title: intl.formatMessage({
+        id: 'pages.table.description',
+        defaultMessage: '说明',
+      }),
       align: 'center',
       dataIndex: 'description',
     },

+ 9 - 3
src/pages/cloud/Ctwing/index.tsx

@@ -6,8 +6,8 @@ import { PageContainer } from '@ant-design/pro-layout';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import { message, Popconfirm, Tooltip } from 'antd';
 import { useRef } from 'react';
-import { useIntl } from '@@/plugin-locale/localeExports';
 import type { CtwingItem } from '@/pages/cloud/Ctwing/typings';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<CtwingItem>('ctwing/product');
 
@@ -26,7 +26,10 @@ const Ctwing = () => {
       width: 48,
     },
     {
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
       align: 'center',
       dataIndex: 'name',
     },
@@ -39,7 +42,10 @@ const Ctwing = () => {
       render: (value: any) => value.text,
     },
     {
-      title: '说明',
+      title: intl.formatMessage({
+        id: 'pages.table.description',
+        defaultMessage: '说明',
+      }),
       align: 'center',
       dataIndex: 'description',
     },

+ 21 - 6
src/pages/cloud/DuerOS/index.tsx

@@ -1,12 +1,12 @@
 import BaseService from '@/utils/BaseService';
 import type { ProColumns, ActionType } from '@jetlinks/pro-table';
-import { useIntl } from '@@/plugin-locale/localeExports';
 import { PageContainer } from '@ant-design/pro-layout';
 import BaseCrud from '@/components/BaseCrud';
 import { useRef } from 'react';
 import { Tooltip } from 'antd';
 import { EditOutlined, MinusOutlined } from '@ant-design/icons';
 import type { DuerOSItem } from '@/pages/cloud/DuerOS/typings';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<DuerOSItem>('dueros/product');
 const DuerOS = () => {
@@ -19,23 +19,38 @@ const DuerOS = () => {
       width: 48,
     },
     {
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
       dataIndex: 'name',
     },
     {
-      title: '设备类型',
+      title: intl.formatMessage({
+        id: 'pages.cloud.duerOS.applianceType',
+        defaultMessage: '设备类型',
+      }),
       dataIndex: 'applianceType',
     },
     {
-      title: '厂商名称',
+      title: intl.formatMessage({
+        id: 'pages.cloud.duerOS.manufacturerName',
+        defaultMessage: '厂家名称',
+      }),
       dataIndex: 'manufacturerName',
     },
     {
-      title: '动作数量',
+      title: intl.formatMessage({
+        id: 'pages.cloud.duerOS.version',
+        defaultMessage: '动作数量',
+      }),
       dataIndex: 'version',
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,

+ 14 - 5
src/pages/cloud/Onenet/index.tsx

@@ -1,6 +1,5 @@
 import { PageContainer } from '@ant-design/pro-layout';
 import BaseService from '@/utils/BaseService';
-import { useIntl } from '@@/plugin-locale/localeExports';
 import { useRef } from 'react';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import { message, Popconfirm, Tooltip } from 'antd';
@@ -13,6 +12,7 @@ import {
 import BaseCrud from '@/components/BaseCrud';
 import { CurdModel } from '@/components/BaseCrud/model';
 import type { OnenetItem } from '@/pages/cloud/Onenet/typings';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<OnenetItem>('one-net/product');
 
@@ -31,24 +31,33 @@ const Onenet = () => {
       width: 48,
     },
     {
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
       align: 'center',
       dataIndex: 'name',
     },
     {
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       align: 'center',
       dataIndex: 'state.text',
     },
     {
-      title: '说明',
+      title: intl.formatMessage({
+        id: 'pages.table.description',
+        defaultMessage: '说明',
+      }),
       align: 'center',
       dataIndex: 'description',
     },
     {
       title: intl.formatMessage({
         id: 'pages.data.option',
-        defaultMessage: '',
+        defaultMessage: '操作',
       }),
       valueType: 'option',
       align: 'center',

+ 20 - 6
src/pages/edge/Device/index.tsx

@@ -25,20 +25,31 @@ const Device = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
       dataIndex: 'productName',
-      title: '产品名称',
+      title: intl.formatMessage({
+        id: 'pages.edge.device.productName',
+        defaultMessage: '产品名称',
+      }),
     },
-
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -94,7 +105,10 @@ const Device = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="通知配置"
+        title={intl.formatMessage({
+          id: 'pages.edge.device',
+          defaultMessage: '通知配置',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 34 - 7
src/pages/link/Certificate/index.tsx

@@ -6,9 +6,11 @@ import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import { Tooltip } from 'antd';
 import { EditOutlined, MinusOutlined } from '@ant-design/icons';
 import BaseCrud from '@/components/BaseCrud';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<CertificateItem>('network/certificate');
 const Certificate = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<CertificateItem>[] = [
@@ -19,29 +21,51 @@ const Certificate = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'instance',
-      title: '类型',
+      title: intl.formatMessage({
+        id: 'pages.link.type',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'description',
-      title: '描述',
+      title: intl.formatMessage({
+        id: 'pages.table.describe',
+        defaultMessage: '描述',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
       render: (text, record) => [
         <a onClick={() => console.log(record)}>
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
@@ -56,7 +80,10 @@ const Certificate = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="证书管理"
+        title={intl.formatMessage({
+          id: 'pages.link.certificate',
+          defaultMessage: '证书管理',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 52 - 10
src/pages/link/Gateway/index.tsx

@@ -12,9 +12,11 @@ import {
   MinusOutlined,
 } from '@ant-design/icons';
 import BaseCrud from '@/components/BaseCrud';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<GatewayItem>('network/config');
 const Gateway = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<GatewayItem>[] = [
@@ -25,45 +27,82 @@ const Gateway = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'type',
-      title: '类型',
+      title: intl.formatMessage({
+        id: 'pages.link.type',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
       render: (text, record) => [
         <a onClick={() => console.log(record)}>
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="下载配置">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.download',
+              defaultMessage: '下载配置',
+            })}
+          >
             <ArrowDownOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="调试">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.notice.option.debug',
+              defaultMessage: '调试',
+            })}
+          >
             <BugOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="通知记录">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.link.option.record',
+              defaultMessage: '通知记录',
+            })}
+          >
             <BarsOutlined />
           </Tooltip>
         </a>,
@@ -78,7 +117,10 @@ const Gateway = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="设备网关"
+        title={intl.formatMessage({
+          id: 'pages.link.gateway',
+          defaultMessage: '设备网关',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 52 - 10
src/pages/link/Protocol/index.tsx

@@ -12,9 +12,11 @@ import {
   MinusOutlined,
 } from '@ant-design/icons';
 import BaseCrud from '@/components/BaseCrud';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<ProtocolItem>('protocol');
 const Protocol = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<ProtocolItem>[] = [
@@ -25,44 +27,81 @@ const Protocol = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'type',
-      title: '通知类型',
+      title: intl.formatMessage({
+        id: 'pages.link.type',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'provider',
-      title: '服务商',
+      title: intl.formatMessage({
+        id: 'pages.table.provider',
+        defaultMessage: '服务商',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
       render: (text, record) => [
         <a onClick={() => console.log(record)}>
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="下载配置">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.download',
+              defaultMessage: '下载配置',
+            })}
+          >
             <ArrowDownOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="调试">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.notice.option.debug',
+              defaultMessage: '调试',
+            })}
+          >
             <BugOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="通知记录">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.link.option.record',
+              defaultMessage: '通知记录',
+            })}
+          >
             <BarsOutlined />
           </Tooltip>
         </a>,
@@ -77,7 +116,10 @@ const Protocol = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="协议管理"
+        title={intl.formatMessage({
+          id: 'pages.link.protocol',
+          defaultMessage: '协议管理',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 44 - 9
src/pages/link/Type/index.tsx

@@ -6,10 +6,12 @@ import { BugOutlined, EditOutlined, MinusOutlined } from '@ant-design/icons';
 import { PageContainer } from '@ant-design/pro-layout';
 import BaseCrud from '@/components/BaseCrud';
 import type { NetworkItem } from '@/pages/link/Type/typings';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<NetworkItem>('network/config');
 
 const Network = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<NetworkItem>[] = [
@@ -20,39 +22,69 @@ const Network = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'type',
-      title: '类型',
+      title: intl.formatMessage({
+        id: 'pages.link.type',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
       dataIndex: 'provider',
-      title: '服务商',
+      title: intl.formatMessage({
+        id: 'pages.table.provider',
+        defaultMessage: '服务商',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
       render: (text, record) => [
         <a onClick={() => console.log(record)}>
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="调试">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.notice.option.debug',
+              defaultMessage: '调试',
+            })}
+          >
             <BugOutlined />
           </Tooltip>
         </a>,
@@ -67,7 +99,10 @@ const Network = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="网络组建"
+        title={intl.formatMessage({
+          id: 'pages.link.component',
+          defaultMessage: '网络组建',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 48 - 12
src/pages/media/Device/index.tsx

@@ -21,23 +21,38 @@ const Device = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'transport',
-      title: '信令传输',
+      title: intl.formatMessage({
+        id: 'pages.media.device.transport',
+        defaultMessage: '信令传输',
+      }),
     },
     {
       dataIndex: 'streamMode',
-      title: '流传输模式',
+      title: intl.formatMessage({
+        id: 'pages.media.device.streamMode',
+        defaultMessage: '流传输模式',
+      }),
     },
     {
       dataIndex: 'channelNumber',
-      title: '通道数',
+      title: intl.formatMessage({
+        id: 'pages.media.device.channelNumber',
+        defaultMessage: '通道数',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
@@ -46,31 +61,52 @@ const Device = () => {
     },
     {
       dataIndex: '端口',
-      title: 'port',
+      title: intl.formatMessage({
+        id: 'pages.media.device.port',
+        defaultMessage: '端口',
+      }),
     },
     {
       dataIndex: 'manufacturer',
-      title: '设备厂家',
+      title: intl.formatMessage({
+        id: 'pages.media.device.manufacturer',
+        defaultMessage: '设备厂家',
+      }),
     },
     {
       dataIndex: 'model',
-      title: '型号',
+      title: intl.formatMessage({
+        id: 'pages.media.device.model',
+        defaultMessage: '型号',
+      }),
     },
     {
       dataIndex: 'firmware',
-      title: '固件版本',
+      title: intl.formatMessage({
+        id: 'pages.media.device.firmware',
+        defaultMessage: '固件版本',
+      }),
     },
     {
       dataIndex: 'networkType',
-      title: '类型',
+      title: intl.formatMessage({
+        id: 'pages.media.device.networkType',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,

+ 20 - 5
src/pages/notice/Config/index.tsx

@@ -27,18 +27,30 @@ const Config = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'type',
-      title: '通知类型',
+      title: intl.formatMessage({
+        id: 'pages.notice.config.type',
+        defaultMessage: '通知类型',
+      }),
     },
     {
       dataIndex: 'provider',
-      title: '服务商',
+      title: intl.formatMessage({
+        id: 'pages.table.provider',
+        defaultMessage: '服务商',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -104,7 +116,10 @@ const Config = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="通知配置"
+        title={intl.formatMessage({
+          id: 'pages.notice.template',
+          defaultMessage: '通知配置',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 20 - 5
src/pages/notice/Template/index.tsx

@@ -20,18 +20,30 @@ const Template = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'type',
-      title: '通知类型',
+      title: intl.formatMessage({
+        id: 'pages.notice.config.type',
+        defaultMessage: '通知类型',
+      }),
     },
     {
       dataIndex: 'provider',
-      title: '服务商',
+      title: intl.formatMessage({
+        id: 'pages.table.provider',
+        defaultMessage: '服务商',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -86,7 +98,10 @@ const Template = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="通知模版"
+        title={intl.formatMessage({
+          id: 'pages.notice.template',
+          defaultMessage: '通知模版',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 20 - 5
src/pages/rule-engine/Instance/index.tsx

@@ -27,19 +27,31 @@ const Instance = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'modelType',
-      title: '类型',
+      title: intl.formatMessage({
+        id: 'pages.link.type',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -106,7 +118,10 @@ const Instance = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="规则实例"
+        title={intl.formatMessage({
+          id: 'pages.ruleEngine.instance',
+          defaultMessage: '规则实例',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 20 - 5
src/pages/rule-engine/SQLRule/index.tsx

@@ -27,19 +27,31 @@ const SQLRule = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'createTime',
-      title: '创建时间',
+      title: intl.formatMessage({
+        id: 'pages.ruleEngine.sqlRule.time',
+        defaultMessage: '创建时间',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -118,7 +130,10 @@ const SQLRule = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="数据转发"
+        title={intl.formatMessage({
+          id: 'pages.ruleEngine.sqlRule',
+          defaultMessage: '数据转发',
+        })}
         schema={schema}
         defaultParams={{ modelType: 'sql_rule' }}
         actionRef={actionRef}

+ 20 - 5
src/pages/rule-engine/Scene/index.tsx

@@ -28,20 +28,32 @@ const Scene = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'triggers',
-      title: '触发方式',
+      title: intl.formatMessage({
+        id: 'pages.ruleEngine.scene.trigger',
+        defaultMessage: '触发方式',
+      }),
       render: () => 'todo',
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -118,7 +130,10 @@ const Scene = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="场景联动"
+        title={intl.formatMessage({
+          id: 'pages.ruleEngine.scene',
+          defaultMessage: '场景联动',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 20 - 5
src/pages/simulator/Device/index.tsx

@@ -22,19 +22,31 @@ const Device = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'networkType',
-      title: '类型',
+      title: intl.formatMessage({
+        id: 'pages.simulator.device.networkType',
+        defaultMessage: '类型',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -90,7 +102,10 @@ const Device = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="模拟测试"
+        title={intl.formatMessage({
+          id: 'pages.simulator.device',
+          defaultMessage: '模拟测试',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 36 - 7
src/pages/visualization/Category/index.tsx

@@ -6,9 +6,11 @@ import type { CategoryItem } from '@/pages/visualization/Category/typings';
 import { Tooltip } from 'antd';
 import { EditOutlined, MinusOutlined, PlusOutlined } from '@ant-design/icons';
 import BaseCrud from '@/components/BaseCrud';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<CategoryItem>('visualization/catalog');
 const Category = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<CategoryItem>[] = [
@@ -23,14 +25,23 @@ const Category = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'description',
-      title: '描述',
+      title: intl.formatMessage({
+        id: 'pages.table.describe',
+        defaultMessage: '描述',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
@@ -40,17 +51,32 @@ const Category = () => {
             console.log(record);
           }}
         >
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="添加子分类">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.visualization.option.addClass',
+              defaultMessage: '添加子分类',
+            })}
+          >
             <PlusOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
@@ -65,7 +91,10 @@ const Category = () => {
       <BaseCrud
         columns={columns}
         service={service}
-        title="分类管理"
+        title={intl.formatMessage({
+          id: 'pages.visualization.category',
+          defaultMessage: '分类管理',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 58 - 11
src/pages/visualization/Configuration/index.tsx

@@ -13,9 +13,11 @@ import {
   MinusOutlined,
 } from '@ant-design/icons';
 import BaseCrud from '@/components/BaseCrud';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<ConfigurationItem>('visualization');
 const Configuration = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<ConfigurationItem>[] = [
@@ -26,50 +28,92 @@ const Configuration = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
       dataIndex: 'description',
-      title: '描述',
+      title: intl.formatMessage({
+        id: 'pages.table.describe',
+        defaultMessage: '描述',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
       render: (text, record) => [
         <a onClick={() => console.log(record)}>
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="预览">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.preview',
+              defaultMessage: '预览',
+            })}
+          >
             <EyeOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="下载配置">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.download',
+              defaultMessage: '下载配置',
+            })}
+          >
             <ArrowDownOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="复制">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.visualization.option.record',
+              defaultMessage: '复制',
+            })}
+          >
             <CopyOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="通知记录">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.visualization.option.record',
+              defaultMessage: '通知记录',
+            })}
+          >
             <BarsOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
@@ -85,7 +129,10 @@ const Configuration = () => {
         defaultParams={{ type: 'vis_configuration' }}
         columns={columns}
         service={service}
-        title="组态管理"
+        title={intl.formatMessage({
+          id: 'pages.visualization.configuration',
+          defaultMessage: '组态管理',
+        })}
         schema={schema}
         actionRef={actionRef}
       />

+ 58 - 11
src/pages/visualization/Screen/index.tsx

@@ -14,10 +14,12 @@ import {
   MinusOutlined,
 } from '@ant-design/icons';
 import BaseCrud from '@/components/BaseCrud';
+import { useIntl } from '@@/plugin-locale/localeExports';
 
 export const service = new BaseService<ScreenItem>('visualization');
 
 const Screen = () => {
+  const intl = useIntl();
   const actionRef = useRef<ActionType>();
 
   const columns: ProColumns<ConfigurationItem>[] = [
@@ -28,50 +30,92 @@ const Screen = () => {
     },
     {
       dataIndex: 'name',
-      title: '名称',
+      title: intl.formatMessage({
+        id: 'pages.table.name',
+        defaultMessage: '名称',
+      }),
     },
     {
       dataIndex: 'state',
-      title: '状态',
+      title: intl.formatMessage({
+        id: 'pages.searchTable.titleStatus',
+        defaultMessage: '状态',
+      }),
       render: (text, record) => record.state.value,
     },
     {
       dataIndex: 'description',
-      title: '描述',
+      title: intl.formatMessage({
+        id: 'pages.table.describe',
+        defaultMessage: '描述',
+      }),
     },
     {
-      title: '操作',
+      title: intl.formatMessage({
+        id: 'pages.data.option',
+        defaultMessage: '操作',
+      }),
       valueType: 'option',
       align: 'center',
       width: 200,
       render: (text, record) => [
         <a onClick={() => console.log(record)}>
-          <Tooltip title="编辑">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.edit',
+              defaultMessage: '编辑',
+            })}
+          >
             <EditOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="预览">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.preview',
+              defaultMessage: '预览',
+            })}
+          >
             <EyeOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="下载配置">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.download',
+              defaultMessage: '下载配置',
+            })}
+          >
             <ArrowDownOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="复制">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.visualization.option.copy',
+              defaultMessage: '复制',
+            })}
+          >
             <CopyOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="通知记录">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.link.option.record',
+              defaultMessage: '通知记录',
+            })}
+          >
             <BarsOutlined />
           </Tooltip>
         </a>,
         <a>
-          <Tooltip title="删除">
+          <Tooltip
+            title={intl.formatMessage({
+              id: 'pages.data.option.remove',
+              defaultMessage: '删除',
+            })}
+          >
             <MinusOutlined />
           </Tooltip>
         </a>,
@@ -87,7 +131,10 @@ const Screen = () => {
         defaultParams={{ type: 'big_screen' }}
         columns={columns}
         service={service}
-        title="大屏管理"
+        title={intl.formatMessage({
+          id: 'pages.visualization.screen',
+          defaultMessage: '大屏管理',
+        })}
         schema={schema}
         actionRef={actionRef}
       />