Español
Empezar

← Todas las plantillas · Herramientas de desarrollo

Despliega Weblate en un clic

Una plataforma de localización sincronizada con Git: traduce apps y documentación con tu equipo

Una alternativa autoalojada a Crowdin, Transifex y Lokalise.

¿Qué es Weblate?

Weblate es una plataforma web de localización de código abierto. Desarrolladores, traductores profesionales y voluntarios traducen software, sitios web y documentación en un mismo lugar, con roles que definen quién puede traducir, revisar y administrar. Michal Čihař lo creó en 2012; es software libre con copyleft, bajo la GNU GPL, y sus desarrolladores también lo operan para otros como Hosted Weblate.

Weblate está pensado para la localización continua: mantiene un clon de tu repositorio Git, incorpora las cadenas nuevas cuando haces push y devuelve las traducciones en commits que acreditan a cada traductor, para hacer push a tu rama o abrir un pull request. Weblate lee y escribe los archivos que tu proyecto ya tiene: GNU gettext, XLIFF, JSON para i18next, Vue I18n o go-i18n, cadenas de Android y Apple, properties de Java, YAML, Markdown y decenas más. Los traductores tienen contexto, capturas de pantalla, un glosario, memoria de traducción y comprobaciones de calidad; la traducción automática y los LLM son opcionales, como sugerencias o borradores que una persona revisa.

Esta plantilla ejecuta la imagen oficial de Weblate, la serie 2026.10, con una base de datos Postgres 18 y una Valkey 9 que Nuevo proyecto crea a su lado, conectadas antes del primer arranque de Weblate; en lugar de la Postgres nueva puedes elegir una de las tuyas. Ese arranque crea la cuenta admin con el correo y la contraseña que indicas, antes de que Weblate responda a nadie, y el registro sigue cerrado. Celery, que se encarga del trabajo en segundo plano de Weblate, se ejecuta en un solo proceso, la forma que la documentación de Weblate indica para ahorrar memoria. Su correo, para invitaciones, notificaciones y restablecer contraseñas, sale por Resend, SendGrid o Amazon SES, el que elijas en Nuevo proyecto, y no envía ninguno hasta que elijas uno.

Hosting de Weblate en Pethost

  1. Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
  2. Nuevo proyecto se abre en Weblate. Rellenas lo que pide y haces clic en Crear proyecto: Correo electrónico, Contraseña de administrador.
  3. El correo es opcional: para que Weblate lo envíe, eliges Resend, SendGrid o Amazon SES en Nuevo proyecto y pegas lo que te da el proveedor.
  4. Nuevo proyecto también crea bases de datos nuevas para Weblate y las conecta antes de que la app arranque por primera vez: Postgres (512 MB) y Valkey (256 MB). O eliges una de tus bases de datos Postgres: Weblate recibe en ella un usuario y una base de datos propios, que las demás apps de allí no pueden leer, y todas las apps que la usan comparten el backup y se restauran juntas.
  5. En un par de minutos Weblate está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
  6. Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.

Preguntas sobre Weblate

¿Weblate es gratis y de código abierto?

Sí. Weblate es software libre bajo la GNU GPL, versión 3 o posterior, así que puedes ejecutarlo, estudiarlo, modificarlo y autoalojarlo gratis. Hosted Weblate es el servicio de pago de sus desarrolladores, con una prueba de 14 días, y los proyectos libres y públicos pueden pedir gratis su plan Libre.

¿Cómo funciona Weblate con Git?

Weblate mantiene un clon de cada repositorio que agregas. Cuando el servicio que aloja tu código le avisa de un push, Weblate trae las cadenas nuevas y devuelve las traducciones en commits que acreditan a cada traductor; luego hace push o abre un pull request. Para un repositorio privado, agrégale la clave pública que muestra Gestionar → Claves SSH, o conecta GitHub, GitLab y otros servicios en Gestionar → Conexiones de alojamiento de código.

¿Qué formatos de archivo admite Weblate?

Decenas: GNU gettext PO, XLIFF, JSON (i18next, Vue I18n, go-i18n, Format.JS y JSON simple), recursos de cadenas de Android, .strings y .stringsdict de Apple, ARB, properties de Java y GWT, RESX de .NET, Qt Linguist, YAML, TOML, cadenas de PHP y Laravel, CSV, Markdown, HTML, subtítulos y más. La documentación de Weblate detalla las variantes y los límites de cada formato.

¿Weblate puede usar traducción automática o IA?

Sí, si quieres. Weblate puede pedir sugerencias a DeepL, Google Cloud Translation, Azure AI Translator, Amazon Translate, LibreTranslate, OpenAI, Anthropic, Ollama y otros servicios, cada uno configurado en Sugerencias automáticas. Su propia memoria de traducción no necesita ningún servicio externo, y el texto generado puede quedarse como sugerencia hasta que una persona lo acepte.

¿Cuánta memoria necesita Weblate?

La documentación de Weblate indica como mínimo 3 GB de memoria y 2 núcleos de CPU para Weblate, su base de datos y un servidor web en una misma máquina, y 4 GB para cientos de componentes. Esta plantilla ejecuta las tareas en segundo plano de Weblate en un solo proceso, la forma que su documentación indica para ahorrar memoria: en nuestra máquina de prueba, Weblate ocupó cerca de 1 GB en reposo y hasta 1,5 GB mientras importaba un proyecto, junto a unos 70 MB de Postgres y 12 MB de Valkey.

¿Cuánta memoria y disco necesita Weblate?

Weblate es moderado: cerca de 1 GB de memoria en reposo y hasta 1,5 GB mientras importa un proyecto, junto a su Postgres de 512 MB y su Valkey de 256 MB; su disco guarda un clon de cada repositorio que traduce. Nuevo proyecto da a cada base de datos de la app la memoria que recomienda la plantilla, salvo que la cambies: Postgres (512 MB) y Valkey (256 MB). En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.

El archivo Docker Compose de Weblate

La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito. La máquina escribe allí cómo inicia sesión la app en sus bases de datos, al conectarlas. Nuevo proyecto escribe los ajustes de correo elegidos en él, o los deja vacíos si la app no envía correo.

Contenedores: weblate (weblate/weblate:2026.10).

Bases de datos, cada una un proyecto propio: Postgres (512 MB), Valkey (256 MB).

Volúmenes, en el backup de cada noche: 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:

Más en Herramientas de desarrollo