Клод Переводчик
Это трубопровод, который работает www.conveythis.com сам по себе — 238-страничный сайт Astro, работающий на 55 языках. Мы извлекли его, задокументировали все виды отказов, которые нам пришлось обнаружить, и опубликовали все это. Это не пробный период и не тизер: нет ключа для покупки, нет квоты и нет учетной записи.
Два проектных решения
Как это работает
Два решения определяют это. Во-первых, переводы вставляются в созданный HTML с помощью смещения байтов, и документ никогда не сериализуется повторно из DOM —, поэтому встраиваются критически важные CSS, элемент LCP, хэши активов и width/height атрибуты, которые удерживают CLS, остаются нетронутыми. То есть почему Страницы локали соответствуют исходному языку Core Web Vitals, а не просто напоминают его. Во-вторых, единицей перевода является весь блок, а не текстовый узел, поскольку примерно пятая часть текстовых узлов типичного сайта разделена встроенной разметкой, а перевод фрагментов по отдельности нарушает грамматику любого языка, который меняет порядок или склоняется.
Результат скорее доказан, чем подтвержден: восемь шлюзов и исчерпывающий SEO-аудит каждой страницы, включая один шлюз, который существует исключительно потому, что показатели покрытия структурно слепы к ошибкам извлечения.
Проверка
Действительно ли это так?
Справедливый вопрос, и его можно проверить, а не верить нам на слово. doctranslator.com/fr — крупный сайт Astro, французские страницы которого были созданы с помощью этого конвейера. Сравните его с английским оригиналом, и наценка будет такой байт-идентичный:
2,743
теги в одинаковой последовательности
2,031
атрибуты класса, все совпадают
+0.74%
вес страницы — французский длиннее
Ничего структурно не изменилось, поэтому браузеру нечего выложить по-другому. Проверьте сами — это займет около десяти секунд:
curl -s https://doctranslator.com/ | grep -o 'class="[^"]*"' > en.txt
curl -s https://doctranslator.com/fr | grep -o 'class="[^"]*"' > fr.txt
diff en.txt fr.txt && echo "markup identical — only the text changed"И оценки
| Английский источник | Французский, из этого инструмента | A11y / Лучшие практики / SEO | |
|---|---|---|---|
| Рабочий стол | 100 | 100 | 100 / 100 / 100 |
| Мобильный | 98 | 98 | 100 / 100 / 100 |
Показатели эффективности PageSpeed Insights, измеренные 25 августа 2026 г. Доступность, лучшие практики и SEO были на 100% при каждом запуске обеих страниц в обеих стратегиях.
Это намеренно медианы. Рейтинги Lighthouse меняются: пять последовательных запусков одной и той же мобильной страницы на английском языке дали результаты 98, 98, 88, 98, 98, при этом краска с наибольшим содержанием колебалась между 1,8 и 3,2 с. Это дисперсия сети и CDN, а не качество страницы. Если вы измерите один раз и получите 91, вот почему — запустите его несколько раз и сравните два языка друг с другом, а не с числом на маркетинговой странице.
И язык
Идентичность разметки измерима. Есть ли испанский язык хороший это другой вопрос, и до версии 2.0 конвейер не имел на него ответа — тесты проверяли формы запросов и каркасы, и ничто не оценивало перевод.
node scripts/i18n/tqa.mjs --lang es --dry # sample size and cost, no API call
node scripts/i18n/tqa.mjs --lang es,fr,de # scorecard + per-locale JSON
node scripts/i18n/tqa.mjs --lang es --repeat # judge the same sample twiceОн оценивает стратифицированную выборку по типологии ошибок MQM по ее обычным весам — второстепенная 1, основная 5, критическая 10 — и взвешивает выборку по частоте появления каждой строки, поэтому заголовок, который все читают, учитывается более чем как разовая сноска. Три вещи не позволяют номеру быть декоративным:
- Судья — это другая модель, нежели переводчик
- Модели щедро оценивают свои результаты. Если второй ключ провайдера не настроен, он использует тот же ключ и сообщает об этом в запуске и отчете.
- Выборка засевается, и сообщается дисперсия
- Семя точно воспроизводит оценку;
--repeatдважды оценивает один и тот же образец и выводит пробел. Качественный номер, который никто не может получить повторно, указанный без шума, является маркетинговым номером. - Единица, которую судья не может оценить, исключается, не считается чистой
- Ранняя версия печатала 100,00 из 100 на основе выборки, в которой не удалось проанализировать каждую единицу. Теперь он вообще отказывается сообщать оценку по этому делу.
Читайте это как сравнение — между локалями, между моделями, до и после быстрого изменения — а не как оценку. Это оценка работы другой модели одной моделью, а не человеческий обзор, и об этом прямо говорится в отчете.
Решение третье
Терминология — это не выбор каждого предложения
Идентичные строки всегда были согласованы — единицы измерения имеют ключ в виде хеша исходного текста, поэтому переведенная один раз навигационная метка повторно используется на каждой странице и между запусками. Чего это не может сделать, так это удержать срок внутри различных предложений: “Панель управления” в двух разных абзацах — это два хеша, два пакета, два запроса без сохранения состояния, и ничто их не сравнивало.
[
{ "source": "Acme", "rule": "keep", "matchCase": true },
{ "source": "Dashboard", "rule": "translate",
"targets": { "es": "Panel de control", "de": "Übersicht" } }
]matchCase это ответ на вопрос, который нам задали напрямую: может ли он сказать Яблоко компания из яблоко фрукты? Плоский список имен не может этого выразить. Правила, учитывающие весь текст и регистр, могут.
| источник | испанский | почему |
|---|---|---|
| Apple анонсировала устройство | Apple объявляет о диспозитиве | заглавная буква A — защищена и теперь проверена |
| Яблоко в день | Уна мансана аль диа | строчные буквы — переводятся нормально |
| Яблочное пюре продается | La compota está en oferta | целое слово — никогда не совпадает внутри более длинного слова |
В том же выпуске сообщается о модели что такое строка. Раньше он получал только текст и ничего больше, поэтому метка кнопки и абзац основного текста были неразличимы—, что делало собственную инструкцию подсказки о том, чтобы метки кнопок были короткими, невыполнимой. А <button>, заголовок, метка формы и метаописание теперь говорят об этом.
Он намеренно не требует императива для кнопок: немецкий пользовательский интерфейс предпочитает отглагольное существительное, а французский - инфинитив, поэтому он требует любой конструкции, которую язык на самом деле дает кнопке. Названия брендов, которые вы уже перечислили, автоматически складываются в соответствии с правилами хранения с учетом регистра, что также помещает их под контроль, проверяющий их сохранность. Раньше это ничто не проверяло.
Местные конвенции
Номера локализуются. Цены никогда не конвертируются.
Написание 1,234.56 для немецкого читателя это один из самых заметных признаков машинного перевода. Модели ненадежны при соглашениях о разделителях, поэтому модели предлагается оставить числа в покое и Intl впоследствии детерминированно переформатирует их.
| источник | становится | где |
|---|---|---|
| 1,234.56 | 1.234,56 | де |
| 1,234.56 | 1 234,56 | фр |
| $5 | 5,00 $США | fr — размещение и интервал, а не количество |
| 50% | 50 % | fr — с неразрывным пробелом |
Он форматирует. Он никогда не конвертируется.
нет опции конфигурации для негоЦена — это коммерческое обязательство, и конвертация его по ставке, заложенной в сборку — устаревшей на следующий день после написания — — это то, как инструмент перевода начинает публиковать неверные предложения на рынках, за которыми никто не следит. Вместо этого каждая найденная денежная сумма записывается в отчет, поэтому человек сознательно оценивает каждый рынок.
Шлюз числовой целостности подтверждает это, не выполняя сборку, если число ценить изменения между источником и переводом. Модель, которая тихо отправляется $39 где источник сказал $49 проходит все остальные проверки: одинаковая разметка, совпадающие заполнители, правдоподобная длина, свободное владение испанским языком.
Намеренно оставлены в покое: номера версий, время, IP-адреса, даты ISO, номера телефонов и любые негруппированные номера — в процессе разработки жадный шаблон превратился 192.168.1.1 в 1.921.681,1, и этот случай теперь является испытанием. Один результат, который выглядит как ошибка, но на самом деле таковым не является: испанский язык не группирует четырехзначные числа, поэтому 1,234.50 правильно 1234,50 в es и 1.234,50 в de.
Честная маршрутизация
Какой из них вам на самом деле нужен?
Статическая замена и уровень времени выполнения решают различные проблемы. Выбор неправильного варианта обойдется вам в выходные, поэтому вот честный выбор.
У вас есть статическая сборка, контент меняется с частотой выпуска, и вы хотите полностью владеть HTML.
Клод Переводчик
Бесплатно, самостоятельно размещено, AGPL-3.0. Ваш собственный ключ API, ваши собственные файлы, никакой учетной записи.
Посмотреть на GitHub →Ваш контент меняется ежедневно, находится в CMS, создается пользователями или находится за входом в систему или оформлением заказа.
ConveyThis
Управляемый уровень времени выполнения. Никаких этапов сборки, никаких повторных запусков при каждом редактировании, визуальный редактор и человеческий обзор.
См. цены →Вам нужно перевести документы, а не страницы — PDF, DOCX, XLSX, PPTX.
DocTranslator
Сохранены целые файлы, макет и таблицы, 100+ языков.
Перейти к DocTranslator →Быстрый старт
Установите его
Репозиторий
https://github.com/ConveyThis/claude-translator
AGPL-3.0 · Узел ≥ 20 · одна зависимость (parse5) · открыть на GitHub →
Вам нужно
- Node.js 20 или новее
- Сайт, построенный на статическом HTML — он считывает выходные данные вашей сборки, а не ваш источник
- Ключ API для любой выбранной вами модели — или вообще нет, если вы запустите его локально
Как навык Клода Кода
Клонируйте его в свой каталог навыков, а затем попросите Клода локализовать сайт. Он следует прилагаемым инструкциям, включая режимы отказов, поиск которых обходится нам в реальные деньги —, а также правила, когда это совершенно неправильный инструмент.
git clone https://github.com/ConveyThis/claude-translator.git \
~/.claude/skills/claude-translatorВ любом проекте
Одна команда. init копирует конвейер в scripts/i18n/, пишет конфигурацию, объявляет parse5 и добавляет производное i18n/ пути к вашему .gitignore. Он никогда ничего не перезаписывает без --force, и он печатает каждый файл, к которому прикасался.
cd your-project
npx claude-translator init
npm install # parse5, the only dependencyСкрипты попадают в ваш репозиторий, а не остаются там node_modules намеренно — они определяют пути из проекта, в котором находятся, они достаточно короткие для чтения, и лицензия существует, поэтому вы можете их изменить.
Установка без npx
git clone https://github.com/ConveyThis/claude-translator.git
cp -r claude-translator/scripts your-project/scripts/i18n
cp claude-translator/i18n.config.example.json your-project/i18n.config.json
cd your-project && npm install --save-dev parse5Настроить
Наименьшая запущенная конфигурация. buildDir это место, где ваш генератор пишет HTML; baseUrl это ваше каноническое происхождение, без завершающей косой черты.
{
"buildDir": "dist",
"baseUrl": "https://example.com",
"provider": "anthropic",
"glossary": "glossary.json",
"locales": [
{ "hreflang": "es", "pathCode": "es", "nativeLabel": "Español" },
{ "hreflang": "de", "pathCode": "de", "nativeLabel": "Deutsch" }
]
}echo "ANTHROPIC_API_KEY=your-key-here" >> .env # and gitignore itЗапустите его
| npm запустить сборку | ваша обычная сборка — только исходный язык |
| сценарии узлов/i18n/extract.mjs | найдите каждую переводимую единицу |
| скрипты узлов/i18n/translate.mjs --lang es,fr | перевести в память |
| сценарии узлов/i18n/build-locales.mjs --lang все | напишите локализованные страницы |
| скрипты узлов/i18n/verify.mjs --lang все | восемь ворот — выходы ненулевые при сбое |
| скрипты узла/i18n/audit-seo.mjs | канонические, hreflang, JSON-LD, карты сайта |
| скрипты узлов/i18n/tqa.mjs --lang es --dry | опционально — оценка качества MQM, стоимость прежде всего |
Затем разверните каталог сборки точно так же, как вы развернули его сегодня — локализованные страницы — это обычные файлы, расположенные рядом с вашими существующими. Полные варианты, каждый вид отказа и обоснование каждого проектного решения приведены в README.
Модели
Принесите свою собственную модель — включая местную
Этап перевода взаимодействует с моделью через небольшой адаптер, и с ним поставляются три: Claude (по умолчанию), Gemini и любая конечная точка, совместимая с OpenAI. Последний охватывает большую часть области — OpenAI, Azure, Groq, DeepSeek, Mistral, OpenRouter, Together, Fireworks—, а также охватывает Ollama, LM Studio и vLLM.
Это означает, что три строки конфигурации запускают весь конвейер на вашем собственном оборудовании:
{
"provider": "openai",
"apiBaseUrl": "http://localhost:11434/v1",
"model": "qwen2.5:14b"
}Ни ключа, ни квоты, и ничего не покидает машину — что имеет значение, если контент конфиденциальен. Все, чего нет в этом списке, представляет собой файл адаптера с двумя функциями.
Пределы
Где останавливается бесплатный инструмент
Шесть реальных ограничений. Ни одна из них не является ограниченной функцией — они являются формой подхода, и скрипты сообщают вам, когда вы достигаете одной из них, а не тихо терпят неудачу.
- Увлажнение на стороне клиента
- Острова и полезные нагрузки фреймворка повторно отображаются в браузере поверх замененного HTML. Экстрактор подсчитывает затронутые страницы, поэтому вы узнаете об этом за считанные секунды, а не после полного запуска.
- Документы
- Связанные PDF-файлы, DOCX и XLSX остаются на исходном языке — конвейер всегда касается только HTML.
- Отстой
- Память имеет ключ исходного хеша, поэтому она может сообщить вам, какая доля вашего сайта изменилась с момента последнего запуска. Высокий отток означает необходимость платить за повторный перевод, причем неоднократно.
- Редактирование перевода
- Найдите хэш в файле памяти, отредактируйте строку, восстановите. Нет редактора, нет рецензента и нет рабочего процесса.
- Объем
- Вы платите своему поставщику модели напрямую, по его тарифу, своим собственным ключом — или вообще ничего, если вы запускаете модель самостоятельно.
- Измененное использование сети
- AGPL-3.0 §13 обязывает вас публиковать изменения, если вы используете измененную копию в качестве услуги для других людей. Запуск его без изменений или с внутренними изменениями не имеет ограничений.
Первые четыре — это те, по которым люди действительно бьют, и все они имеют одинаковую форму: что-то должно произойти после сборка, которую инструмент времени сборки сделать не может. Именно для этого и предназначен управляемый продукт, и бесплатный план это 5000 слов без карточки, чего достаточно, чтобы узнать, помогает ли это. Вам это не нужно, чтобы использовать что-либо на этой странице.
Атрибуция
Что он размещает на ваших страницах
Локализованные страницы несут a <meta name="generator"> тег и один HTML-комментарий с именем ConveyThis — около 150 байт, без запроса, без скрипта и нет ссылки. Это тот же механизм, который используют Astro, Hugo и WordPress. Два ключа конфигурации удаляют его, и ничто в репозитории не проверяет, сделали ли вы это.
Если вы предпочитаете показать видимый кредит, установите credit.visibleLink к true и разместите слот там, где вы хотите, на странице. От вас ничего за это не просят и ничего не дают взамен — это существует потому, что некоторые люди хотят отдать должное инструментам, которые они используют, и ни по какой другой причине.
Кредитная ссылка rel="nofollow", намеренно. Не потому, что это платно — это не так —, а потому, что это ссылка, которую в противном случае скрипт сборки добавил бы на каждую страницу сайта, а ссылки на весь сайт, которые появляются с помощью инструментов, а не редакционного выбора, - это форма, на которую нацелено руководство Google по схеме ссылок. Стоит реферального трафика, а не обратных ссылок — любой, кто говорит вам обратное, продает вам штраф.
Коммерческая лицензия
Код — AGPL-3.0. Локализация собственных сайтов и отправка результатов не ограничены — лицензия распространяется на программное обеспечение, а не на HTML, который оно пишет. Он кусается только если вы запускаете измененный копировать как сетевой сервис для других людей. Если это про вас и вы не можете опубликовать свои изменения, напишите нам [email protected].
Вопросы
Вопросы, которые люди на самом деле задают
Это действительно бесплатно? В чем подвох?
Нужна ли мне учетная запись ConveyThis?
Сколько на самом деле стоит пробег?
Могу ли я использовать свою собственную модель или запустить ее полностью в автономном режиме?
Будут ли переведенные страницы медленнее оригиналов?
Работает ли это с моим фреймворком?
А как насчет компонентов React или островов Astro, которые гидратируются?
Может ли он сохранить единообразие моей терминологии и отличить название бренда от обычного слова?
Я уже им пользуюсь. Что изменится, когда я обновлюсь до версии 2.0.0?
Могу ли я исправить перевод, который мне не нравится?
Что происходит, когда я редактирую страницу или добавляю новую?
Будут ли переведенные страницы индексироваться Google?
Могу ли я использовать его в коммерческих целях? Что для меня означает AGPL-3.0?
Требуется ли указание авторства ConveyThis?
Чем это отличается от самого ConveyThis?
Перевод, гораздо больше, чем просто знание языков, это сложный процесс.
Следуя нашим советам и используя ConveyThis , ваши переведенные страницы найдут отклик у вашей аудитории, чувствуя себя родными для целевого языка.
Хотя это требует усилий, результат приносит удовлетворение. Если вы переводите веб-сайт, ConveyThis может сэкономить вам часы с помощью автоматизированного машинного перевода.
Начните с ConveyThis на нашем бесплатном плане — кредитная карта не требуется!
