openspec(localize-i18n-ru): propose — русская локализация UI (i18n/ru.toml)
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-09-12
|
||||
@@ -0,0 +1,25 @@
|
||||
## Context
|
||||
|
||||
Проект dedinit.ru — Hugo Extended 0.165, тема rDedInit (форк PaperMod), язык ru-ru. Сейчас `i18n/` отсутствует, UI-строки темы отображаются английскими дефолтами PaperMod. См. proposal.md — Why.
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:**
|
||||
- Создать `i18n/ru.toml` с переводами всех ключей, используемых шаблонами rDedInit.
|
||||
- Русский UI без изменения разметки и контента.
|
||||
|
||||
**Non-Goals:**
|
||||
- Не переводим содержимое контента (посты).
|
||||
- Не добавляем мультиязычность (en/ru переключатель) — вне рамок задачи.
|
||||
|
||||
## Decisions
|
||||
|
||||
- **Формат TOML** (Hugo i18n) — стандарт Hugo, `ru.toml` рядом с другими локалями.
|
||||
- **Источник ключей**: извлечены из `themes/rDedInit/layouts/` — `home`, `next_page`, `prev_page`, `read_time`, `words`, `toc`, `code_copy`, `code_copied`, `edit_post`, `translations`; дополнительно стандартные ключи PaperMod (`search`, `page_not_found`, `archives`, `tags`, `categories`, `posted_on`, `continue_reading`, `min_read`, `newer`, `older`, `page`, `of`, `read_more`, `translations` и др.) для полноты — отсутствующий ключ Hugo просто не находит и ничего не ломает (fallback).
|
||||
- **Структура строки**: `[ключ]\nother = "перевод"` — Hugo i18n-формат (other — для языков без gender/plural).
|
||||
- **Проверка**: `make build` + grep в public/ на русские строки («Читать далее», «Теги», «Содержание»).
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- [Перевод строки, которую тема не использует] → Не навредит: Hugo игнорирует неиспользуемые ключи; лишние ключи просто расширяют словарь (fallback при будущих фичах темы).
|
||||
- [Ключ использован темой, но перевод терминологически неточен] → Быстрый фикс: правим одну строку в ru.toml; git-история позволит откатить.
|
||||
@@ -0,0 +1,23 @@
|
||||
## Why
|
||||
|
||||
Сайт dedinit.ru — русскоязычный блог (язык ru-ru), но в теме rDedInit (форк PaperMod) отсутствует файл `i18n/ru.toml`, из-за чего интерфейсные строки (кнопки, навигация, время чтения) показываются на английском по умолчанию. Это выглядит неаккуратно для русскоязычной аудитории.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Создать `i18n/ru.toml` с русскими переводами всех UI-ключей темы rDedInit (PaperMod).
|
||||
- Перевести строки: Home → «Главная», Read time → «Время чтения», Words → «слов», Table of Contents → «Содержание», Code copy → «Копировать код», Code copied → «Скопировано», Edit post → «Редактировать пост», Next → «Следующая», Prev → «Предыдущая», Translations → «Переводы», Search → «Поиск» (и др. стандартные ключи PaperMod).
|
||||
- Поведение сайта, разметка, контент — не меняются; это чисто интернационализация UI.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
- `i18n`: русская локализация интерфейса темы (ключи-переводы UI). Новая способность проекта «русская локализация UI».
|
||||
|
||||
### Modified Capabilities
|
||||
Отсутствуют — существующих spec в `openspec/specs/` не затронуто (site-rss не меняется).
|
||||
|
||||
## Impact
|
||||
|
||||
- Затронутые файлы: `i18n/ru.toml` (новый).
|
||||
- Не затрагивает: контент, шаблоны, деплой, RSS.
|
||||
- Откат (rollback): удалить `i18n/ru.toml` (или `git revert`) — сайт вернётся к английским строкам по умолчанию, как сейчас.
|
||||
@@ -0,0 +1,39 @@
|
||||
## Purpose
|
||||
|
||||
Обеспечивает русскоязычный интерфейс сайта dedinit.ru: все UI-строки темы (навигация, время чтения, код, пагинация) отображаются на русском языке для аудитории ru-ru.
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Русские UI-строки в i18n/ru.toml
|
||||
Система SHALL предоставлять файл `i18n/ru.toml`, содержащий русские переводы всех ключей интерфейса, используемых темой rDedInit (PaperMod): `home`, `next_page`, `prev_page`, `read_time`, `words`, `toc`, `code_copy`, `code_copied`, `edit_post`, `translations`, `search`, `page_not_found` и стандартные ключи PaperMod.
|
||||
|
||||
#### Scenario: Главная страница
|
||||
- **WHEN** пользователь открывает главную страницу сайта
|
||||
- **THEN** строка навигации «Home» отображается как «Главная»
|
||||
|
||||
#### Scenario: Время чтения статьи
|
||||
- **WHEN** пользователь открывает статью с временем чтения
|
||||
- **THEN** строка «X min read» отображается как «X мин чтения» (или эквивалент на русском)
|
||||
|
||||
#### Scenario: Оглавление
|
||||
- **WHEN** статья содержит оглавление
|
||||
- **THEN** заголовок оглавления отображается как «Содержание», а не «Table of Contents»
|
||||
|
||||
#### Scenario: Кнопки копирования кода
|
||||
- **WHEN** пользователь наводит на блок кода
|
||||
- **THEN** подсказка отображается как «Копировать код»; после копирования — «Скопировано»
|
||||
|
||||
#### Scenario: Пагинация
|
||||
- **WHEN** пользователь видит пагинацию списка постов
|
||||
- **THEN** ссылки отображаются как «Следующая» / «Предыдущая», а не «Next» / «Prev»
|
||||
|
||||
#### Scenario: Отсутствующий ключ
|
||||
- **WHEN** в теме используется ключ, отсутствующий в `i18n/ru.toml`
|
||||
- **THEN** сайт продолжает работать, отображая ключ по умолчанию из темы (Hugo fallback) — поведение не ломается
|
||||
|
||||
### Requirement: Фолбэк на английский при отсутствии перевода
|
||||
Система SHALL сохранять работоспособность сайта при отсутствии какого-либо ключа: Hugo отображает строку по умолчанию темы (английскую), сайт не падает и не ломает разметку.
|
||||
|
||||
#### Scenario: Нет ключа в ru.toml
|
||||
- **WHEN** в ru.toml отсутствует конкретный ключ
|
||||
- **THEN** Hugo использует значение по умолчанию из темы (английское) и сборка проходит без ошибок
|
||||
@@ -0,0 +1,10 @@
|
||||
## 1. Локализация
|
||||
|
||||
- [ ] 1.1 Создать каталог `i18n/` и файл `i18n/ru.toml` с переводами всех ключей темы (home, next_page, prev_page, read_time, words, toc, code_copy, code_copied, edit_post, translations) и стандартных ключей PaperMod (search, page_not_found, archives, tags, categories, posted_on, continue_reading, min_read, newer, older, read_more и др.) — проверить `ls i18n/ru.toml`
|
||||
- [ ] 1.2 Собрать сайт: `make build` — сборка проходит без ошибок (exit 0)
|
||||
|
||||
## 2. Проверка
|
||||
|
||||
- [ ] 2.1 Проверить в собранном public/ русские строки: `grep -r "Читать далее" public/ | head` и `grep -r "Содержание" public/ | head` — обе строки присутствуют в HTML
|
||||
- [ ] 2.2 Проверить пагинацию: `grep -r "Следующая" public/ | head` и `grep -r "Предыдущая" public/ | head` — присутствуют
|
||||
- [ ] 2.3 Закоммитить `i18n/ru.toml` и запушить в gitverse (origin main)
|
||||
Reference in New Issue
Block a user