Home for the Kraiany projects
Це репозиторій домашньої сторінки НПО Краяни, Громади українців в Японії. Сторінка в інтернеті опублікована за адресою www.kraiany.org
Якщо ви хочете додати щось до сторінки Краян:
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that we can review your changes
Локалізація сторінки -- це переклади і відображення сторінки кількома мовами (українська, японська, англійська в нашому випадку).
Локалізація в цьому проекті може здійснюватися одним із двох способів:
-
Для переважно текстових файлів, у яких відносно небагато HTML форматування, файли перекладаються цілком. При цьому, мовні версії файлів записуються з різними назвами файлів, у яких відрізняється тільки позначка мови. Назви файлів повинні відрізнятися розширенням мови файлу (
en
,ja
чиuk
відповідно для англійської, японської чи української) Для визначення мови використовується розширення файлуen
,ja
чиuk
(2020-01-22-ja-file.html
,2020-01-22-en-file.html
,2020-01-22-uk-file.html
). Форматування файлів в цьому випадку має бути ідентичним, тільки текстовий матеріал різний.Структура назви файлу повинна бути відповідною до:
<ДАТА-У-ФОРМАТІ-РІК-МІСЯЦЬ-ДЕНЬ>-<МОВА>-<НАЗВА>.html.markdown
За приклад, можна взяти вже існуючі файли перекладів:
2019-11-25-en-costume-2019.html.markdown
2019-11-25-ja-costume-2019.html.markdown
2019-11-25-uk-costume-2019.html.markdown
- Для сторінок, багатих на HTML форматування і з відносно невеликим
об'ємом тексту, використовується переклад тектсових фрагментів. Для
позначення текстових фрагментів для перекладу використовуються
позначки-етикетки з використанням функції
t()
(скорочене відtranslate
), а для перекладу кожною мовою використувуються текстові фрагменти з структурованих файлів YAML.
В цьому випадку використовується база даних перекладів у файлах типу YAML. YAML — це структурований формат. Опис формату можна знайти на вікіпедії.
Приклад локалізації (файл index.html.slim
):
p = t "kraiany.about"
h2
= link_to t("festival.festival"), "/festival", class: "btn btn-white"
= link_to t("parade.parade"), "/#{locale}/parade.html", class: "btn btn-white"
= link_to t("news.news"), "/#{locale}/news.html", class: "btn btn-white"
В цьому прикладі:
-
Все, що є аргументом функції
t()
перекладається, використовуючи як базу файли YAML. У наступних прикладахt("festival.festival")
,t("parade.parade")
замістьfestival.festival
таparade.parade
буде відповідно вставлено переклад однією з трьох мов.Примітка: Інколи дужки функції
t()
можна опускати, як, наприклад у випадкуt "kraiany.about"
є тим же самим, що іt("kraiany.about")
. -
Файли перекладів знаходяться в каталозі
locales/
у файлах типу YAML, (наприклад:parade.yml
, абоen.yml
,jp.yml
,uk.yml
). -
Переклади знаходяться у структурованому тексті YAML. Наприклад, для перекладу
festival.festival
з файлуlocales/(en,uk,jp).yml
(в залежності від активної на даний момент мови), вибереться значення такої структури:"(мова) -> festival -> festival"
Приклад англійського перекладу:
en: <--- мова
[...]
festival: <--- перший аргумент
festival: Festival <--- другий аргумент і значення
Японський файл перекладів
ja: <--- позначка мови
email: メールアドレス <---- перший відступ (2 пробіли)
subscribe: 登録する
receive_information: 今後のイベントの情報を受け取る
festival:
festival: フェスティバル <--- другий відступ (4 пробіли), аргумент і значення
Переклади текстових фрагментів файлів знаходяться у кількох різноманітних файлах. В залежності від того, яку сторінку ви збираєтеся локалізувати або ж додати свою власну сторінку з перекладами трьома мовами, вам потрібно знати розташування цих файлів (з часом ця структура може змінюватися).
locales/kraiany.yml
-- загальна інформація про Краяни: назва, коротка інформація, тощо.locales/parade.yml
-- текстові фрагменти, використані в об'явах про паради вишиванокlocales/news.yml
-- розділ новин сторінки- файли
locales/uk.yml
,locales/en.yml
,locales/jp.yml
-- різноманітні текстові фрагменти, що використовуються в навігації на сторінці та в меню.
This project uses GihubPages for hosting final, parsed site. The way Github pages work sets how branches are used in this project.
-
master
branch -- main branch to submit PR's, testing and source of the deployment. -
gh-pages
branch -- generated HTML, CSS, JS code.
Merge of the PR to master
branch triggers automated testing and
deploy of the master branch.
Workflow of the deployment is as follows:
Travis Final
PR deploy site
[USER BRANCH] --> [`master`] -------> [`gh-pages`]
Simpler setup using Docker.
docker build -t kraiany .
docker run -it --rm -v $(pwd):/app --name kraiany -p 4567:4567 kraiany
# In separate terminal
docker exec -it kraiany bundle install
docker run -it --rm -v $(pwd):/app -p 4567:4567 kraiany
open http://localhost:4567
Deploy is done via github actions. To deploy production:
- create PR
- check build status (optional)
- merge to master
To build site locally with debug output:
docker run -it --rm -v $(pwd):/app kraiany build --verbose