Заполнено 53 623 пустых ячейки (машинный перевод по правилам проекта) - #2
Conversation
… правил) Переведены только пустые ячейки, существующие переводы не тронуты. Модель 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
There was a problem hiding this comment.
💡 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".
| Sorry... What should I do again?,"Я профессиональный переводчик-локализатор Guild Wars 2 на русский язык. Я перевожу строки игровых ресурсов. Важно соблюдать правила разметки, чтобы избежать ошибок в игре. | ||
|
|
||
| **Основные правила:** |
There was a problem hiding this comment.
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 👍 / 👎.
| "Giant drake...near the...dam... Someone, help!","Гигантский дрейк… недалеко от плотины… Кто-нибудь, помогите!" | ||
| Gibbs,Гиббс | ||
| "Gießerei-Überlebender[f:""Überlebende""]",Выживший из Литейной [Выжившая из Литейной] | ||
| Gift[s] of Aurene's Wisdom,Подарок[|ок|ка|ков] мудрости Аурене |
There was a problem hiding this comment.
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 👍 / 👎.
| Soundtrack Single[s]—Janthir Wilds,"Саундтрек[|а|ов]: дикий край Джантир | ||
| " |
There was a problem hiding this comment.
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 👍 / 👎.
…а основы Два класса, которые 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>
Строки собраны локализатором 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
Шапка разошлась с репозиторием: было 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>
Вычитка 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>
Пришло 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>
Продолжение #1. Прогнал весь свободный остаток через локальные модели на своём сервере.
Что в PR
origin/main— 0 перезаписей, 0 очистокvalidate.py: 0 ошибок в добавленных строках (проверено текущим линтером изe33f194)Как переводилось
Основной проход —
translategemma:27b(переводческая модель Google на базе Gemma 3) на двух RTX 5090, промпт собран из ваших правил: три формы склонений с родительным единственного во второй, префиксы до двоеточия, плейсхолдеры и теги дословно, канон терминов изGLOSSARY.md, запрет на самодельные топонимы и знаки ударения.Отдельные приёмы, без которых не получалось:
Подар[ок|ка|ков], а неПодарок[|ки|ов];<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и остальные профильные словари.Что ещё могу дать
pn_names.csvна 19 875 строк из своего словаря.Проверяйте, правьте — понимаю, что машинный перевод требует вычитки.
🤖 Generated with Claude Code
https://claude.ai/code/session_01GcddpKjT9GNWSgG6ZF3CRK