You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by GitBox <gi...@apache.org> on 2020/08/13 03:10:35 UTC

[GitHub] [apisix-dashboard] juzhiyuan commented on a change in pull request #373: docs: create I18N_MANUAL.md

juzhiyuan commented on a change in pull request #373:
URL: https://github.com/apache/apisix-dashboard/pull/373#discussion_r469668443



##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`

Review comment:
       what's `the first tow levels`?

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual

Review comment:
       I would recommend using `User Guide` instead of `Manual` :D

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:

Review comment:
       `The Apache APISIX Dashboard uses XX to solve the i18n issues, in order to make the i18n more clear and reasonable, we would recommend to obey the following rules`

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)

Review comment:
       Please put **the Component's locale file** under XXX, and we MUST import them manually.
   
   I will add an example after this PR is merged.

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`
+
+## Global locale keys
+
+we have already define many global keys, before you do i18n, you can refer to [them](https://github.com/apache/apisix-dashboard/blob/master/src/locales/zh-CN/component.ts).
+
+## Recommended subkey naming
+
+- **Form**
+
+| element   | props          | locale subKey                 |
+| --------- | -------------- | ----------------------------- |
+| Form.Item | label          | form.itemLabel                |
+| Form.Item | rules.required | form.itemRulesRequiredMessage |
+| Form.Item | rules.pattern  | form.itemRulesPatternMessage  |
+| Form.Item | extra          | form.itemExtraMessage         |
+
+**eg:**

Review comment:
       Example

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`
+
+## Global locale keys
+
+we have already define many global keys, before you do i18n, you can refer to [them](https://github.com/apache/apisix-dashboard/blob/master/src/locales/zh-CN/component.ts).
+
+## Recommended subkey naming
+
+- **Form**
+
+| element   | props          | locale subKey                 |
+| --------- | -------------- | ----------------------------- |
+| Form.Item | label          | form.itemLabel                |
+| Form.Item | rules.required | form.itemRulesRequiredMessage |
+| Form.Item | rules.pattern  | form.itemRulesPatternMessage  |
+| Form.Item | extra          | form.itemExtraMessage         |
+
+**eg:**
+
+```javascript

Review comment:
       js

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`
+
+## Global locale keys
+
+we have already define many global keys, before you do i18n, you can refer to [them](https://github.com/apache/apisix-dashboard/blob/master/src/locales/zh-CN/component.ts).

Review comment:
       to those

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:

Review comment:
       How to name the key for each locale filed

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.

Review comment:
       `each page's locale file`

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`

Review comment:
       The subkeys are divided into `$element + $description` style, e.g `xxx`

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`
+
+## Global locale keys
+
+we have already define many global keys, before you do i18n, you can refer to [them](https://github.com/apache/apisix-dashboard/blob/master/src/locales/zh-CN/component.ts).

Review comment:
       We have already defined.

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`

Review comment:
       Please do a global search about `e.g`

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`
+
+## Global locale keys
+
+we have already define many global keys, before you do i18n, you can refer to [them](https://github.com/apache/apisix-dashboard/blob/master/src/locales/zh-CN/component.ts).
+
+## Recommended subkey naming
+
+- **Form**
+
+| element   | props          | locale subKey                 |
+| --------- | -------------- | ----------------------------- |
+| Form.Item | label          | form.itemLabel                |
+| Form.Item | rules.required | form.itemRulesRequiredMessage |
+| Form.Item | rules.pattern  | form.itemRulesPatternMessage  |
+| Form.Item | extra          | form.itemExtraMessage         |
+
+**eg:**
+
+```javascript
+'page.route.form.itemRulesExtraMessage.parameterName': '仅支持字母和数字,且只能以字母开头',
+'page.route.form.itemLabel.apiName': 'API 名称',
+'page.route.form.itemRulesPatternMessage.apiNameRule': '最大长度100,仅支持字母、数字、- 和 _,且只能以字母开头',
+```
+
+- **Input**
+
+| element | props       | locale subKey     |
+| ------- | ----------- | ----------------- |
+| Input   | placeholder | input.placeholder |
+
+**eg:**

Review comment:
       Example

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`
+
+## Global locale keys
+
+we have already define many global keys, before you do i18n, you can refer to [them](https://github.com/apache/apisix-dashboard/blob/master/src/locales/zh-CN/component.ts).
+
+## Recommended subkey naming
+
+- **Form**
+
+| element   | props          | locale subKey                 |
+| --------- | -------------- | ----------------------------- |
+| Form.Item | label          | form.itemLabel                |
+| Form.Item | rules.required | form.itemRulesRequiredMessage |
+| Form.Item | rules.pattern  | form.itemRulesPatternMessage  |
+| Form.Item | extra          | form.itemExtraMessage         |
+
+**eg:**
+
+```javascript
+'page.route.form.itemRulesExtraMessage.parameterName': '仅支持字母和数字,且只能以字母开头',
+'page.route.form.itemLabel.apiName': 'API 名称',
+'page.route.form.itemRulesPatternMessage.apiNameRule': '最大长度100,仅支持字母、数字、- 和 _,且只能以字母开头',
+```
+
+- **Input**
+
+| element | props       | locale subKey     |
+| ------- | ----------- | ----------------- |
+| Input   | placeholder | input.placeholder |
+
+**eg:**
+
+```javascript

Review comment:
       js

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.

Review comment:
       `Please`

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`
+
+- sub keys divide according to element +description eg: `app.pwa.message.offline`, `component.actionBar.button.nextStep`
+
+* If the the text is the part of a element, we can use [elementNameProps] eg: `page.consumer.proTableColumns.username`
+* If there are two or more same level part locales of a element, we can add number suffix eg: `page.route.form.itemRulesExtraMessage1.path`, `page.route.form.itemRulesExtraMessage2.path`
+
+- common texts, we should not repeat in other part, and the common locale key omit [elementName] would be better. If the text is used in two or more places inside the module, it`s recommended that this text be shared in the module eg:`page.route.parameterPosition`If the text is used in two or more places between modules, it is recommended that the text be shared globally, and add`global`as the moduleName eg:`component.global.confirm`

Review comment:
       Please take a look at this paragraph:
   
   ![image](https://user-images.githubusercontent.com/2106987/90089722-abf25c00-dd54-11ea-9dde-f80517c29b24.png)
   

##########
File path: I18N_MANUAL.md
##########
@@ -0,0 +1,144 @@
+<!--
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+-->
+
+# Apache APISIX Dashboard I18N Manual
+
+Apache APISIX Dashboard use [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) solve internationalization issues,in order to make i18n of cleaner and more reasonable, we recommend the following rules for internationalization:
+
+## Location of locale configuration:
+
+- please put **the global locales** under `src/locales`.
+- please put **each page locales** under `src/pages/$PAGE/locales` folder.
+- please put **self-packaged component locales** under `src/components/$COMPONENT/locales` folder. (This part cannot be loaded automatically, it needs to be additionally quoted in the global locales file)
+
+## how to name the locales key:
+
+the key can be like this : [basicModule].[moduleName].[elementName].[...desc]
+
+- basic keys (the first tow levels) divide according to the directory structure: eg: `app.pwa`, `page.consumer`, `component.actionBar`

Review comment:
       e.g `xxx`




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org