Открытый исходный код

Клод Переводчик

Статическая локализация сайта — перевести созданный сайт на десятки языков в виде настоящих статических страниц, не перерисовывая его и не нарушая основные веб-показатели. Бесплатный, самостоятельный, AGPL-3.0.
Нет аккаунта Никакого API-ключа от нас Работает и на локальной модели

Посмотреть все функции

Это трубопровод, который работает 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
Рабочий стол100100100 / 100 / 100
Мобильный9898100 / 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 на основе выборки, в которой не удалось проанализировать каждую единицу. Теперь он вообще отказывается сообщать оценку по этому делу.

Читайте это как сравнение — между локалями, между моделями, до и после быстрого изменения — а не как оценку. Это оценка работы другой модели одной моделью, а не человеческий обзор, и об этом прямо говорится в отчете.

Решение третье

Терминология — это не выбор каждого предложения

Идентичные строки всегда были согласованы — единицы измерения имеют ключ в виде хеша исходного текста, поэтому переведенная один раз навигационная метка повторно используется на каждой странице и между запусками. Чего это не может сделать, так это удержать срок внутри различных предложений: “Панель управления” в двух разных абзацах — это два хеша, два пакета, два запроса без сохранения состояния, и ничто их не сравнивало.

глоссарий.json
[
  { "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.561.234,56де
1,234.561 234,56фр
$55,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 это ваше каноническое происхождение, без завершающей косой черты.

i18n.config.json
{
  "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.

Это означает, что три строки конфигурации запускают весь конвейер на вашем собственном оборудовании:

i18n.config.json
{
  "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].

Вопросы

Вопросы, которые люди на самом деле задают

Это действительно бесплатно? В чем подвох?
Это весь трубопровод под AGPL-3.0, и обычного улова нет. Вам не нужна учетная запись ConveyThis, ключ от нас и квота. Мы создали его для локализации conveythis.com на 55 языках и опубликовали то, что используем. Честная цена заключается в том, что вы управляете им самостоятельно: вы платите своему поставщику моделей, размещаете результаты, и за этим нет службы поддержки.
Нужна ли мне учетная запись ConveyThis?
Нет. Ничто в инструменте не проверяет его, не звонит домой и не сообщает об использовании. Единственный след нас — это тег генератора и HTML-комментарий на страницах, которые он пишет, а два ключа конфигурации удаляют их.
Сколько на самом деле стоит пробег?
Вы платите своему поставщику моделей напрямую. По умолчанию (Claude Haiku 4.5) маркетинговый сайт среднего размера, содержащий около 150 000 уникальных исходных слов, стоит около 30 долларов США на 20 языках. Замена одного ключа конфигурации на Gemini Flash Lite обойдется примерно в 2,40 доллара. Направив его на модель на собственном компьютере, вы получите свободу действий. Дедупликация важнее выбора провайдера: повторяющиеся верхние и нижние колонтитулы, а также навигация сводятся к одной единице каждая, что обычно сокращает расходы на порядок.
Могу ли я использовать свою собственную модель или запустить ее полностью в автономном режиме?
Да. Адаптеры поставляются для Claude, Gemini и любой конечной точки, совместимой с OpenAI—, которая охватывает OpenAI, Azure, Groq, DeepSeek, Mistral, OpenRouter, Together и Fireworks, а также Ollama, LM Studio и vLLM. Установите apiBaseUrl на локальный сервер, и весь конвейер будет работать на вашем оборудовании без ключа и без запроса, покидающего машину. Это важно, когда контент конфиденциальен. Все, чего нет в этом списке, представляет собой файл адаптера с двумя функциями.
Будут ли переведенные страницы медленнее оригиналов?
Нет, и это проектное решение, на котором основан весь проект. Каждая страница локали является исходной страницей с присоединенными диапазонами байтов; документ никогда не сериализуется повторно из DOM. Встроенный критический CSS, элемент LCP, хэши ресурсов, а также атрибуты ширины и высоты, которые удерживают сдвиг макета, сохраняются нетронутыми, поэтому страницы локали соответствуют исходному языку в Core Web Vitals, а не приблизительно напоминают его. Атрибуция добавляет около 150 байт и не делает сетевых запросов.
Работает ли это с моим фреймворком?
Все, что генерирует статический HTML: Astro, Next.js с экспортом выходных данных, Hugo, Eleventy, Jekyll, Gatsby или рукописный HTML. Он считывает выходные данные вашей сборки, а не исходный код, поэтому фреймворк в большинстве случаев не имеет значения. Примечания по каждому генератору в references/adapting-generators.md охватывают исключения, основным из которых является гидратация.
А как насчет компонентов React или островов Astro, которые гидратируются?
Они повторно отображаются в браузере поверх того, что было заменено в HTML, поэтому текст возвращается к исходному языку. Статическая замена не может их достичь. Экстрактор подсчитывает страницы, содержащие полезную нагрузку гидратации, и сообщает вам об этом до того, как вы что-либо потратите, поэтому вы узнаете об этом за считанные секунды, а не после полного запуска. Если большая часть вашего контента находится внутри гидратированных компонентов, то правильным инструментом будет слой времени выполнения, и ConveyThis — это именно он.
Может ли он сохранить единообразие моей терминологии и отличить название бренда от обычного слова?
Да, начиная с версии 2.0.0. Идентичные строки всегда были согласованы, поскольку единицы измерения были закодированы с помощью хеша исходного текста, но термин внутри различных предложений вообще не имел никакого механизма. Файл глоссария теперь закрепляет термины для каждой локали, а правила могут быть чувствительны к регистру и содержать целые слова: Apple — компания защищена, а apple — фрукт переведено, и ни одно из них не совпадает с Applesauce. Названия брендов, которые вы уже перечислили, автоматически складываются, и контрольный шлюз проверяет, действительно ли они пережили перевод, чего раньше ничего не делало. Модели также сообщается, что представляет собой каждая строка, поэтому метка кнопки, заголовок и метаописание больше не являются для нее неразличимыми.
Я уже им пользуюсь. Что изменится, когда я обновлюсь до версии 2.0.0?
Ничего не переводится. Единичные хэши вычисляются только на основе исходного текста, поэтому существующая память переводов не становится недействительной, и перед выпуском это проверялось на соответствие приспособлению. Два изменения поведения действительно имеют место, и оба преднамеренные в основной версии: форматирование номеров локалей включено по умолчанию, поэтому перестройка переформатирует числа в вашем выводе, а новый вентиль числовой целостности не выполняет сборку, если число изменило значение между источником и переводом. Стоит прямо заявить об одном предостережении: этапы, добавленные в 2.0.0, не имели масштабного запуска в реальном времени против хостингового провайдера. Под ними находится конвейер conveythis.com на 55 языках; дополнения были проверены офлайн, с помощью фикстур и локальной модели.
Могу ли я исправить перевод, который мне не нравится?
Да, вручную. Найдите хэш строки в i18n/tm/{lang}.json, отредактируйте текст, восстановите. В бесплатном инструменте нет редактора, рецензента и рабочего процесса утверждения — это реальный предел, а не урезанная функция. Если вам нужен визуальный редактор или профессиональный человеческий обзор, именно это и предоставляет платный продукт.
Что происходит, когда я редактирую страницу или добавляю новую?
Память переводов имеет ключ, состоящий из хеша исходного текста, поэтому повторный запуск переводит только то, что изменилось, и повторно использует все остальное — обычно центы. Зафиксируйте i18n/tm/{lang}.json; это актив, и его удаление означает оплату полного повторного перевода. Если ваш контент меняется ежедневно, арифметика перестает отдавать предпочтение этому подходу, и инструмент сообщает вам скорость оттока, чтобы вы могли это предвидеть.
Будут ли переведенные страницы индексироваться Google?
Это настоящие статичные страницы, так что да. Читайте то, что он делает, как исправленное, а не созданное, потому что именно это различие сохраняет байт разметки идентичным: он перезаписывает значения тегов, которые уже выдает ваш шаблон. Каждая страница локали содержит правильный HTML-язык и каталог, канонический, x-default и исходный язык hreflang с самоссылкой, указывающий на оригинал, og:url и og:locale, JSON-LD для каждой локали с правильным @id и inLanguage, а также внутренние ссылки с префиксом локали. Ваш собственный шаблон предоставляет полную сетку hreflang и карту сайта; затем SEO-аудит проверяет оба параметра на каждой странице, а не на образце, и выходит ненулевым, чтобы иметь возможность контролировать развертывание.
Могу ли я использовать его в коммерческих целях? Что для меня означает AGPL-3.0?
Локализация собственных сайтов и отправка продукции не ограничены, в том числе для клиентов и в коммерческих целях. Лицензия распространяется на программное обеспечение, а не на HTML-код, который оно пишет. Раздел 13 применяется только в том случае, если вы запускаете измененную копию в качестве сетевой услуги для других людей. В этом случае вы должны опубликовать свои изменения или получить коммерческую лицензию. LICENSING.md объясняет, к какой группе вы относитесь; почти все относятся к группе без ограничений.
Требуется ли указание авторства ConveyThis?
Нет. Каждая локализованная страница содержит метатег генератора и HTML-комментарий — около 150 байт, без запроса, без скрипта и без ссылки. Это тот же механизм, который используют Astro, Hugo и WordPress. Установка credit.generatorTag и credit.htmlComment в значение false удаляет оба, и ничто в коде не проверяет, сделали ли вы это. Видимый кредит предоставляется по желанию и отдельно, и он ничего вам не приносит — он предназначен для людей, которые хотят получить кредит за используемые ими инструменты.
Чем это отличается от самого ConveyThis?
Они решают разные проблемы. Это создает статические файлы во время сборки, для подключения которых требуется сборка и контент, который меняется в зависимости от частоты выпуска. ConveyThis - это управляемый уровень времени выполнения: нет этапа сборки, нет повторного запуска при каждом редактировании, визуальный редактор, человеческий перевод и поддержка CMS, электронной коммерции, пользовательского контента и страниц за входом в систему. Если у вас статическая сборка и вы хотите владеть HTML, используйте это. Если ваш контент меняется ежедневно или нет готовой сборки, используйте продукт. В любом случае это одна и та же компания.
Готовы начать?

Перевод, гораздо больше, чем просто знание языков, это сложный процесс.

Следуя нашим советам и используя ConveyThis , ваши переведенные страницы найдут отклик у вашей аудитории, чувствуя себя родными для целевого языка.

Хотя это требует усилий, результат приносит удовлетворение. Если вы переводите веб-сайт, ConveyThis может сэкономить вам часы с помощью автоматизированного машинного перевода.

Начните с ConveyThis на нашем бесплатном плане — кредитная карта не требуется!