Синхронизация английского перевода с актуальным русским источником#164
Синхронизация английского перевода с актуальным русским источником#164Dmitriy83 wants to merge 2 commits intovbondarevsky:masterfrom
Conversation
The English translation in src/en/ had drifted significantly behind the Russian source. The original EN was hand-written in 2021 (PR vbondarevsky#79) and got partial updates since, but many additions to the RU side never made it to EN — module rename, new exported methods, NewParameters fields, test data processor attributes, the entire "Translate configuration" docstring. This PR replaces src/en/ with a fresh regeneration from the current src/ru/ via EDT's dependent translation builder, post-processed by a dictionary + scripts that reproduce the style of the historical hand translation. Tooling and reproducibility steps live in a separate public repo: https://github.com/Dmitriy83/httpconnector-translations Highlights of what changed: Module-header docstring (CommonModule.HTTPConnector): - Copyright 2017-2021 -> 2017-2023 - Version: 2.3.1 -> 2.6.0 - First-line comment "Connector: handy HTTP-client for 1C:Enterprise 8 platform" now matches the current RU wording. Public API contract preserved (verified by api_schema.json + verify_api.py): - 42 exported methods, parameter names/defaults, and return-structure field names match the original 2021 hand translation. Verified automatically on every rebuild. - Single deliberate breaking change: StrStartsWith() wrapper is gone. Upstream RU source no longer wraps it; consumers must call the platform's StrStartWith() directly. Quality gates passed: - 0 residual Cyrillic identifiers in code (CODE) and doc comments (DOC) - 0 EDT validator errors after whitelisting two known false-positives (StrStartWith — EDT's platform dict ships the wrong alias; and Cyrillic-mirror modules used by EDT's translation tooling) - API schema drift: clean - Module-header literal drift (year/version): clean Pipeline highlights (full reproducibility steps in the translations repo): 1. EDT clean + LanguageTool translate RU -> dependent EN project 2. Cleanup orphan module directories left by dict renames 3. Module-header drift check (year/version literals in the .trans Description= blob — EDT freezes these and never auto-refreshes) 4. postbuild_patch.py — fix EDT residuals (platform aliases, HTTP verb literal case, Var_Key -> Key_, JSONDateWritingVariant enum path, etc.) 5. check_translated.py — residual Cyrillic detector 6. verify_api.py — API contract check 7. EDT validator with whitelist 8. Export to XML (10 files in src/en/) Diff size (10 files, +2357 / -2022 lines) is large because the full configuration was retranslated end-to-end. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The translation pipeline's camelcase dictionary contained an override utf8=UTF8 (introduced for TextEncoding.UTF8) that over-applied to the URL string literal in the test, rewriting /encoding/utf8 to /encoding/UTF8. The connectorhttp.ru server treats path components case-sensitively, so the response body did not contain the expected Russian sample text and the StrFind assertion returned 0 instead of 3931. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Связано с #97 |
|
@Dmitriy83 колоссальная работа! Спасибо! Я за то, чтобы все было тут, в этом репозитории. Предлагаю начать с правки тестов и тестовой среды, я это сделаю в ближайшее время. |
|
@leemuar договорились. По поводу LT: если вы с ним не работали ранее, то, возможно, стоит созвониться на 15-30 мин. (зум, гугл мит, или просто можно в чате где-то текстом), я кратко покажу. Документация по нему не самая исчерпывающая, к сожалению. Я также не эксперт в работе с этим инструментом, особенно в переводе модели. Но, наверное, смогу немного сократить время входа. Кроме того, нужно учитывать, что текущий перевод был выполнен не голым LT, а связкой LT (со словарем) + скриптовая постобработка. По объему подмен в коде LT отрабатывает примерно 99%, postbuild_patch.py доделывает оставшиеся специфические случаи, где словарь LT дает неправильный результат (неверные алиасы платформенных функций, регистр HTTP-методов в литералах, поля платформенных объектов с обратным порядком слов и т.п.). Весь пайплайн перевода работает хорошо с использованием агента ИИ (я использую Клод код). Именно он отвечал за написание скриптов постобработки и конечную верификацию дифа в пайплайне перевода. |
Что сделано
Английский перевод (
src/en/) полностью пересобран из текущего русского источника (src/ru/). Исторический ручной перевод (PR #79, 2021) с тех пор сильно отстал — за это время в RU добавились методы, изменились сигнатуры, переехали серверы тестов и т.д. Этот PR закрывает разрыв.Подход: не ручной перевод, а воспроизводимый pipeline на основе EDT LanguageTool (зависимый проект перевода). Все переводческие решения зафиксированы в словаре, post-build скрипты закрывают пробелы автогенерации, отдельный verifier охраняет публичный API от обратно-несовместимых изменений.
Как был сгенерирован EN
Pipeline и словарь живут в отдельной репе: https://github.com/Dmitriy83/httpconnector-translations
Ключевые компоненты:
dictionaries_en/— зависимый проект перевода EDT (~1200 CamelCase + ~600 single-word записей)scripts/pipeline/postbuild_patch.py— fixes остатков автогенерации (неправильные алиасы платформенных функций, регистр HTTP-методов, поля платформенных объектов с обратным порядком слов и т.д.)scripts/pipeline/verify_api.py+api_schema.json— контракт публичного API (42 экспорта), сверяется на каждой пересборкеCLAUDE.md— детальная техническая документацияСовместимость публичного API
Все 42 экспортируемых метода
КоннекторHTTP(имена, параметры, дефолты, поля возвращаемых структур) совместимы с историческим переводом.verify_api.pyпроходит без ошибок.Единственная намеренная несовместимость:
StrStartsWith(обёртка дляСтрНачинаетсяС) больше не экспортируется — после фикса EDT-валидатора используется напрямуюStrStartWith. В schema помечено"upstream_removed": true.Вопрос к владельцу: где хранить словарь?
Сейчас словарь живёт в отдельной репе. Возможные варианты:
Dmitriy83/httpconnector-translations, я буду присылать PR с обновлённымsrc/en/при изменениях в RU.dependent_translations/en/— удобнее, если ты сам хочешь регенерировать EN из EDT при правках RU. Нужен EDT 2026.1+ с плагином LanguageTool.Если (b) — могу подготовить отдельный PR с переносом.
Известные падения тестов
12 из 70 тестов падают, все по причинам тестовой среды, а не перевода:
connectorhttp.ruвозвращаетhttp://в JSON-теле ответа (тесты ждутhttps://).Test_Timeout("Internet error: Timed out"вместо"Timeout exceeded"),Test_CorrectExceptionInMethodAsJson(EN-платформа в сообщении JSON deserialization тело ответа не возвращает).connectorhttp.ru/redirect-to?url=https%3A%2F%2Fya.ru&status_code=301сейчас отвечает 400 (Test_PostAndRedirect).Те же тесты в RU-проекте, как я понимаю, ловят то же самое.