Skip to content

Заполнено 53 623 пустых ячейки (машинный перевод по правилам проекта) - #2

Merged
K13or merged 1 commit into
K13or:mainfrom
Hwingard:bulk-translation-53k
Aug 7, 2026
Merged

Заполнено 53 623 пустых ячейки (машинный перевод по правилам проекта)#2
K13or merged 1 commit into
K13or:mainfrom
Hwingard:bulk-translation-53k

Conversation

@Hwingard

@Hwingard Hwingard commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Продолжение #1. Прогнал весь свободный остаток через локальные модели на своём сервере.

Что в PR

  • 53 623 заполненных пустых ячейки, 573 файла
  • Существующие переводы не тронуты: сверял побайтово с origin/main — 0 перезаписей, 0 очисток
  • validate.py: 0 ошибок в добавленных строках (проверено текущим линтером из e33f194)
  • 526 строк оставлены пустыми — не прошли проверку за три попытки, пусть лучше их сделает человек

Как переводилось

Основной проход — translategemma:27b (переводческая модель Google на базе Gemma 3) на двух RTX 5090, промпт собран из ваших правил: три формы склонений с родительным единственного во второй, префиксы до двоеточия, плейсхолдеры и теги дословно, канон терминов из GLOSSARY.md, запрет на самодельные топонимы и знаки ударения.

Отдельные приёмы, без которых не получалось:

  • многоабзацные строки переводились по абзацам и склеивались обратно — модель иначе схлопывает текст в один абзац (267 таких строк, структура сохранена);
  • склонения и род доведены вторым проходом через Qwen3.6 с явным правилом о склейке основы: Подар[ок|ка|ков], а не Подарок[|ки|ов];
  • часть дефектов чинилась детерминированно, без модели: переведённые движковые теги вида <Character name>, дубли слова внутри группы (эксперт[|экспертка]эксперт[|ка]), латинские буквы-двойники внутри русских слов.

Замечания по репозиторию

Два наблюдения, могут пригодиться:

1. ~1450 строк с выпавшими плейсхолдерами. В файлах встречаются строки вида Assist the refugees times. — с двойным пробелом там, где должен быть %num1%. Похоже на потерю при экспорте. Такие строки я не переводил (модель пыталась восстанавливать плейсхолдер по смыслу, что неверно). Судя по коммиту seams: не пускать шов внутрь плейсхолдера, вы этим уже занимаетесь.

2. dictionary.bin не содержит секций профильных словарей. Внутри только pn_names, pn_terms, pn_world_map. Из-за этого отключение дополнительных словарей в оверлее не возвращает английские названия предметов — отключать нечего, всё в общей секции. Для крафта и торговли это неудобно. Возможно, csv_to_bin.py не переносит dict_items_names и остальные профильные словари.

Что ещё могу дать

  • 1575 строк, собранных прокси во время игры, которых нет в репозитории (интерфейс, описания навыков, диалоги наставников) — сейчас переводятся, готов оформить отдельным PR;
  • слой имён собственных pn_names.csv на 19 875 строк из своего словаря.

Проверяйте, правьте — понимаю, что машинный перевод требует вычитки.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GcddpKjT9GNWSgG6ZF3CRK

… правил)

Переведены только пустые ячейки, существующие переводы не тронуты.
Модель translategemma:27b (специализированная переводческая, на базе Gemma 3)
на двух RTX 5090, с промптом по правилам проекта из README и GLOSSARY.
Многоабзацные строки переводились по абзацам — структура сохранена.
Склонения и род доведены вторым проходом через Qwen3.6.

validate.py: 0 ошибок в добавленных строках.
Строки, не прошедшие проверку за 3 попытки, оставлены пустыми (526 шт).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GcddpKjT9GNWSgG6ZF3CRK

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 16ee12fadc

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread new/new_094.csv
Comment on lines +436 to +438
Sorry... What should I do again?,"Я профессиональный переводчик-локализатор Guild Wars 2 на русский язык. Я перевожу строки игровых ресурсов. Важно соблюдать правила разметки, чтобы избежать ошибок в игре.

**Основные правила:**

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove prompt text from translations

This cell is not a translation of “Sorry... What should I do again?”; it embeds the localization prompt/instructions that were given to the model, so this dialog will show a long rules block to players instead of the intended line. I found the same class of generated explanation/prompt leakage at new/new_036.csv:39 and new/new_095.csv:373, so this batch should be scrubbed for prompt text and reasoning artifacts before merging.

Useful? React with 👍 / 👎.

Comment thread new/new_060.csv
"Giant drake...near the...dam... Someone, help!","Гигантский дрейк… недалеко от плотины… Кто-нибудь, помогите!"
Gibbs,Гиббс
"Gießerei-Überlebender[f:""Überlebende""]",Выживший из Литейной [Выжившая из Литейной]
Gift[s] of Aurene's Wisdom,Подарок[|ок|ка|ков] мудрости Аурене

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Normalize plural groups to three forms

For source strings with [s], the Russian plural group needs exactly the 1 / 2-4 / 5+ forms, but this added value has four alternatives: Подарок[|ок|ка|ков]. That cannot encode the required three variants and will produce malformed/wrong item names for non-singular counts; this same generated pattern appears in many added rows, so please grep for groups with three | characters and regenerate them.

Useful? React with 👍 / 👎.

Comment thread ui/ui_134.csv
Comment on lines +275 to +276
Soundtrack Single[s]—Janthir Wilds,"Саундтрек[|а|ов]: дикий край Джантир
"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove embedded newline from this item name

The source item name is a single line, but the added translation stores a newline and trailing space inside the quoted CSV field, so the dictionary will contain a two-line name for the Janthir Wilds soundtrack single. validate.py --warnings ui/ui_134.csv reports this row as an extra newline, and the value should be collapsed back to one line.

Useful? React with 👍 / 👎.

K13or added a commit that referenced this pull request Aug 7, 2026
…а основы

Два класса, которые validate.py не ловит.

Источник не английский — 10 237 строк. В колонке english батчей new_034+
лежит испанский, немецкий и французский; PR перевёл их как английские.
По README.md:135 такая строка остаётся пустой — переводы сняты.
Отсев взвешенный: маркера [f:"…"] мало, он есть и в английском
(God[f:"Goddess"] of WvW), а английские названия аддонов внутри испанских
строк тянут счёт не в ту сторону, поэтому вырезаются до подсчёта.

Склейка основы в плюрал-группе — 1 072 строки, из них 323 ушли вместе с
не-английскими. Оставшиеся 749 деградированы до единственного числа:
«союзника[|а|ов]» в игре даёт «союзникаа/союзникаов», линтер же видит три
формы и молчит. Все 749 записаны в BROKEN_PLURALS.csv с origin = PR #2.

Существующие переводы не тронуты: перезаписей 0, очисток 0, английская
колонка и число строк не менялись. Линтер после чистки — 362 ошибки,
набор побайтово совпадает с main.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@K13or
K13or merged commit 16ee12f into K13or:main Aug 7, 2026
K13or pushed a commit that referenced this pull request Aug 7, 2026
Строки собраны локализатором GlyphCore во время игры и отсутствуют
в батчах проекта: описания черт и навыков, элементы интерфейса,
системные сообщения, реплики наставников.

Переведены той же связкой, что и PR #2 (translategemma:27b + Qwen3.6
для сложного), с механической защитой разметки: краевые теги снимаются
и возвращаются вне модели, внутренние маскируются метками.

validate.py: 0 ошибок, 8 предупреждений.

Положил одним файлом — не стал угадывать, в какую категорию батчей
они относятся. Разложите как удобно.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GcddpKjT9GNWSgG6ZF3CRK
K13or added a commit that referenced this pull request Aug 7, 2026
Шапка разошлась с репозиторием: было 882 батча / 433 052 строки / 378 908
заполнено (87.5%), стало 884 / 434 608 / 423 850 (97.5%). Пустых 54 144 ->
10 758. Галочек проставлено 399 — это PR #2 добил батчи до 100%.

Две папки discovered заведены в доску вручную: stats.py --mark-done только
проставляет статус существующим строкам, новые файлы в таблицу не добавляет.
Подписаны с префиксом «Автозаполнение», чтобы не попасть в счётчик вычитки:
это машинный перевод, второй проход нужен.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
K13or added a commit that referenced this pull request Aug 7, 2026
Вычитка 744 строк вручную показала, что класс, объявленный на PR #2 закрытым,
закрыт не был: все 744 оказались немецкими и испанскими. Запись «убрано» в
DEFECTS.md была неверной и исправлена.

Немецкое Einsicht (обзорная площадка) переводилось как английское слово —
«Прозрение», «Эйнзихт», «Инсайт», «Зрение», по-разному в каждой строке.

Тот классификатор недобрал по двум причинам: немецкие служебные слова были
заданы с учётом регистра (Das, Der, Alle мимо), а короткие названия без
служебных слов и диакритики (Arma legendaria: Kudzu, Alijo fragmentado) не
ловились ничем.

Второй заход — по лексикону из самого корпуса, с затравкой из заведомо чужого:
10 237 снятых на PR #2 плюс 744 прочитанных. Снято 1 020 строк: 744
прочитанных плюс 276 с сильными признаками и нулём английских.

Осталось 631 со слабыми признаками — точность там около 87 %, вслепую чистить
нельзя. Полнота классификатора 71 %, так что остаток есть и за пределами этого
списка.

Ошибок 362 без изменений, новых предупреждений 0, ушло 30.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
K13or added a commit that referenced this pull request Aug 8, 2026
Пришло 58 859 строк набором dict_site_strings. Влито 27 836 в новую папку
site/ плюс 47 закрытых пустых ячеек в существующих батчах.

Воронка приёмки: минус 2 229 «перевод = оригинал», минус мусор ((453126)),
минус 16 877 уже переведённых у нас, минус 8 508 с не-английским источником,
минус 3 323 строки с ошибками линтера, минус 74 без единой кириллицы.
Дублей внутри файла не было ни одного.

Линтер на отсеянных дал 6 297 ошибок, почти все — нераскрытая плюрал-разметка:
в переводе остался литерал [pl:"Boxes"], в игре отрисовался бы со скобками.
Плюс 65 нарушений глоссария, 59 расхождений по плейсхолдерам.

Не-английский источник здесь в худшей форме, чем в PR #2: чужие строки не
переводили, а транслитерировали — «De caza por la tundra» превратилось в
«Де каза пор ла тундра».

Вычитки не было: в CLAIMS.md батчи подписаны «Автозаполнение» и из счётчика
вычитанного исключены. Качество машинное и линтеру не видно — «Good. Let's
fight.» стало «Хороший. Давайте бороться».

Ошибок линтера 362, как и было. Батчей 884 -> 940, строк 422 686 -> 450 522.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants