You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

education.04.lang.md 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. Title: Обучение: 04. Язык
  2. Date: 2019-06-18 00:00
  3. Category: Page
  4. Slug: education.04.lang
  5. Lang: ru
  6. | < Назад | Начало | Далее > |
  7. |---|---|---|
  8. | [03. Сайт][prev] | [Обучение][index] | [05. Блог][next] |
  9. </div><div class="contents">
  10. В этом документе мы добавим выбор языка.
  11. Ожидаемое время завершения: 10 минут.
  12. **Содержание**
  13. * [01. Локализация](#localization)
  14. * [02. Изучите файл `pskov.cfg`](#cfg)
  15. * [03. Изучите файлы шаблонов](#item)
  16. * [04. Изучите файлы Markdown](#md)
  17. * [05. Запустите ЛФСД и сгенерируйте сайт](#gen)
  18. * [06. Итог](#summary)
  19. <a name="localization"/>
  20. ## 01. Локализация
  21. Теперь, когда у вас есть собственный веб-сайт на английском, вы задумываетесь о русской версии, ведь вы же всё-таки русский!
  22. Вы создаёте директорию со [следующей структурой файлов][02-files]:
  23. * `pskov.cfg`
  24. * `en/item.template`
  25. * `en/about.md`
  26. * `en/cv.md`
  27. * `ru/item.template`
  28. * `ru/about.md`
  29. * `ru/cv.md`
  30. Давайте взглянем на содержимое этих файлов.
  31. <a name="cfg"/>
  32. ## 02. Изучите файл `pskov.cfg`
  33. Файл `pskov.cfg` содержит следующее:
  34. ```
  35. input = en;ru
  36. item = item.template
  37. ```
  38. Как видите, `input` может принимать несколько директорий, разделённых символом `;`. **ПСКОВ** обработает каждую указанную директорию так же, как и ранее.
  39. В нашем случае каждая из директорий - `en/` и `ru/` - содержит собственный шаблон `item.template`.
  40. <a name="item"/>
  41. ## 03. Изучите файлы шаблонов
  42. * Содержимое `en/item.template`:
  43. ```
  44. - - - - Схлопнуто для краткости - - - -
  45. <title>Serov</title>
  46. </head>
  47. <body>
  48. <div id="header">
  49. <strong>Serov</strong>
  50. <a href="about.html">About me</a>
  51. <a href="cv.html">CV</a>
  52. <div id="lang">
  53. <a href="../en/PSKOV_ITEM_URL">EN</a>
  54. <a href="../ru/PSKOV_ITEM_URL">RU</a>
  55. </div>
  56. </div>
  57. <center>
  58. - - - - Схлопнуто для краткости - - - -
  59. ```
  60. * Содержимое `ru/item.template`:
  61. ```
  62. - - - - Схлопнуто для краткости - - - -
  63. <title>Серов</title>
  64. </head>
  65. <body>
  66. <div id="header">
  67. <strong>Серов</strong>
  68. <a href="about.html">Обо мне</a>
  69. <a href="cv.html">Резюме</a>
  70. <div id="lang">
  71. <a href="../en/PSKOV_ITEM_URL">EN</a>
  72. <a href="../ru/PSKOV_ITEM_URL">RU</a>
  73. </div>
  74. </div>
  75. <center>
  76. - - - - Схлопнуто для краткости - - - -
  77. ```
  78. **Внимание**: начало и конец схлопнуты для краткости.
  79. Как видите, `en/item.template` и `ru/item.template` очень похожи на [виденный ранее][prev] `item.template`.
  80. Изменения следующие:
  81. * использование секции `<div id="lang">...</div>` для отображения выбора языка
  82. * локализация заголовков на Английском и Русском языках
  83. Выбор языка использует следующую новую константу **ПСКОВА**:
  84. | Константа ПСКОВА | Описание |
  85. |---|---|
  86. | `PSKOV_ITEM_URL` | Предоставляет имя файла генерируемой страницы |
  87. Использование `PSKOV_ITEM_URL` даёт вам поддержку стольких языков, сколько пожелаете.
  88. <a name="md"/>
  89. ## 04. Изучите файлы Markdown
  90. Файлы `en/about.md` и `en/cv.md` выглядят почти идентично [виденным ранее][prev]. `ru/about.md` и `ru/cv.md` представляют собой русские версии соответствующих английских страниц.
  91. Например, `ru/cv.md` содержит:
  92. ```
  93. Title: Резюме
  94. Slug: cv
  95. Здесь вы можете увидеть моё резюме в том случае, если мои произведения всё ещё вас интересуют. Я использовал современный подход ИТ для структурирования своего резюме в виде пар ключ-значение словаря (карты). Наслаждайтесь!
  96. | Ключ | Значение |
  97. |---|---|
  98. | Имя | Валентин Серов |
  99. | Возраст | 46 |
  100. | Семейное положение | Женат |
  101. | Страна | Российская Империя |
  102. | Учёба | Императорская Академия художеств |
  103. | Звания | * академик ИАХ (1898) <br> * действительный член ИАХ (1903) |
  104. ```
  105. **Внимание**: русская страница использует точно такое же значение `Slug`, как и английская страница.
  106. <a name="gen"/>
  107. ## 05. Запустите ЛФСД и сгенерируйте сайт
  108. Запустите [ЛФСД][lfsa] с указанием директории, содержащей только что рассмотренные файлы:
  109. ```
  110. $ /путь/до/lfsa_1.0.0.py /путь/до/директории/02.Language
  111. ```
  112. Сгенерируйте сайт:
  113. * Перейдите на страницу [Инструмент][tool]
  114. * Нажмите кнопку `Генерировать`
  115. * Откройте сгенерированный файл `en/about.html` или `ru/about.html` из директории сайта
  116. * Переключите язык, чтобы убедиться в корректной работе
  117. <a name="summary"/>
  118. ## 06. Итог
  119. Вы успешно добавили выбор языка. [Проверьте результат][02-sample].
  120. Представлены константы **ПСКОВА**:
  121. | Константа ПСКОВА | Описание |
  122. |---|---|
  123. | `PSKOV_ITEM_URL` | Предоставляет имя файла генерируемой страницы |
  124. </div><div class="contents">
  125. | < Назад | Начало | Далее > |
  126. |---|---|---|
  127. | [03. Сайт][prev] | [Обучение][index] | [05. Блог][next] |
  128. [index]: education.html
  129. [prev]: education.03.site.html
  130. [next]: education.05.blog.html
  131. [02-files]: https://github.com/OGStudio/site-pskov-sample/tree/master/02.Language
  132. [02-sample]: http://opengamestudio.org/pskov/sample/02.Language/ru/about.html
  133. [lfsa]: http://opengamestudio.org/lfsa/ru
  134. [tool]: http://opengamestudio.org/pskov/ru/pskov_1.0.0+ru.html