Title: Education: 04. Language Date: 2019-06-25 00:00 Category: Page Slug: education.04.lang Lang: en | < Back | Index | Next > | |---|---|---| | [03. Site][prev] | [Education][index] | [05. Blog][next] |
In this document we add language selection. Estimated completion time: 10 minutes. **Table of contents** * [01. Localization](#localization) * [02. Investigate `pskov.cfg` file](#cfg) * [03. Investigate template files](#item) * [04. Investigate Markdown files](#md) * [05. Launch LFSA](#lfsa) * [06. Generate the site](#gen) * [07. Observe the site](#observe) * [08. Summary](#summary) ## 01. Localization Now that you have your web site in English you start to wonder why there's no Russian version, you're Russian after all! You set on to create the following [directory structure][02-files]: * `pskov.cfg` * `en/item.template` * `en/about.md` * `en/cv.md` * `ru/item.template` * `ru/about.md` * `ru/cv.md` Let's look at the contents of these files closer. ## 02. Investigate `pskov.cfg` file `pskov.cfg` file has the following contents: ``` input = en;ru item = item.template ``` As you see, `input` can accept multiple directories separated by `;` symbol: **PSKOV** will go over each directory specified and run as before. In this case, both `en/` and `ru/` directories have their own `item.template` file. ## 03. Investigate template files * `en/item.template` contents: ``` - - - - Collapsed for brevity - - - - Serov
- - - - Collapsed for brevity - - - - ``` * `ru/item.template` contents: ``` - - - - Collapsed for brevity - - - - Серов
- - - - Collapsed for brevity - - - - ``` **Note**: beginning and ending were collapsed for brevity. As you can see, both `en/item.template` and `ru/item.template` look similar to `item.template` we saw [before][prev]. The changes include: * use of `
...
` section to present language selection * localization of titles into English and Russian Language selection uses new **PSKOV** constant: | PSKOV constant | Description | |---|---| | `PSKOV_ITEM_URL` | Provides generated page's file name | As you see, `PSKOV_ITEM_URL` is all you need to have your page in as many languages as you please. ## 04. Investigate Markdown files `en/about.md` and `en/cv.md` files look almost exactly as [before][prev]. `ru/about.md` and `ru/cv.md` are simply Russian variants of corresponding pages. For example, `ru/cv.md` has the following contents: ``` Title: Резюме Slug: cv Здесь вы можете увидеть моё резюме в том случае, если мои произведения всё ещё вас интересуют. Я использовал современный подход ИТ для структурирования своего резюме в виде пар ключ-значение словаря (карты). Наслаждайтесь! | Ключ | Значение | |---|---| | Имя | Валентин Серов | | Возраст | 46 | | Семейное положение | Женат | | Страна | Российская Империя | | Учёба | Императорская Академия художеств | | Звания | * академик ИАХ (1898)
* действительный член ИАХ (1903) | ``` **Note**: Russian page has exactly the same `Slug` value as English one.
## 05. Launch LFSA Launch [LFSA][lfsa] so that it points to directory with the files we just observed: ``` $ /path/to/lfsa_1.0.0.py /path/to/dir/02.Language ``` ## 06. Generate the site Go to [Tool][tool] page and press `Generate` button to generate HTML files right where Markdown ones reside. ## 07. Observe the site Observe generated web site locally by opening `en/about.html` or `ru/about.html` and switching language. ## 08. Summary You have successfully added language selection. [Check out the result][02-sample]. Introduced PSKOV constants include: | PSKOV constant | Description | |---|---| | `PSKOV_ITEM_URL` | Provides generated page's file name |
| < Back | Index | Next > | |---|---|---| | [03. Site][prev] | [Education][index] | [05. Blog][next] | [index]: education.html [prev]: education.03.site.html [next]: education.05.blog.html [02-files]: https://github.com/OGStudio/site-pskov-sample/tree/master/02.Language [02-sample]: http://opengamestudio.org/pskov/sample/02.Language/en/about.html [lfsa]: http://opengamestudio.org/lfsa [tool]: http://opengamestudio.org/pskov