Localization stages 2-3: drafts, publishing, translation editor
- games.main_version_id, version visibility (draft/published) and kind
(original/translation/mod), version_history; migration 0002
- permissions translations.edit and versions.publish
- "Translate" creates a translation draft; publishing merges the changed
languages into the main version in place (players keep their saves), the
previous manifest goes to the history and can be restored
- translation API: overview with per-state stats, entries with filters,
search and scene context, save, glossary, locale font, PO/CSV export/import
- translation editor page: languages and progress, lines and strings,
filters, autosave, approve/outdated/fuzzy actions, glossary highlighting,
"play from here" with the scene restored
- player: ?lang= and ?at= from the editor, per-locale font
(models.py and permissions.py for this landed earlier in 9ee3e1f)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4e047f3aa0
commit
ac164d1782
20 files changed
+2039
-298
No files matched your search
@@ -164,6 +164,37 @@ translate russian strings:
|
||||
авторы ещё не перевели, а ~750 блоков на язык относятся к уже изменённым
|
||||
английским репликам. Ren'Py их тоже не показывает.
|
||||
|
||||
Этапы 2 и 3 сделаны:
|
||||
|
||||
* у игры есть главная версия (`games.main_version_id`), у версий —
|
||||
`visibility` (`draft`/`published`) и `kind` (`original`/`translation`/`mod`);
|
||||
миграция `0002` проставила главную версию существующим играм;
|
||||
* права `translations.edit` и `versions.publish`, у системной роли
|
||||
moderator они включены;
|
||||
* кнопка «Перевести» создаёт черновик-форк вида «перевод», «Опубликовать»
|
||||
вливает изменённые языки **в саму главную версию**: её ID не меняется,
|
||||
сохранения игроков остаются. Прежний манифест пишется в `version_history`
|
||||
(`GET /api/versions/{id}/history`, откат —
|
||||
`POST …/history/{hid}/restore`);
|
||||
* редактор перевода `/versions/{id}/translate`:
|
||||
* языки с прогрессом по состояниям, реплики и строки (имена, меню, текст
|
||||
на экране);
|
||||
* фильтры «к работе / не переведено / устарело / неточно / машинный /
|
||||
переведено / одобрено», поиск, фильтр по файлу скрипта;
|
||||
* автосохранение, Ctrl+Enter — к следующей строке;
|
||||
* кнопки «одобрить» (только у публикующих), «актуально» для устаревших,
|
||||
«неточно», «скопировать оригинал»;
|
||||
* контекст строки: фон сцены, соседние реплики, «играть отсюда»
|
||||
(`/play/{id}?at=<узел>&lang=<язык>`, картинка сцены восстанавливается);
|
||||
* глоссарий с подсветкой терминов в оригинале;
|
||||
* экспорт и импорт PO/CSV, шрифт для языка;
|
||||
* API: `GET/PUT /api/versions/{id}/i18n[/{lang}]`, `…/entries`, `…/meta`,
|
||||
`…/font`, `…/export`, `…/import`, `DELETE …/{lang}`.
|
||||
|
||||
Пока не сделано: UI истории версии (сейчас есть только API), картинки и
|
||||
озвучка для отдельного языка, правка реплик прямо в плеере, машинный
|
||||
предперевод (заложено только состояние `machine`).
|
||||
|
||||
Уже сконвертированные версии остаются без ID и без переводов, их нужно
|
||||
переимпортировать. Пока в библиотеке только тестовые данные, отдельную
|
||||
миграцию не делаем.
|
||||
|
||||
Reference in new issue
Block a user