You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ju...@apache.org on 2021/04/01 01:07:14 UTC

[apisix-dashboard] branch master updated: docs: tells users where they are (#1685)

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

juzhiyuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new aa5ef19  docs: tells users where they are (#1685)
aa5ef19 is described below

commit aa5ef19c89b10d8ba8ca6265099edc38dd7a09e7
Author: Ayush das <ay...@gmail.com>
AuthorDate: Thu Apr 1 06:37:03 2021 +0530

    docs: tells users where they are (#1685)
---
 docs/en/latest/config.json                                     |  5 +++++
 web/cypress/fixtures/data.json                                 |  4 ++--
 .../integration/plugin/create-delete-in-drawer-plugin.spec.js  |  2 +-
 .../integration/plugin/create-edit-delete-plugin.spec.js       |  2 +-
 .../pluginTemplate/create-edit-delete-plugin-template.spec.js  |  4 ++--
 .../pluginTemplate/create-plugin-template-with-route.spec.js   |  2 +-
 .../route/can-skip-upstream-when-select-service-id.spec.js     |  2 +-
 web/cypress/integration/route/create-edit-delete-route.spec.js |  2 +-
 .../route/create-route-with-proxy-rewrite-plugin.spec.js       |  2 +-
 .../integration/route/create-route-with-upstream.spec.js       |  4 ++--
 .../integration/service/create-edit-delete-service.spec.js     |  4 ++--
 .../integration/service/edit-service-with-upstream.spec.js     |  2 +-
 web/src/components/Plugin/PluginDetail.tsx                     | 10 +++++-----
 web/src/components/Plugin/locales/en-US.ts                     |  2 +-
 web/src/components/Plugin/locales/zh-CN.ts                     |  2 +-
 web/src/locales/en-US/component.ts                             |  9 +++++++--
 web/src/locales/zh-CN/component.ts                             |  7 ++++++-
 web/src/locales/zh-CN/menu.ts                                  |  2 +-
 web/src/pages/Consumer/Create.tsx                              |  2 +-
 web/src/pages/Plugin/List.tsx                                  |  2 +-
 web/src/pages/Plugin/PluginMarket.tsx                          |  5 ++++-
 web/src/pages/Plugin/locales/en-US.ts                          |  4 +++-
 web/src/pages/Plugin/locales/zh-CN.ts                          |  4 +++-
 web/src/pages/Route/locales/en-US.ts                           |  2 +-
 web/src/pages/Service/Create.tsx                               |  2 +-
 web/src/pages/Upstream/Create.tsx                              |  6 +++++-
 web/src/pages/Upstream/locales/en-US.ts                        |  5 +++--
 27 files changed, 63 insertions(+), 36 deletions(-)

diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json
index 246f1d6..fca56f1 100644
--- a/docs/en/latest/config.json
+++ b/docs/en/latest/config.json
@@ -2,6 +2,11 @@
   "version": 2.4,
   "sidebar": [
     {
+      "type": "link",
+      "label": "Apache APISIX Dashboard",
+      "href": "https://apisix.apache.org/docs/dashboard/USER_GUIDE/"
+    },
+    {
       "type": "category",
       "label": "Getting Started",
       "items": ["USER_GUIDE", "IMPORT_OPENAPI_USER_GUIDE", "api/api"]
diff --git a/web/cypress/fixtures/data.json b/web/cypress/fixtures/data.json
index 7f7b0fb..1ea7bcd 100644
--- a/web/cypress/fixtures/data.json
+++ b/web/cypress/fixtures/data.json
@@ -2,7 +2,7 @@
   "deletePluginSuccess": "Delete Plugin Successfully",
   "createUpstreamSuccess": "Create Upstream Successfully",
   "createServiceSuccess": "Create Service Successfully",
-  "editServiceSuccess": "Edit Service Successfully",
+  "editServiceSuccess": "Configure Service Successfully",
   "deleteServiceSuccess": "Delete Service Successfully",
   "deleteRouteSuccess": "Delete Route Successfully",
   "submitSuccess": "Submit Successfully",
@@ -32,7 +32,7 @@
   "pluginTemplateName": "test_plugin_template1",
   "pluginTemplateName2": "test_plugin_template2",
   "createPluginTemplateSuccess": "Create Plugin Template Successfully",
-  "editPluginTemplateSuccess": "Edit Plugin Template Successfully",
+  "editPluginTemplateSuccess": "Configure Plugin Template Successfully",
   "deletePluginTemplateSuccess": "Delete Plugin Template Successfully",
   "pluginTemplateErrorAlert": "Request Error Code: 10000"
 }
diff --git a/web/cypress/integration/plugin/create-delete-in-drawer-plugin.spec.js b/web/cypress/integration/plugin/create-delete-in-drawer-plugin.spec.js
index dfc70ef..a6e7b4c 100644
--- a/web/cypress/integration/plugin/create-delete-in-drawer-plugin.spec.js
+++ b/web/cypress/integration/plugin/create-delete-in-drawer-plugin.spec.js
@@ -47,7 +47,7 @@ context('Delete Plugin List with the Drawer', () => {
   it('should delete the plugin with the drawer', function () {
     cy.visit('/plugin/list');
     cy.get(this.domSelector.refresh).click();
-    cy.contains('button', 'Edit').click();
+    cy.contains('button', 'Configure').click();
     cy.get(this.domSelector.drawerFooter).contains('button', 'Delete').click({ force: true });
     cy.contains('button', 'Confirm').click({ force: true });
     cy.get(this.domSelector.empty).should('be.visible');
diff --git a/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js b/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js
index 136ab49..afaaa7b 100644
--- a/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js
+++ b/web/cypress/integration/plugin/create-edit-delete-plugin.spec.js
@@ -41,7 +41,7 @@ context('Create and Delete Plugin List', () => {
     cy.visit('/plugin/list');
 
     cy.get(this.domSelector.refresh).click();
-    cy.contains('Edit').click();
+    cy.contains('Configure').click();
     cy.get(this.domSelector.codemirror)
       .first()
       .then(() => {
diff --git a/web/cypress/integration/pluginTemplate/create-edit-delete-plugin-template.spec.js b/web/cypress/integration/pluginTemplate/create-edit-delete-plugin-template.spec.js
index c3be23f..d3ea3c4 100644
--- a/web/cypress/integration/pluginTemplate/create-edit-delete-plugin-template.spec.js
+++ b/web/cypress/integration/pluginTemplate/create-edit-delete-plugin-template.spec.js
@@ -16,7 +16,7 @@
  */
 /* eslint-disable no-undef */
 
-context('Create Edit and Delete PluginTemplate', () => {
+context('Create Configure and Delete PluginTemplate', () => {
   const timeout = 5000;
   beforeEach(() => {
     cy.login();
@@ -57,7 +57,7 @@ context('Create Edit and Delete PluginTemplate', () => {
     cy.get(this.domSelector.refresh).click();
     cy.get(this.domSelector.descriptionSelector).type(this.data.pluginTemplateName);
     cy.contains('button', 'Search').click();
-    cy.contains(this.data.pluginTemplateName).siblings().contains('Edit').click();
+    cy.contains(this.data.pluginTemplateName).siblings().contains('Configure').click();
 
     cy.get(this.domSelector.description).clear().type(this.data.pluginTemplateName2);
     cy.contains('Next').click();
diff --git a/web/cypress/integration/pluginTemplate/create-plugin-template-with-route.spec.js b/web/cypress/integration/pluginTemplate/create-plugin-template-with-route.spec.js
index c516532..0b83369 100644
--- a/web/cypress/integration/pluginTemplate/create-plugin-template-with-route.spec.js
+++ b/web/cypress/integration/pluginTemplate/create-plugin-template-with-route.spec.js
@@ -71,7 +71,7 @@ context('Create PluginTemplate Binding To Route', () => {
 
     cy.get(this.domSelector.nameSelector).type(this.data.routeName);
     cy.contains('Search').click();
-    cy.contains(this.data.routeName).siblings().contains('Edit').click();
+    cy.contains(this.data.routeName).siblings().contains('Configure').click();
 
     cy.contains('Forbidden').click();
     cy.contains('Custom').click();
diff --git a/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js b/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js
index 8b7e2f6..9ec4c79 100644
--- a/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js
+++ b/web/cypress/integration/route/can-skip-upstream-when-select-service-id.spec.js
@@ -84,7 +84,7 @@ context('Can select service_id skip upstream in route', () => {
 
     cy.get(this.domSelector.nameSelector).type(this.data.routeName);
     cy.contains('Search').click();
-    cy.contains(this.data.routeName).siblings().contains('Edit').click();
+    cy.contains(this.data.routeName).siblings().contains('Configure').click();
     cy.get(this.domSelector.serviceSelector).click();
     cy.contains('None').click();
     cy.contains('Next').click();
diff --git a/web/cypress/integration/route/create-edit-delete-route.spec.js b/web/cypress/integration/route/create-edit-delete-route.spec.js
index 1549b52..744e54d 100644
--- a/web/cypress/integration/route/create-edit-delete-route.spec.js
+++ b/web/cypress/integration/route/create-edit-delete-route.spec.js
@@ -130,7 +130,7 @@ context('Create and Delete Route', () => {
 
     cy.get(this.domSelector.nameSelector).type(name);
     cy.contains('Search').click();
-    cy.contains(name).siblings().contains('Edit').click();
+    cy.contains(name).siblings().contains('Configure').click();
 
     cy.get(this.domSelector.name).clear().type(newName);
     cy.get(this.domSelector.description).clear().type(this.data.description2);
diff --git a/web/cypress/integration/route/create-route-with-proxy-rewrite-plugin.spec.js b/web/cypress/integration/route/create-route-with-proxy-rewrite-plugin.spec.js
index 04fa0f7..bba3288 100644
--- a/web/cypress/integration/route/create-route-with-proxy-rewrite-plugin.spec.js
+++ b/web/cypress/integration/route/create-route-with-proxy-rewrite-plugin.spec.js
@@ -104,7 +104,7 @@ context('create route with proxy-rewrite plugin', () => {
 
     cy.get(this.domSelector.nameSelector).type(this.data.routeName);
     cy.contains('Search').click();
-    cy.contains(this.data.routeName).siblings().contains('Edit').click();
+    cy.contains(this.data.routeName).siblings().contains('Configure').click();
     cy.get(this.domSelector.name).type(this.data.routeName);
 
     cy.contains(routeLocaleUS['page.route.form.itemLabel.newPath']).should('be.visible');
diff --git a/web/cypress/integration/route/create-route-with-upstream.spec.js b/web/cypress/integration/route/create-route-with-upstream.spec.js
index 24d4699..0a6f27a 100644
--- a/web/cypress/integration/route/create-route-with-upstream.spec.js
+++ b/web/cypress/integration/route/create-route-with-upstream.spec.js
@@ -67,7 +67,7 @@ context('Create Route with Upstream', () => {
     cy.get(this.domSelector.nameSelector).type(this.data.routeName);
 
     cy.contains('Search').click();
-    cy.contains(this.data.routeName).siblings().contains('Edit').click();
+    cy.contains(this.data.routeName).siblings().contains('Configure').click();
 
     cy.get(this.domSelector.name).should('value', this.data.routeName);
     cy.contains('Next').click({ force: true });
@@ -95,7 +95,7 @@ context('Create Route with Upstream', () => {
     cy.get(this.domSelector.nameSelector).type(this.data.routeName);
     cy.contains('Search').click();
 
-    cy.contains(this.data.routeName).siblings().contains('Edit').click();
+    cy.contains(this.data.routeName).siblings().contains('Configure').click();
     // ensure it has already changed to edit page
     cy.get(this.domSelector.name).should('value', this.data.routeName);
     cy.contains('Next').click({ force: true });
diff --git a/web/cypress/integration/service/create-edit-delete-service.spec.js b/web/cypress/integration/service/create-edit-delete-service.spec.js
index 70ba29a..52b63c3 100644
--- a/web/cypress/integration/service/create-edit-delete-service.spec.js
+++ b/web/cypress/integration/service/create-edit-delete-service.spec.js
@@ -90,7 +90,7 @@ context('Create and Delete Service ', () => {
 
     cy.get(this.domSelector.nameSelector).type(this.data.serviceName);
     cy.contains('Search').click();
-    cy.contains(this.data.serviceName).siblings().contains('Edit').click();
+    cy.contains(this.data.serviceName).siblings().contains('Configure').click();
 
     // Confirm whether the created data is saved.
     cy.get(this.domSelector.nodes_0_host).should('value', this.data.ip1);
@@ -119,7 +119,7 @@ context('Create and Delete Service ', () => {
     cy.visit('/service/list');
     cy.get(this.domSelector.nameSelector).type(this.data.serviceName2);
     cy.contains('Search').click();
-    cy.contains(this.data.serviceName2).siblings().contains('Edit').click();
+    cy.contains(this.data.serviceName2).siblings().contains('Configure').click();
     cy.get(this.domSelector.nodes_0_host).should('value', this.data.ip2);
     cy.get(this.domSelector.description).should('value', this.data.description2);
 
diff --git a/web/cypress/integration/service/edit-service-with-upstream.spec.js b/web/cypress/integration/service/edit-service-with-upstream.spec.js
index 490cde7..1d89ee3 100644
--- a/web/cypress/integration/service/edit-service-with-upstream.spec.js
+++ b/web/cypress/integration/service/edit-service-with-upstream.spec.js
@@ -58,7 +58,7 @@ context('Edit Service with Upstream', () => {
 
     cy.get(this.domSelector.nameSearch).type(this.data.serviceName);
     cy.contains('Search').click();
-    cy.contains(this.data.serviceName).siblings().contains('Edit').click();
+    cy.contains(this.data.serviceName).siblings().contains('Configure').click();
 
     cy.get(this.domSelector.nodes_0_host).click({ force: true }).should('value', this.data.ip1);
     cy.get(this.domSelector.input).should('be.disabled');
diff --git a/web/src/components/Plugin/PluginDetail.tsx b/web/src/components/Plugin/PluginDetail.tsx
index ac91e90..6ad7d9c 100644
--- a/web/src/components/Plugin/PluginDetail.tsx
+++ b/web/src/components/Plugin/PluginDetail.tsx
@@ -279,21 +279,21 @@ const PluginDetail: React.FC<Props> = ({
         </style>
 
         <Form {...FORM_ITEM_LAYOUT} style={{ marginTop: '10px' }} form={form}>
-          <Form.Item label="Enable" valuePropName="checked" name="disable">
+          <Form.Item label={formatMessage({ id: 'component.global.enable' })} valuePropName="checked" name="disable">
             <Switch
               defaultChecked={initialData[name] && !initialData[name].disable}
               disabled={readonly}
             />
           </Form.Item>
           {type === 'global' && (
-            <Form.Item label="Scope" name="scope">
+            <Form.Item label={formatMessage({ id: 'component.global.scope' })} name="scope">
               <Select disabled>
                 <Select.Option value="global">Global</Select.Option>
               </Select>
             </Form.Item>
           )}
         </Form>
-        <Divider orientation="left">Data Editor</Divider>
+        <Divider orientation="left">{formatMessage({ id: 'component.global.data.editor' })}</Divider>
         <PageHeader
           title=""
           subTitle={
@@ -317,7 +317,7 @@ const PluginDetail: React.FC<Props> = ({
               }}
               key={1}
             >
-              Document
+              {formatMessage({ id: 'component.global.document' })}
             </Button>,
             <Select
               defaultValue={codeMirrorModeList.Json}
@@ -329,7 +329,7 @@ const PluginDetail: React.FC<Props> = ({
               data-cy='code-mirror-mode'
             ></Select>,
             <Button type="primary" onClick={formatCodes} key={3}>
-              Format
+              {formatMessage({ id: 'component.global.format' })}
             </Button>,
           ]}
         />
diff --git a/web/src/components/Plugin/locales/en-US.ts b/web/src/components/Plugin/locales/en-US.ts
index f70e668..dc733d3 100644
--- a/web/src/components/Plugin/locales/en-US.ts
+++ b/web/src/components/Plugin/locales/en-US.ts
@@ -20,5 +20,5 @@ export default {
   'component.select.pluginTemplate': 'Select a  plugin template',
   'component.step.select.pluginTemplate.select.option': 'Custom',
   'component.plugin.pluginTemplate.tip1': '1. When a route already have plugins field configured, the plugins in the plugin template will be merged into it.',
-  'component.plugin.pluginTemplate.tip2': '2. The same plugin in the plugin template will override one in the plugins'
+  'component.plugin.pluginTemplate.tip2': '2. The same plugin in the plugin template will override one in the plugins',
 };
diff --git a/web/src/components/Plugin/locales/zh-CN.ts b/web/src/components/Plugin/locales/zh-CN.ts
index afc85c1..f563a29 100644
--- a/web/src/components/Plugin/locales/zh-CN.ts
+++ b/web/src/components/Plugin/locales/zh-CN.ts
@@ -20,5 +20,5 @@ export default {
   "component.select.pluginTemplate": '选择插件模板',
   'component.step.select.pluginTemplate.select.option': '手动配置',
   'component.plugin.pluginTemplate.tip1': '1. 若路由已配置插件,则插件模板数据将与已配置的插件数据合并。',
-  'component.plugin.pluginTemplate.tip2': '2. 插件模板相同的插件会覆盖掉原有的插件。'
+  'component.plugin.pluginTemplate.tip2': '2. 插件模板相同的插件会覆盖掉原有的插件。',
 };
diff --git a/web/src/locales/en-US/component.ts b/web/src/locales/en-US/component.ts
index ee763d0..061ce40 100644
--- a/web/src/locales/en-US/component.ts
+++ b/web/src/locales/en-US/component.ts
@@ -21,6 +21,11 @@ export default {
   'component.global.search': 'Search',
   'component.global.reset': 'Reset',
   'component.global.confirm': 'Confirm',
+  'component.global.format': 'Format',
+  'component.global.document': 'Document',
+  'component.global.enable': 'Enable',
+  'component.global.scope': 'Scope',
+  'component.global.data.editor': 'Data Editor',
   'component.global.delete': 'Delete',
   'component.global.cancel': 'Cancel',
   'component.global.submit': 'Submit',
@@ -28,12 +33,12 @@ export default {
   'component.global.createWithEditor': 'Create with Editor',
   'component.global.add': 'Add',
   'component.global.save': 'Save',
-  'component.global.edit': 'Edit',
+  'component.global.edit': 'Configure',
   'component.global.view': 'View',
   'component.global.manage': 'Manage',
   'component.global.update': 'Update',
   'component.global.get': 'Get',
-  'component.global.edit.plugin': 'Edit plugin',
+  'component.global.edit.plugin': 'Configure plugin',
   'component.global.loading': 'Loading',
   'component.global.list': 'List',
   'component.global.description': 'Description',
diff --git a/web/src/locales/zh-CN/component.ts b/web/src/locales/zh-CN/component.ts
index 7076d05..494856d 100644
--- a/web/src/locales/zh-CN/component.ts
+++ b/web/src/locales/zh-CN/component.ts
@@ -21,6 +21,11 @@ export default {
   'component.global.search': '查询',
   'component.global.reset': '重置',
   'component.global.confirm': '确认',
+  'component.global.format': '格式化',
+  'component.global.document': '文档',
+  'component.global.enable': '启用',
+  'component.global.scope': '作用域',
+  'component.global.data.editor': '元数据编辑器',
   'component.global.delete': '删除',
   'component.global.cancel': '取消',
   'component.global.submit': '提交',
@@ -33,7 +38,7 @@ export default {
   'component.global.manage': '管理',
   'component.global.update': '更新',
   'component.global.get': '获取',
-  'component.global.edit.plugin': '编辑插件',
+  'component.global.edit.plugin': '配置插件',
   'component.global.loading': '加载中',
   'component.global.list': '列表',
   'component.global.description': '描述',
diff --git a/web/src/locales/zh-CN/menu.ts b/web/src/locales/zh-CN/menu.ts
index 5e81842..2a5d930 100644
--- a/web/src/locales/zh-CN/menu.ts
+++ b/web/src/locales/zh-CN/menu.ts
@@ -22,7 +22,7 @@ export default {
   'menu.login': '登录',
   'menu.register': '注册',
   'menu.register.result': '注册结果',
-  'menu.dashboard': 'Dashboard',
+  'menu.dashboard': '仪表板',
   'menu.dashboard.analysis': '分析页',
   'menu.dashboard.monitor': '监控页',
   'menu.dashboard.workplace': '工作台',
diff --git a/web/src/pages/Consumer/Create.tsx b/web/src/pages/Consumer/Create.tsx
index 217c335..112ed59 100644
--- a/web/src/pages/Consumer/Create.tsx
+++ b/web/src/pages/Consumer/Create.tsx
@@ -100,7 +100,7 @@ const Page: React.FC = (props) => {
     <>
       <PageContainer
         title={`${
-          (props as any).match.params.id
+          (props as any).match.params.username
             ? formatMessage({ id: 'component.global.edit' })
             : formatMessage({ id: 'component.global.create' })
         } ${formatMessage({ id: 'menu.consumer' })}`}
diff --git a/web/src/pages/Plugin/List.tsx b/web/src/pages/Plugin/List.tsx
index b8917c8..fc5de9d 100644
--- a/web/src/pages/Plugin/List.tsx
+++ b/web/src/pages/Plugin/List.tsx
@@ -146,7 +146,7 @@ const Page: React.FC = () => {
   );
 
   return (
-    <PageHeaderWrapper title={formatMessage({ id: 'page.plugin.list' })}>
+    <PageHeaderWrapper title={formatMessage({ id: 'page.plugin.list' })} subTitle={formatMessage({id:'page.plugin.list.enabled'})}>
       <ProTable<PluginModule.TransformedPlugin>
         actionRef={ref}
         rowKey="id"
diff --git a/web/src/pages/Plugin/PluginMarket.tsx b/web/src/pages/Plugin/PluginMarket.tsx
index dadbdcf..8721bd7 100644
--- a/web/src/pages/Plugin/PluginMarket.tsx
+++ b/web/src/pages/Plugin/PluginMarket.tsx
@@ -20,6 +20,7 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout';
 
 import PluginPage from '@/components/Plugin';
 import { fetchList, createOrUpdate } from './service';
+import { useIntl } from 'umi';
 
 const PluginMarket: React.FC = () => {
   const [initialData, setInitialData] = useState({});
@@ -38,8 +39,10 @@ const PluginMarket: React.FC = () => {
     initPageData();
   }, []);
 
+  const { formatMessage } = useIntl();
+
   return (
-    <PageHeaderWrapper title="Config Plugin">
+    <PageHeaderWrapper title={formatMessage({ id: 'page.plugin.market.config' })}>
       <Card bordered={false}>
         <PluginPage
           initialData={initialData}
diff --git a/web/src/pages/Plugin/locales/en-US.ts b/web/src/pages/Plugin/locales/en-US.ts
index b804a1b..72ad832 100644
--- a/web/src/pages/Plugin/locales/en-US.ts
+++ b/web/src/pages/Plugin/locales/en-US.ts
@@ -16,5 +16,7 @@
  */
 export default {
   'page.plugin.drawer.popconfirm.title.delete': 'Are you sure to delete this item?',
-  'page.plugin.list': 'Plugin List'
+  'page.plugin.list': 'Plugin List',
+  'page.plugin.list.enabled': 'List of enabled plugins',
+  'page.plugin.market.config': 'Configure Plugin',
 };
diff --git a/web/src/pages/Plugin/locales/zh-CN.ts b/web/src/pages/Plugin/locales/zh-CN.ts
index fba2a0d..2ceb854 100644
--- a/web/src/pages/Plugin/locales/zh-CN.ts
+++ b/web/src/pages/Plugin/locales/zh-CN.ts
@@ -16,5 +16,7 @@
  */
 export default {
   'page.plugin.drawer.popconfirm.title.delete': '确定删除该插件吗?',
-  'page.plugin.list': '插件列表'
+  'page.plugin.list': '插件列表',
+  'page.plugin.list.enabled': '已启用插件的列表',
+  'page.plugin.market.config': '配置列表',
 };
diff --git a/web/src/pages/Route/locales/en-US.ts b/web/src/pages/Route/locales/en-US.ts
index a8b3419..9ac5d2b 100644
--- a/web/src/pages/Route/locales/en-US.ts
+++ b/web/src/pages/Route/locales/en-US.ts
@@ -37,7 +37,7 @@ export default {
   'page.route.instructions': 'Instructions',
   'page.route.import': 'Import',
   'page.route.createRoute': 'Create Route',
-  'page.route.editRoute': 'Edit Route',
+  'page.route.editRoute': 'Configure Route',
 
   'page.route.input.placeholder.parameterNameHttpHeader': 'Request header name, for example: HOST',
   'page.route.input.placeholder.parameterNameRequestParameter': 'Parameter name, for example: id',
diff --git a/web/src/pages/Service/Create.tsx b/web/src/pages/Service/Create.tsx
index f0cd496..201c3dd 100644
--- a/web/src/pages/Service/Create.tsx
+++ b/web/src/pages/Service/Create.tsx
@@ -116,7 +116,7 @@ const Page: React.FC = (props) => {
     <>
       <PageHeaderWrapper
         title={`${
-          (props as any).match.params.rid
+          (props as any).match.params.serviceId
             ? formatMessage({ id: 'component.global.edit' })
             : formatMessage({ id: 'component.global.create' })
         } ${formatMessage({ id: 'menu.service' })}`}
diff --git a/web/src/pages/Upstream/Create.tsx b/web/src/pages/Upstream/Create.tsx
index 9916e2b..0e6714e 100644
--- a/web/src/pages/Upstream/Create.tsx
+++ b/web/src/pages/Upstream/Create.tsx
@@ -76,7 +76,11 @@ const Page: React.FC = (props) => {
 
   return (
     <>
-      <PageContainer title={formatMessage({ id: 'page.upstream.create' })}>
+      <PageContainer
+        title={(props as any).match.params.id
+        ? formatMessage({ id: 'page.upstream.configure' })
+        : formatMessage({ id: 'page.upstream.create' })}
+      >
         <Card bordered={false}>
           <Steps current={step - 1} style={{ marginBottom: 30 }}>
             <Steps.Step title={formatMessage({ id: 'page.upstream.create.basic.info' })} />
diff --git a/web/src/pages/Upstream/locales/en-US.ts b/web/src/pages/Upstream/locales/en-US.ts
index 05448c4..9c35ccb 100644
--- a/web/src/pages/Upstream/locales/en-US.ts
+++ b/web/src/pages/Upstream/locales/en-US.ts
@@ -80,6 +80,7 @@ export default {
   'page.upstream.upstream_host.required': 'Please input the custom Host',
 
   'page.upstream.create': 'Create Upstream',
+  'page.upstream.configure': 'Configure Upstream',
   'page.upstream.create.upstream.successfully': 'Create Upstream Successfully',
   'page.upstream.edit.upstream.successfully': 'Update Upstream Successfully',
   'page.upstream.create.basic.info': 'Basic Information',
@@ -88,9 +89,9 @@ export default {
   'page.upstream.list.name': 'Name',
   'page.upstream.list.type': 'Type',
   'page.upstream.list.description': 'Description',
-  'page.upstream.list.edit.time': 'Edit Time',
+  'page.upstream.list.edit.time': 'Configure Time',
   'page.upstream.list.operation': 'Operation',
-  'page.upstream.list.edit': 'Edit',
+  'page.upstream.list.edit': 'Configure',
   'page.upstream.list.confirm.delete': 'Are you sure to delete ?',
   'page.upstream.list.confirm': 'Confirm',
   'page.upstream.list.cancel': 'Cancel',