# General Translation Knowledge Base: General Translation или Weblate: что выбрать?
URL: https://generaltranslation.com/ru/kb/general-translation-vs-weblate.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Weblate — это платформа локализации на основе Git, которую можно развернуть на собственном сервере. Она создана для перевода файлов репозитория силами сообщества или команды. General Translation встраивает генерацию переводов в разработку и релизы, опираясь на размеченный JSX и общий контекст продукта. Оставьте свои файлы gettext или перейдите на написание текста непосредственно в коде — тогда отпадёт и необходимость поддерживать каталог исходных сообщений.
Category: Инструменты для рабочих процессов
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

Weblate — это веб-платформа для перевода с открытым исходным кодом, построенная вокруг Git. Вы подключаете репозиторий, Weblate считывает из него файлы перевода, люди или настроенные сервисы перевода их заполняют, а Weblate коммитит результаты или открывает пул-реквест. Эту платформу часто выбирают проекты с открытым исходным кодом, которым помогают переводчики из сообщества. General Translation переносит генерацию переводов в сборку: новые тексты и их переводы могут выйти в одном релизе, а ваша команда проверит их в панели управления.

## Сильные стороны Weblate

* **Открытый исходный код с копилефт-лицензией.** Weblate [распространяется по лицензии GPL-3.0-or-later](https://github.com/WeblateOrg/weblate): всю платформу можно бесплатно скачать и развернуть у себя, а если нужна помощь с установкой и сопровождением, доступны платные планы поддержки.
* **Бесплатный хостинг для свободных проектов.** Облачный Weblate работает на инфраструктуре в ЕС, а публичные свободные проекты могут бесплатно получить план Libre с теми же ограничениями, что и у плана на 160 тыс. строк.
* **Непрерывная локализация на основе Git.** Weblate забирает изменения, когда ваша платформа хостинга кода отправляет вебхук (или при ежедневной синхронизации), фиксирует переводы отложенными коммитами, группирующими изменения по авторам, и отправляет их в вашу ветку или [открывает пул-реквесты](https://docs.weblate.org/en/latest/vcs.html) в GitHub, GitLab, Gitea, Bitbucket, Azure DevOps и Pagure. Облачный Weblate также подключается через GitHub App.
* **Очень широкая поддержка форматов файлов.** В документации Weblate перечислено [около 50 форматов](https://docs.weblate.org/en/latest/formats.html), включая gettext PO, XLIFF 1.2 и 2.0, строки Android и Apple, ARB, i18next JSON, Fluent, Java properties, .NET RESX, Ruby YAML, строки PHP и Laravel, Qt Linguist, CSV, Excel и Markdown.
* **Дополнения для рутинной работы с файлами.** [Встроенные дополнения](https://docs.weblate.org/en/latest/admin/addons.html) обновляют PO-файлы по шаблону POT, генерируют MO-файлы, объединяют коммиты и запускают автоматический перевод.
* **Машинный перевод и LLMs.** Среди [интеграций](https://docs.weblate.org/en/latest/admin/machine.html) — DeepL, Google, Azure, Amazon и LibreTranslate, а также OpenAI, Azure OpenAI, Anthropic, Mistral и Ollama, в промпты которых добавляются подходящие термины глоссария и ваши настройки стиля; кроме того, используется собственная память переводов Weblate.
* **Проверки качества.** [Десятки проверок](https://docs.weblate.org/en/latest/user/checks.html) охватывают заполнители, отсутствующие формы множественного числа, максимальную длину, синтаксис ICU MessageFormat и неизменённые переводы, а автоматические исправления приводят в порядок пробелы и многоточия.
* **Перевод силами сообщества.** Волонтёры могут предлагать переводы и оставлять комментарии, рецензенты их утверждают, а проект можно настроить так, чтобы [фиксировались только утверждённые строки](https://docs.weblate.org/en/latest/workflows.html). Скриншоты, глоссарии и ссылки на исходный код помогают переводчикам понять контекст.

## Что Weblate по-прежнему перекладывает на ваших инженеров

Вот приложение на Python с gettext и испанским каталогом, который перевели ещё до того, как добавили последнюю строку:

```python title="app.py"
import gettext
t = gettext.translation("messages", localedir="locale", languages=["es"])
_ = t.gettext
print(_("Inbox"))
print(_("No messages yet."))  # новая строка, добавлена после последнего цикла перевода
```

Если извлечь шаблон POT, перевести в `locale/es/LC_MESSAGES/messages.po` только строку &quot;Inbox&quot; и скомпилировать файл с помощью Babel 2.17.0, испаноязычный пользователь увидит новую строку на английском:

```text title="Output"
Bandeja de entrada
No messages yet.
```

Эта строка останется на английском, пока не завершится полный цикл:

1. Оберните строку в `_()`, заново сгенерируйте шаблон POT с помощью `xgettext` или `pybabel extract` и закоммитьте его.
2. Weblate получает изменение через вебхук или при следующей синхронизации, и его дополнение `msgmerge` добавляет новую запись в каждый PO-файл.
3. Переведите строку силами волонтёров, переводчиков или настроенного машинного перевода и проверьте результат, если требуется утверждение.
4. Weblate коммитит изменения и отправляет их в репозиторий или открывает пул-реквест. В рамках процесса релиза изменения проходят слияние, MO-файлы компилируются, а приложение развёртывается.

Правки тех же файлов в обход Weblate могут приводить к конфликтам слияния. Чтобы их избежать, [документация Weblate рекомендует](https://docs.weblate.org/en/latest/admin/continuous.html#avoiding-merge-conflicts-by-locking-weblate-while-doing-outside-changes) блокировать компонент на время изменения файлов. Кроме того, переводчик видит каждую строку вместе со ссылками на исходный код и скриншотами, но не код, который выполняет её рендеринг.

Самостоятельный хостинг бесплатен. Стоимость облачного Weblate зависит от количества размещённых строк: это число исходных строк, умноженное на количество языков плюс один. При этом любой тариф включает неограниченное число языков, проектов и переводчиков. (См. [хостинг Weblate](https://weblate.org/en/hosting/), данные на октябрь 2026 г.)

## Weblate и General Translation: краткое сравнение

| Возможность                | Weblate                                                                                                                                                  | General Translation                                                                                                                                        |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Где хранятся строки        | Файлы перевода в вашем репозитории, зеркалируемые в компонентах Weblate                                                                                  | В вашем коде внутри [`<T>`](/docs/react/reference/components/t) или в уже имеющихся у вас файлах ресурсов                                                  |
| Как подключается код       | Weblate забирает изменения из Git, а затем отправляет коммиты или открывает пул-реквесты                                                                 | [`npx gt translate`](/docs/cli/reference/commands/translate) в процессе сборки или пул-реквесты от [Locadex](/docs/platform/locadex/quickstart)            |
| Кто переводит              | Волонтёры, ваши переводчики, машинный перевод или LLMs                                                                                                   | ИИ с учётом контекста из вашего кода, Glossary и пользовательских промптов; результат проверяет ваша команда в панели управления                           |
| Контекст для каждой строки | Ссылки на исходный код, скриншоты, глоссарий и память переводов                                                                                          | Размеченная структура JSX при использовании встроенных библиотек; контекст источника в поддерживаемых каталогах; общие Glossary и пользовательские промпты |
| Форматы файлов             | Около 50, включая XLIFF, ARB, Fluent и Java properties                                                                                                   | JSON, YAML, PO, Markdown и MDX, строки iOS и Android и другие                                                                                              |
| Размещение                 | Бесплатное самостоятельное размещение или Облачный Weblate                                                                                                 | Облачная платформа; библиотеки и CLI с открытым исходным кодом                                                                                             |
| Стоимость                  | Самостоятельное размещение — бесплатно; облачные тарифы зависят от количества размещённых строк; бесплатный тариф Libre для публичных свободных проектов | [Оплата перевода по факту использования](https://generaltranslation.com/pricing)                                                                           |
| Лицензия                   | GPL-3.0-or-later                                                                                                                                         | Библиотеки JavaScript и CLI под лицензией MIT                                                                                                              |

## Почему команды выбирают General Translation вместо Weblate

General Translation делает перевод частью того релиза, в котором появляются новые тексты. Оставьте gettext и генерируйте PO-файлы во время сборки или используйте встроенные библиотеки, чтобы хранить исходный текст прямо в компонентах внутри [`<T>`](/docs/react/reference/components/t).

* **Быстрее.** [`npx gt translate`](/docs/cli/reference/commands/translate) создаёт переводы ещё до развёртывания. Для проектов на React и Next.js [Locadex](/docs/platform/locadex/quickstart) может подготовить изменения в виде пул-реквестов. Достаточно добавить локаль в `gt.config.json`, и при следующем запуске начнётся генерация переводов на этот язык.
* **Дешевле в эксплуатации.** Сервис перевода работает на стороне General Translation, поэтому вашей команде не нужно устанавливать, обновлять сервер переводов или делать его резервные копии. А при написании текста непосредственно в коде инженерам больше не приходится поддерживать отдельный каталог исходных сообщений.
* **Выше качество.** При встроенном переводе элементы размеченного JSX и ветви множественного числа передаются вместе с предложением. Для gettext смысл каждой записи поясняют комментарии в исходном коде и `msgctxt`. Общие [контекстные группы](/docs/platform/dashboard/guides/defining-context-for-translations) применяют ваш Glossary и пользовательские промпты, а ваша команда дорабатывает результат в [Редакторе переводов в панели управления](/docs/platform/dashboard/guides/reviewing-translations).
* **Меньше рисков.** Переведённые файлы хранятся в вашем репозитории, а когда их выпускать, решает ваш процесс релиза. Оставьте gettext и стандартные PO-файлы или используйте JavaScript-библиотеки General Translation под лицензией MIT с переводами в бандле: ни один из способов доставки не требует обращения к General Translation во время выполнения.

Платформа и документация Profound работают на General Translation более чем в 47 локалях. (См. [развёртывания в рабочей среде](https://generaltranslation.com/enterprise).)

## Когда Weblate подходит лучше

Выбирайте Weblate, если вам нужен перевод силами сообщества, полностью self-hosted платформа или обширная поддержка форматов каталогов. Выбирайте General Translation, если хотите, чтобы новые тексты продукта переводились в рамках каждого релиза: с учётом контекста из кода при написании текста непосредственно в коде и с возможностью напрямую обрабатывать существующие файлы JSON, YAML, PO или Markdown через CLI.

## Совместное использование с файлами gettext

CLI General Translation переводит те же файлы gettext, которые читает Weblate. Укажите в записи `pot` путь к шаблону и сопоставьте каждый выходной файл со структурой папок, принятой в Weblate:

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "fr", "pl"],
  "files": {
    "pot": {
      "include": ["locale/messages.pot"],
      "transformationFormat": "PO",
      "transform": {
        "match": "locale/messages\\.pot",
        "replace": "locale/{locale}/LC_MESSAGES/messages.po"
      }
    }
  }
}
```

В `gt` 2.26.5 эта конфигурация сопоставляет `locale/messages.pot` с `locale/es/LC_MESSAGES/messages.po` и с аналогичным путём для каждой локали. Для записей с множественными формами General Translation прописывает заголовок `Plural-Forms` для языка перевода и заполняет каждую форму `msgstr[n]`. Закрепите за каждым языком одного ответственного — например, General Translation для языков, которые не покрывает ваше сообщество, и волонтёров Weblate для остальных, — чтобы оба инструмента не редактировали один и тот же файл. Если имена папок gettext содержат подчёркивания, например `pt_BR`, добавьте запись [`customMapping`](/docs/cli/reference/config#custom-mapping), которая сопоставляет их со стандартным кодом `pt-BR`. (См. [PO / POT](/docs/cli/reference/formats/po-pot-files).)

## Можно ли использовать General Translation вместо Weblate?

Да. General Translation объединяет генерацию переводов, общую терминологию продукта и проверку в панели управления, встраивая всё это в ваш процесс выпуска релизов. Вы можете оставить показанные выше файлы gettext и изменить лишь способ получения переводов для них — заменять вызовы gettext в приложении не потребуется.

## Ключевые выводы

* Weblate — платформа под строгой копилефт-лицензией для перевода открытых и community-проектов. Она поддерживает непрерывную локализацию на основе Git, бесплатный самостоятельный хостинг и около 50 форматов файлов.
* Рабочий процесс перевода в ней строится вокруг каталогов в репозитории, участников и синхронизации через Git.
* General Translation генерирует переводы до развёртывания. Можно сохранить gettext и стандартные PO-файлы или перейти на написание текста непосредственно в коде: так контекст берётся прямо из кода, а отдельный каталог исходных сообщений не нужен.

## Related questions

- [Почему стоит выбрать General Translation вместо TMS (Smartling, Lokalise, Phrase, Crowdin или Transifex)?](https://generaltranslation.com/ru/kb/general-translation-vs-tms.mdx): Система управления переводами (TMS), например Smartling, Lokalise, Phrase, Crowdin или Transifex, координирует работу переводчиков, но инженерам всё равно приходится извлекать строки, отправлять их на перевод, ждать результатов и встраивать переводы обратно в продукт. General Translation переводит контент прямо в вашем коде с учётом контекста, выпускает все языки с каждым релизом и работает на библиотеках с открытым исходным кодом без привязки к поставщику.
- [General Translation и GNU gettext: нужны ли оба?](https://generaltranslation.com/ru/kb/general-translation-vs-gettext.mdx): Оставьте GNU gettext для извлечения и рендеринга, а General Translation подключите для генерации и сопровождения PO-файлов. General Translation учитывает при генерации заметки для переводчиков и контекст сообщений, применяет общую терминологию и предоставляет рецензентам редактор в панели управления. Существующие вызовы gettext и скомпилированные каталоги остаются на месте.
- [General Translation или Tolgee: что выбрать?](https://generaltranslation.com/ru/kb/general-translation-vs-tolgee.mdx): Tolgee объединяет сообщения с ключами, редактирование в контексте и ИИ-перевод в платформе, которую можно развернуть на собственных серверах. General Translation хранит читаемый текст прямо в ваших компонентах и генерирует переводы из размеченного JSX, поэтому новый текст можно выпускать сразу на всех языках, не поддерживая ключи сообщений.
- [General Translation и фреймворк переводов Django: нужны ли оба?](https://generaltranslation.com/ru/kb/general-translation-vs-django-i18n.mdx): Используйте фреймворк переводов Django вместе с General Translation. Django отвечает за извлечение сообщений, выбор языка и рендеринг. General Translation заполняет его PO-файлы, включая формы множественного числа, с учётом терминологии вашего продукта и проверки в панели управления. Ваши шаблоны и URL-шаблоны остаются прежними, а переводы обновляются вместе с кодом.
- [Какое ПО для локализации лучше всего подходит разработчикам?](https://generaltranslation.com/ru/kb/best-localization-software.mdx): Ищите единую систему, которая охватывает весь конвейер — от библиотеки интернационализации в вашем коде до перевода и доставки, — а не собирайте по частям отдельную библиотеку, систему управления переводами и поставщика переводов.

## Previous and next questions

- Previous question: [General Translation или vue-i18n: что выбрать?](https://generaltranslation.com/ru/kb/general-translation-vs-vue-i18n.mdx)
- Next question: [General Translation против i18next, react-intl и next-intl: какую библиотеку интернационализации выбрать?](https://generaltranslation.com/ru/kb/general-translation-vs-i18n-libraries.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/ru/kb/sitemap.md) for every article.
