Русский
Начать

← Все шаблоны · Инструменты разработчика

Задеплойте Weblate в один клик

Платформа локализации: переводите приложения и документацию вместе с командой, синхронно с Git

Альтернатива Crowdin, Transifex и Lokalise на вашей машине.

Что такое Weblate?

Weblate — это open source веб-платформа для локализации. Разработчики, профессиональные переводчики и волонтеры переводят программы, сайты и документацию в одном месте, а роли задают, кто может переводить, рецензировать и управлять. Проект начал Michal Čihař в 2012 году; это свободное ПО под копилефт-лицензией GNU GPL, а его разработчики также запускают его для других как сервис Hosted Weblate.

Weblate создан для непрерывной локализации. Он держит клон вашего Git-репозитория, забирает новые строки после каждого пуша и коммитит переводы обратно с указанием авторства каждого переводчика, чтобы запушить их в вашу ветку или открыть pull request. Он читает и пишет те файлы, которые уже есть в вашем проекте: GNU gettext, XLIFF, JSON для i18next, Vue I18n или go-i18n, строки Android и Apple, properties-файлы Java, YAML, Markdown и еще десятки форматов. У переводчиков есть контекст, снимки экрана, словарь, память переводов и проверки качества; машинный перевод и LLM — по желанию, в виде предложений или черновиков, которые проверяют люди.

Этот шаблон запускает официальный образ Weblate линейки 2026.10 с базами данных Postgres 18 и Valkey 9, которые «Новый проект» создает рядом и подключает до первого запуска Weblate; вместо новой базы Postgres можно выбрать одну из ваших. При этом запуске создается администратор с почтой и паролем, которые вы укажете, еще до того, как Weblate кому-либо ответит, а регистрация остается закрытой. Celery, на котором работают фоновые задачи Weblate, запущен в одном процессе: так документация Weblate советует экономить память. Письма с приглашениями, уведомлениями и сбросом пароля Weblate отправляет через Resend, SendGrid или Amazon SES — какой сервис вы выберете в окне «Новый проект», а пока сервис не выбран, не отправляет вовсе.

Хостинг Weblate на Pethost

  1. Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
  2. Окно «Новый проект» открывается на приложении Weblate. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: Электронная почта, Пароль администратора.
  3. Отправка почты необязательна: чтобы приложение Weblate отправляло письма, вы выбираете в окне «Новый проект» Resend, SendGrid или Amazon SES и вставляете то, что выдает провайдер.
  4. Окно «Новый проект» также создает для приложения Weblate новые базы данных и подключает их до первого запуска приложения: Postgres (512 MB) и Valkey (256 MB). Или вы выбираете одну из своих баз Postgres: приложение Weblate получает в ней отдельного пользователя и отдельную базу данных, которые другие приложения там не могут прочитать, а все приложения этой базы попадают в один бэкап и восстанавливаются вместе.
  5. Через минуту-две Weblate работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
  6. Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.

Вопросы про Weblate

Weblate бесплатный и с открытым кодом?

Да. Weblate — свободное ПО под лицензией GNU GPL версии 3 или более поздней, так что запускать, изучать, менять и хостить его у себя можно бесплатно. Hosted Weblate — платный сервис его разработчиков с пробным периодом на 14 дней, а публичные свободные проекты могут бесплатно запросить его тариф Libre.

Как Weblate работает с Git?

Weblate держит клон каждого репозитория, который вы добавите. Он забирает новые строки, когда хостинг кода сообщает ему о пуше, и коммитит переводы обратно с указанием авторства каждого переводчика, а затем пушит их или открывает pull request. Для приватного репозитория добавьте в него публичный ключ из раздела «Управление» → «SSH-ключи» или подключите GitHub, GitLab и другие хостинги кода в разделе «Управление» → «Подключения к хостингу кода».

Какие форматы файлов поддерживает Weblate?

Десятки: GNU gettext PO, XLIFF, JSON (i18next, Vue I18n, go-i18n, Format.JS и обычный), строковые ресурсы Android, .strings и .stringsdict от Apple, ARB, properties-файлы Java и GWT, .NET RESX, Qt Linguist, YAML, TOML, строки PHP и Laravel, CSV, Markdown, HTML, субтитры и другие. В документации Weblate перечислены варианты и ограничения каждого формата.

Может ли Weblate использовать машинный перевод или ИИ?

Да, если вы этого хотите. Weblate может запрашивать предложения у DeepL, Google Cloud Translation, Azure AI Translator, Amazon Translate, LibreTranslate, OpenAI, Anthropic, Ollama и других сервисов; каждый настраивается в разделе «Автоматические предложения». Собственной памяти переводов Weblate внешний сервис не нужен, а сгенерированный текст может оставаться предложением, пока его не примет человек.

Сколько памяти нужно Weblate?

Документация Weblate называет минимумом для Weblate, его базы данных и веб-сервера на одном хосте 3 GB памяти и 2 ядра CPU, а для сотен компонентов — 4 GB. Этот шаблон выполняет фоновые задачи Weblate в одном процессе, как советует документация, чтобы сэкономить память: на нашей тестовой машине Weblate занимал около 1 GB в простое и до 1,5 GB при импорте проекта, а Postgres и Valkey рядом с ним — около 70 MB и 12 MB.

Сколько памяти и диска нужно Weblate?

Weblate: умеренные требования — около 1 GB памяти в простое и до 1,5 GB при импорте проекта, рядом с его базами Postgres на 512 MB и Valkey на 256 MB; диск хранит клон каждого репозитория, который переводят в Weblate. Окно «Новый проект» дает каждой базе данных приложения столько памяти, сколько рекомендует шаблон, если вы это не измените: Postgres (512 MB) и Valkey (256 MB). На Pethost ему хватит тарифа Starter, и рядом останется место для других приложений.

Weblate: файл Docker Compose

Шаблон — это этот compose.yaml и переменные, которые пишутся в .env проекта при его создании. Pethost запускает файл так, как он написан. Машина пишет туда, как приложение входит в свои базы данных, когда подключает их. Окно «Новый проект» пишет туда выбранные в нем настройки почты или оставляет их пустыми, если приложение не отправляет писем.

Контейнеры: weblate (weblate/weblate:2026.10).

Базы данных, каждая — отдельный проект: Postgres (512 MB), Valkey (256 MB).

Тома, в ночном бэкапе: data, cache.

services:
  weblate:
    image: weblate/weblate:2026.10
    restart: unless-stopped
    environment:
      WEBLATE_SITE_DOMAIN: ${HOST}
      # The admin account, made at the first start before Weblate answers anyone. Weblate sets
      # its email and password again from these at every start.
      WEBLATE_ADMIN_EMAIL: ${ADMIN_EMAIL}
      WEBLATE_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      WEBLATE_REGISTRATION_OPEN: "0"
      # TLS ends at the machine's proxy, which says so in X-Forwarded-Proto and gives the
      # visitor's address in X-Forwarded-For. It reaches the project from the machine's networks,
      # 10.192.0.0/10, the one source Weblate's nginx takes that header from.
      WEBLATE_ENABLE_HTTPS: "1"
      WEBLATE_SECURE_PROXY_SSL_HEADER: HTTP_X_FORWARDED_PROTO,https
      WEBLATE_IP_PROXY_HEADER: HTTP_X_FORWARDED_FOR
      WEBLATE_TRUSTED_PROXY_ADDRESSES: 10.192.0.0/10
      # Celery's queues in one process: Weblate's documented way to save memory on a small
      # machine.
      CELERY_WORKER_MODE: single
      # Its translations, users and history, in the Postgres database linked to the project.
      POSTGRES_HOST: ${DATABASE_HOST:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      POSTGRES_PORT: ${DATABASE_PORT:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      POSTGRES_DB: ${DATABASE_NAME:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      POSTGRES_USER: ${DATABASE_USER:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      POSTGRES_PASSWORD: ${DATABASE_PASSWORD:?reload New project to link a Postgres database, or send link_databases with env_prefix DATABASE}
      # Its task queue and cache, in the Valkey database linked to the project.
      REDIS_HOST: ${REDIS_HOST:?reload New project to link a Valkey database, or send link_databases with env_prefix REDIS}
      REDIS_PORT: ${REDIS_PORT:?reload New project to link a Valkey database, or send link_databases with env_prefix REDIS}
      REDIS_PASSWORD: ${REDIS_PASSWORD:?reload New project to link a Valkey database, or send link_databases with env_prefix REDIS}
      REDIS_DB: "0"
      # The mail provider picked in New project, by STARTTLS on its port. With none, Weblate's
      # mail goes nowhere, and its host stays set, which Weblate requires.
      WEBLATE_EMAIL_BACKEND: ${SMTP_BACKEND:-django.core.mail.backends.dummy.EmailBackend}
      WEBLATE_EMAIL_HOST: ${SMTP_HOST:-localhost}
      WEBLATE_EMAIL_PORT: ${SMTP_PORT:-25}
      WEBLATE_EMAIL_HOST_USER: ${SMTP_USER}
      WEBLATE_EMAIL_HOST_PASSWORD: ${SMTP_PASSWORD}
      WEBLATE_EMAIL_USE_TLS: "1"
      WEBLATE_EMAIL_USE_SSL: "0"
      WEBLATE_SERVER_EMAIL: ${SMTP_FROM}
      WEBLATE_DEFAULT_FROM_EMAIL: ${SMTP_FROM_HEADER}
    volumes:
      # The repositories Weblate translates, its settings and media.
      - data:/app/data
      - cache:/app/cache
    tmpfs:
      - /run
      - /tmp

volumes:
  data:
  cache:

Еще в категории «Инструменты разработчика»