Українська
Почати

← Усі шаблони · Інструменти розробника

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

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

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

Що таке Weblate?

Weblate — це вебплатформа для локалізації з відкритим кодом. Розробники, професійні перекладачі й волонтери перекладають програми, сайти й документацію в одному місці, а ролі визначають, хто може перекладати, перевіряти й керувати. Проєкт започаткував 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 — з ключем доступу, через 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:

Ще в категорії «Інструменти розробника»