EnglishУкраїнськаGitHub

Пайплайн локалізації

Мова: English · Українська

Відкривається Tools → Localization Pipeline…. Заголовок вікна: Localization Pipeline.

Діалог навмисно тонкий (ui/pipeline_wizard_dialog.py): власного пайплайну він не рахує. Кожна кнопка запускає той самий QAction, що й меню Tools. Кроки, які є цілими воркфлоу, вбудовуються в праву панель замість другого вікна.

Ліворуч: дерево кроків з іконкою статусу і лічильником. Праворуч: інструмент або пояснення плюс кнопка запуску. Внизу: Refresh і Close. Повернення у вікно перечитує проєкт через 250 мс.

Заголовок: Localization pipeline — N / M steps complete.

Іконка Стан (core/pipeline_status.py)
⚪ not started
🟡 partial
✅ done

Які кроки видно

steps_for(plugin.get_capabilities()). Порожня множина capabilities валідна: лишаються всі кроки, що працюють на витягнутому тексті. Крок з requires="…" з’являється лише якщо активний плагін оголосив це ім’я.

Визнані імена capabilities (з plugins/base_game_rules.py):

Capability Що має реалізувати плагін Ефект у майстрі
glossary_seed get_glossary_seed_entries() Сіє глосарій з даних гри
external_lore get_external_lore(term) Додатковий матеріал для describe
speaker_attribution get_speaker_for_string() Показує Name the speakers
message_window_preview хром вікна / пагінація Хром прев’ю (не крок майстра)

Twilight Princess (plugins/zelda_bmg) оголошує всі чотири. Default Plugin Template — жодної.


Кроки (як у коді)

Порядок у STEPS:

1. Mark up the script (markup)

Вбудовано: Script Markup Studio (Close сховано; Close хоста — у майстра).

Вокзру — проза. Розмітка каже, який рядок — спікер, який — репліка. Merge Speakers і Context Builder читають цей файл.

Статус: покриті approved-мітками ненульові рядки джерела, без типу Unmarked. «No script found for this game» і «script not marked up» — різні відповіді.

Робити: закінчити розмітку перед Merge Speakers. Не пропускати її в надії, що ALL-CAPS вгадає склад.

Деталі: 9. Script Markup.

2. Name the speakers (speakers) — дитина markup

Видно лише якщо в capabilities є speaker_attribution.

Кнопка: Merge speakers from the script → merge_speakers_action.

Гра групує рядки за голосом (Voice 8, імена placement). Скрипт має показувані імена. Крок з’єднує їх по тексту рядка (SpeakerMergeHandler.merge_from_script). Потрібен відкритий проєкт і get_speaker_for_string. Якщо рядків спікера в розмітці немає, може вгадувати з ALL-CAPS і попередити. Apply зберігає аліаси біля проєкту. Імена далі потрапляють у поле Speaker, віртуальні теки, промпти перекладу і сіди глосарія.

Статус: названі placeholder-коди / усі placeholder-коди, які плагін ще звітує.

Робити merge перед автопроходом глосарія, якщо персонажів треба сіяти під вирішеним ім’ям, а не CLERK_B. Не голосувати рядок скрипта на спікера плагіна System (TP: таблички, титри, вікна предметів, назви локацій, howling stones, картки босів).

3. Build the story context (context)

Вбудовано: MemePalace Context Builder (власні Close / Done сховані; Stop лишається, поки йде задача).

Копіює розмітку в MemePalace і прив’язує кожен ігровий рядок до місця в сюжеті.

Заголовок вікна MemPalace Context Builder. Вкладка 1. Source: Select project…, Import/Sync, Continue to Story Context →. Далі:

Кроки 2–3 потребують AI-провайдера. Вони не вигадують терміни глосарія і не замінюють Merge Speakers.

Статус: усе або нічого — “story context built”, якщо є шлях БД MemePalace, інакше “no story context yet”.

Без цього кроку переклад усе одно працює як «переклади це речення». З ним промпт може знати сцену.

Робити крок 1 перед timeline/voices. Не чекати голосів, поки рядки не зв’язані.

4. Prepare and enrich the glossary (glossary)

Вбудовано: Prepare Glossary (GlossaryPipelineHandler з target_step="auto").

Один автоматичний прохід:

  1. Посіяти терміни з даних гри (get_glossary_seed_entries) і персонажів Script Markup.
  2. Перейменувати сіди аліасами Merge Speakers (один голос на кількох персонажів стає кількома термінами, ніколи "A / B").
  3. Просканувати вибрані блоки проєкту на пропущені терміни.
  4. Зібрати описи з доступного контексту.
  5. Запропонувати варіанти перекладу.

Прохід не зупиняється на питаннях. Неоднозначності лишаються як AI-нотатки / черга review.

UI (режим auto):

Статус: порожньо → “automatic pass not run”; інакше N terms; M awaiting review (непідтверджені). Partial, поки черга review не порожня.

Ручний глосарій: Глосарій… / Ctrl+G. Те саме сховище. Має пряму кнопку «Force Retranslate...» (з автоматичним створенням бекапу glossary.json.bak) для примусового переперекладу всіх термінів за допомогою ШІ та оновлення варіантів на льоту. Коли завантажено референсний патч, сторонні референсні варіанти виділяються кольором (блакитний/курсив), захищені від випадкового застосування подвійним кліком та ізольовані в нотатках ШІ (з автоматичним контекстом з першого входження, якщо прямого варіанта немає).

Робити спочатку налаштувати AI (11, 5). Не вважати непідтверджені записи блокером для перекладу тексту.

Інші заголовки запуску в GlossaryBuildDialog для не-auto шляхів (Sweep Text with AI, Describe Glossary Terms, Build Glossary from Text) з глибинами:

Радіо Значення
Thorough (recommended) Sweep, потім describe з кожного входження
Draft (fast, rough) Один sweep; описи з першого побаченого; unconfirmed
Structural seed only (no AI) Лише таблиці гри + імена з розмітки
Augment existing entries Описати наявні терміни; без sweep
Translate existing entries only Запропонувати переклади для описаних, але ще не перекладених

Розмір чанка: Local / small (2000), Balanced (4000), Cloud / large (8000).

Як глосарій лишається узгодженим

Глосарії серії (спільні для ігор однієї серії)

Глосарії, спільні для кількох проєктів: гра (її проєкти GC і HD), покоління, ціла серія. Кожен — файл у форматі glossary.json (core/glossary/series.py). Проєкт має ланцюг таких файлів, від найближчого; глосарій проєкту має перевагу, далі ближчий рівень над дальшим.

5. Translate the text (text)

Має вбудовані кнопки запуску прямо на правій панелі майстра: - Translate Story First (Chronological): перекладає репліки основного сюжету в хронологічному порядку, тож сюжетний текст готовий першим. - Translate Remaining Blocks (Semantic & System): перекладає меню, крамниці та системний текст після сюжету, з тим самим глосарієм і контекстом рядка. - Run Full Pipeline (Story ➔ Semantic): автоматичний запуск повного мультиагентного конвеєра (спочатку сюжет, потім решта блоків).

Переклад також можна запускати з редактора (AI Translate, правий клік по виділенню, кнопка AI на головному тулбарі або пункт Tools → AI Batch Translation ➔).

Статус: непорожні рядки, чий поточний текст відрізняється від оригіналу. Рядки, залишені ідентичними (імена, числа), навмисно недораховуються.

Див. 11. AI-переклад.


Додаток: автоматичний прохід глосарію докладно

Звідки запускається. Tools → Prepare Glossary…, крок майстра Prepare and enrich the glossary і кнопка у вікні глосарію ведуть в один маршрут. Внутрішні режими (seed, thorough, augment, translate) лишилися як будівельні блоки; запускати їх по черзі нікому не треба.

Файли. Глосарій — <тека проєкту>/glossary.json. Поруч прохід тримає glossary.scan.json: відбитки вже оброблених блоків. Це службовий стан інкрементального обходу, а не другий глосарій.

Область. Якщо позначено лише частину проєкту, глобальні структурні записи без прив'язки до блоку в частковий прохід не підмішуються. Блок із незмінним вмістом повторно не обходиться; Re-scan every selected block with AI запускає довгий повний обхід і все одно не перезаписує підтверджене людиною.

Що об'єднується. Точний нормалізований збіг приєднується до наявного запису, не чіпаючи підтверджених перекладів та описів. Нечіткий збіг сам ніколи не об'єднує — пару показано людині для рішення.

У вікні глосарію дані розділено: Description (чистий підсумковий опис, що йде в переклад), Proposed variants (кандидати, кожен із поясненням), AI notes and unresolved choices (спостереження обходу, альтернативні переклади, докази того, хто цей персонаж, можливі дублікати), Occurrences.

Звіт після проходу показує залишок, а не «готово»: записи, що чекають перегляду, записи з кількома варіантами, записи без перекладу чи опису, можливі дублікати. Review glossary відкриває чергу; Continue in editor повертає до перекладу, навіть коли черга не порожня.

Ручна перевірка проходу (десять хвилин, два невеликі блоки):

  1. Запустіть прохід лише для двох блоків: seed → sweep → describe → translate ідуть без пауз.
  2. У вікні глосарію опис і AI-нотатки — у різних областях; неоднозначний термін має кілька варіантів із різними поясненнями.
  3. Запустіть ті самі блоки ще раз: нічого не обходиться. Змініть один рядок в одному блоці й повторіть: обходиться лише цей блок.
  4. Підтвердьте переклад вручну й повторіть: він лишається. Увімкніть повний re-scan: джерела перечитано, підтверджений запис усе одно лишається.

Рекомендований порядок

  1. Markup
  2. Merge Speakers (якщо в плагіна є speaker_attribution)
  3. Context Builder крок 1 (2–3 за бажанням)
  4. Prepare Glossary
  5. Перекладати в редакторі, з глосарієм + спікером + сценою в промпті

Кожен інструмент усе одно можна відкрити з Tools без майстра.


Чого не робити