Skip to content
This repository was archived by the owner on Nov 16, 2022. It is now read-only.

Commit 1c69a9a

Browse files
committed
[LocalizationWorkflowTutorial] (issue #16) Added localization.
1 parent ef48c55 commit 1c69a9a

File tree

5 files changed

+107
-42
lines changed

5 files changed

+107
-42
lines changed

src/Documentation.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ export default function Documentation() {
103103
tooltip: "Github source code"
104104
}
105105
]}
106+
onVersionClick={() => window.location = "https://github.com/material-docs/material-docs/releases"}
106107
>
107108
<DocsMenu dense>
108109
<AutoDocsMenu/>

src/locale/EN.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,41 @@
33
"label": "English",
44
"locale": {
55
"pages": {
6+
"LocalizationWorkflowTutorial": {
7+
"headers": {
8+
"localizationProcess": "Localization process",
9+
"localization": "Localization",
10+
"creatingLang": "Creating a language pack",
11+
"langAccess": "Access to the language pack",
12+
"langTranslation": "Adding a translation",
13+
"interfaceLocalization": "Interface localization",
14+
"mechanismAccess": "Access to the localization engine",
15+
"sourcesOnGitHub": "Source codes on"
16+
},
17+
"langStructureCaption": "Material Docs has a built-in localization mechanism. The language pack has the following structure:",
18+
"langStructureName": "The name of the language pack. (_recommends naming according to standards, e.g. __en-us___)",
19+
"langStructureLabel": "The nice name of the language pack will be displayed in the interface.",
20+
"langStructureLocale": "The object that stores your localization data.",
21+
"langStructureLoadLang": "The function to be called when the language is loaded. Needed to get localization from a remote host.",
22+
"langStructureComment": "One of the parameters must be defined in the Lang object __: _locale_ or _loadLang_!__",
23+
"creatingLang": "Let's create a language pack for existing pages and transfer it to",
24+
"applyingLang": "Now that we have created one language pack, we can start the Material Docs localization system. To do this, you need to transfer the package to",
25+
"appliedLang": "A language field appeared in the upper right corner.",
26+
"accessingLang": "Now, let's get the text from the language pack. To do this, we will use the ```<Locale />``` component. In the parameter ___path___ specifies the path to the variable inside the _locale_ object in the language pack.",
27+
"accessingLangComment": "> Please note that localization of the ```<Markdown />``` component needs to be done differently. This component contains\n> own parameter ___locale___, with which we advise you to specify the path in the language pack. ",
28+
"translating": "After we have created ___defaultLanguage___, we can move on to translation.",
29+
"translatingComment": "Use only the fields specified in the ___locale___ field of the __ default language pack__.",
30+
"createTranslate": "Let's create a translation:",
31+
"missingFieldsComment": "Note that __translation__ contains __not all of the fields__ that are in the standard language pack. Fields that are not in the translation __ will be taken from the standard package __.",
32+
"providingLang": "Now, let's pass the ___langs___ parameter to the ```<DocsLayout />``` component:",
33+
"languageSwitch": "Now, the language selection button on the top right of the interface is available and offers a choice of 2 languages.",
34+
"interfaceTranslating": "The MaterialDocs interface is in English by default. In order to translate it, you need to add to the next\nstructure in the ___locale___ field of the language pack:",
35+
"interfaceTranslated": "Now, the documentation interface has been translated. ",
36+
"usingHooks": "You can access the localization engine using the ___useLang()___ hook or the ___withLang()___ higher-order component. We advise you to use them only as a last resort. ",
37+
"sourcesOnGitHub": "You can find the sources for this example at",
38+
"here": "here"
39+
40+
},
641
"HostingMaterialDocsOnGHPagesTutorial": {
742
"headers": {
843
"hostingOnGH": "Hosting Material Docs on GitHub Pages",

src/locale/RU.json

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,41 @@
33
"label": "Русский",
44
"locale": {
55
"pages": {
6+
"LocalizationWorkflowTutorial": {
7+
"headers": {
8+
"localizationProcess": "Процесс локализации",
9+
"localization": "Локализация ",
10+
"creatingLang": "Создание языкового пакета",
11+
"langAccess": "Доступ к языковому пакету",
12+
"langTranslation": "Добавление перевода",
13+
"interfaceLocalization": "Локализация интерфейса",
14+
"mechanismAccess": "Доступ к механизму локализации",
15+
"sourcesOnGitHub": "Исходники на"
16+
},
17+
"langStructureCaption": "В Material Docs присутствует встроенный механизм для локализации. Языковой пакет имеет следующую структуру:",
18+
"langStructureName": "Название языкового пакета. (_рекомендует называть в соответствии со стандартами, например __en-us___)",
19+
"langStructureLabel": "Красивое названия языкового пакета, будет отображено в интерфейсе.",
20+
"langStructureLocale": " Объект, в котором хранятся ваши данные о локализации. ",
21+
"langStructureLoadLang": "Функция, которая будет вызвана при загрузке языка. Нужна для получения локализации с удаленного хоста.",
22+
"langStructureComment": "В объекте Lang __обязательно должен быть определен один из параметров: _locale_ или _loadLang_!__",
23+
"creatingLang": "Создадим языковой пакет для существующих страниц и передадим его в",
24+
"applyingLang": "Теперь, когда мы создали один языковой пакет, мы можем запустить систему локализации Material Docs. Для этого \nнужно передать пакет в",
25+
"appliedLang": "В правом верхнем углу появилось поле с языком.",
26+
"accessingLang": "Теперь, давайте достанем текст из языкового пакета. Для этого воспользуемся компонентом ```<Locale/>```. В параметре ___path___\n указывается путь к переменной внутри объекта _locale_ в языковом пакете.",
27+
"accessingLangComment": "> Обратите внимание, локализацию компонента ```<Markdown/>``` нужно проводить иначе. В этом компоненте присутствует \n> собственный параметр ___locale___, с помощью которого мы советуем указывать путь в языковом пакете. ",
28+
"translating": "После того, как мы создали ___defaultLanguage___, можно переходить к переводу.",
29+
"translatingComment": "Используйте только те поля, которые указаны в поле ___locale___ __языкового пакета по умолчанию__.",
30+
"createTranslate": "Создадим перевод:",
31+
"missingFieldsComment": "Заметьте, __перевод__ содержит __не все поля__, которые присутствуют в стандартном языковом пакете. Поля, которых нет в переводе __будут взяты из стандартного пакета__.",
32+
"providingLang": "Теперь, давайте передадим в компонент ```<DocsLayout/>``` параметр ___langs___:",
33+
"languageSwitch": "Теперь, кнопка выбора языка справа сверху интерфейса доступна и предлагает на выбор 2 языка.",
34+
"interfaceTranslating": "Интерфейс MaterialDocs по умолчанию имеет английский язык. Для того, чтоб перевести его, необходимо добавить в следующую\nструктуру в поле ___locale___ языкового пакета:",
35+
"interfaceTranslated": "Теперь, интерфейс документации переведен. ",
36+
"usingHooks": "Вы можете получить доступ к механизму локализации с помощью хука ___useLang()___ или компонента высшего порядка ___withLang()___. Советуем пользоваться ими только в крайних случаях. ",
37+
"sourcesOnGitHub": "Вы можете найти исходники этого примера на",
38+
"here": "здесь"
39+
40+
},
641
"HostingMaterialDocsOnGHPagesTutorial": {
742
"headers": {
843
"hostingOnGH": "Хостинг Material Docs на GitHub Pages",

src/pages/Tutorials/LocalizationWorkflow/LocalizationWorkflow.md

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# Процесс локализации
2-
## Локализация
3-
### Создание языкового пакета
4-
В Material Docs присутствует встроенный механизм для локализации. Языковой пакет имеет следующую структуру:
1+
# &{&&locale/headers/localizationProcess}&
2+
## &{&&locale/headers/localization}&
3+
### &{&&locale/headers/creatingLang}&
4+
&{&&locale/langStructureCaption}&
55
* Lang
6-
* ```name: string``` - Название языкового пакета. (_рекомендует называть в соответствии со стандартами, например __en-us___)
7-
* ```label: string``` - Красивое названия языкового пакета, будет отображено в интерфейсе.
8-
* ```locale: abject``` - Объект, в котором хранятся ваши данные о локализации.
9-
* ```loadLang(): object``` - Функция, которая будет вызвана при загрузке языка. Нужна для получения локализации с удаленного хоста.
6+
* ```name: string``` - &{&&locale/langStructureName}&
7+
* ```label: string``` - &{&&locale/langStructureLabel}&
8+
* ```locale: object``` - &{&&locale/langStructureLocale}&
9+
* ```loadLang(): object``` - &{&&locale/langStructureLoadLang}&
1010

11-
> В объекте Lang __обязательно должен быть определен один из параметров: _locale_ или _loadLang_!__
11+
> &{&&locale/langStructureComment}&
1212
13-
Создадим языковой пакет для существующих страниц и передадим его в ```<DocsLayout/>```:
13+
&{&&locale/creatingLang}& ```<DocsLayout/>```:
1414
##### locale/EN.js
15-
```
15+
```{"type": "code", "themeLight": "darcula"}
1616
export default {
1717
name: "en-us",
1818
label: "English",
@@ -33,9 +33,8 @@ export default {
3333
}
3434
}
3535
```
36-
Теперь, когда мы создали один языковой пакет, мы можем запустить систему локализации Material Docs. Для этого
37-
нужно передать пакет в ```<DocsLayout/>```:
38-
```
36+
&{&&locale/applyingLang}& ```<DocsLayout/>```:
37+
```{"type": "code", "themeLight": "darcula"}
3938
<DocsLayout
4039
name={"My documentation"}
4140
version={"1.0.0-alpha"}
@@ -49,14 +48,12 @@ export default {
4948
{/*...*/}
5049
</DocsLayout>
5150
```
52-
В правом верхнем углу появилось поле с языком.
53-
### Доступ к языковому пакету
54-
Теперь, давайте достанем текст из языкового пакета. Для этого воспользуемся компонентом ```<Locale/>```. В параметре ___path___
55-
указывается путь к переменной внутри объекта _locale_ в языковом пакете.
56-
> Обратите внимание, локализацию компонента ```<Markdown/>``` нужно проводить иначе. В этом компоненте присутствует
57-
> собственный параметр ___locale___, с помощью которого мы советуем указывать путь в языковом пакете.
51+
&{&&locale/appliedLang}&
52+
### &{&&locale/headers/langAccess}&
53+
&{&&locale/accessingLang}&
54+
&{&&locale/accessingLangComment}&
5855

59-
```
56+
```{"type": "code", "themeLight": "darcula"}
6057
import React from "react";
6158
import DocsPage from "@material-docs/core/components/DocsPage";
6259
import H1 from "@material-docs/core/components/H1";
@@ -90,12 +87,12 @@ export default function FirstPage() {
9087
);
9188
}
9289
```
93-
### Добавление перевода
94-
После того, как мы создали ___defaultLanguage___, можно переходить к переводу.
95-
> Используйте только те поля, которые указаны в поле ___locale___ __языкового пакета по умолчанию__.
90+
### &{&&locale/headers/langTranslation}&
91+
&{&&locale/translating}&
92+
> &{&&locale/translatingComment}&
9693
97-
Создадим перевод:
98-
```
94+
&{&&locale/createTranslate}&
95+
```{"type": "code", "themeLight": "darcula"}
9996
export default {
10097
name: "ru-ru",
10198
label: "Русский",
@@ -109,11 +106,10 @@ export default {
109106
}
110107
}
111108
```
112-
> Заметьте, __перевод__ содержит __не все поля__, которые присутствуют в стандартном языковом пакете. Поля, которых нет
113-
> переводе __будут взяты из стандартного пакета__.
109+
> &{&&locale/missingFieldsComment}&
114110
115-
Теперь, давайте передадим в компонент ```<DocsLayout/>``` параметр ___langs___:
116-
```
111+
&{&&locale/providingLang}&
112+
```{"type": "code", "themeLight": "darcula"}
117113
import React from 'react';
118114
import ReactDOM from 'react-dom';
119115
import * as serviceWorker from './serviceWorker';
@@ -157,11 +153,10 @@ ReactDOM.render(
157153
158154
serviceWorker.unregister();
159155
```
160-
Теперь, кнопка выбора языка справа сверху интерфейса доступна и предлагает на выбор 2 языка.
161-
### Локализация интерфейса Material Docs
162-
Интерфейс MaterialDocs по умолчанию имеет английский язык. Для того, чтоб перевести его, необходимо добавить в следующую
163-
структуру в поле ___locale___ языкового пакета:
164-
```javascript
156+
&{&&locale/languageSwitch}&
157+
### &{&&locale/headers/interfaceLocalization}& Material Docs
158+
&{&&locale/interfaceTranslating}&
159+
```{"type": "code", "themeLight": "darcula"}
165160
export default {
166161
name: "ru-ru",
167162
label: "Русский",
@@ -202,10 +197,9 @@ export default {
202197
}
203198
}
204199
```
205-
Теперь, интерфейс документации переведен.
206-
### Доступ к механизму локализации
207-
Вы можете получить доступ к механизму локализации с помощью хука ___useLang()___ или компонента высшего порядка ___withLang()___.
208-
Советуем пользоваться ими только в крайних случаях.
200+
&{&&locale/interfaceTranslated}&
201+
### &{&&locale/headers/mechanismAccess}&
202+
&{&&locale/usingHooks}&
209203

210-
## Исходники на GitHub
211-
Вы можете найти исходники этого примера на GitHub [здесь](&&GitHubLink)
204+
## &{&&locale/headers/sourcesOnGitHub}& GitHub
205+
&{&&locale/sourcesOnGitHub}& GitHub [&{&&locale/here}& ](&&GitHubLink)

src/pages/Tutorials/LocalizationWorkflow/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default function AdvancedMaterialDocsUsage() {
1919
>
2020
<Markdown
2121
data={{
22-
locale: "pages/HostingMaterialDocsOnGHPagesTutorial",
22+
locale: "pages/LocalizationWorkflowTutorial",
2323
GitHubLink: "https://github.com/material-docs/material-docs-example-project/tree/localization-workflow"
2424
}}
2525
children={content}

0 commit comments

Comments
 (0)