---
title: Weblate
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, traduction, i18n, localisation, crowdsourcing]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/WeblateOrg/weblate]
---

# 💻 Weblate

> **Plateforme de traduction collaborative web** (crowdsourcing) avec gestion de versions, intégration Git/VCS, mémoire de traduction et automatisation. Utilisé par Mozilla, Red Hat, GNOME, KDE et de nombreuses autres organisations.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [weblate.org](https://weblate.org/) |
| **GitHub** | [WeblateOrg/weblate](https://github.com/WeblateOrg/weblate) |
| **License** | GPL-3.0 |
| **Langage** | Python (Django) |
| **Étoiles GitHub** | 5 903 ⭐ |
| **Catégorie** | [[cat-development\|Development]] |
| **Note** | **Adopté par Mozilla, Red Hat, GNOME, KDE, OpenStreetMap, Nextcloud, F-Droid** — référence du domaine. **Self-hostable** est la voie majoritaire. |

## 📝 Description

**Weblate** est une **plateforme de localisation (L10n) et traduction collaborative** basée sur le web. Elle gère le cycle complet de la traduction d'un logiciel ou d'un site :

**Fonctionnalités principales** :

- **Interface web de traduction** : éditeur visuel, suggestions, contexte, captures d'écran
- **VCS integration** : push automatique des traductions vers **Git, Mercurial, Subversion**
- **Multi-format** : PO, XLIFF, JSON, YAML, .properties Android, .strings iOS, .ts Qt, etc.
- **Crowdsourcing** : ouverture à des contributeurs externes (traducteurs volontaires)
- **Mémoire de traduction** : réutilisation de traductions entre projets
- **Glossaire** : terminologie unifiée
- **Traduction automatique** : API DeepL, Google Translate, OpenAI, AWS
- **Quality checks** : cohérences, fautes, placeholders
- **Workflow de validation** : review, approval
- **Webhooks** : notification CI/CD, Slack
- **API REST** complète
- **Multi-projets, multi-composants, multi-langues**

**Pourquoi pas POEditor, Crowdin, Lokalise** ? Ce sont des services **SaaS payants**. Weblate est **open source et self-hosted**.

**Cas d'usage** :

- **Projets open source** : permettre à la communauté de traduire
- **Entreprises** : internalisation produits, logiciels internes
- **Apps mobile / web** : gérer les fichiers `.json` / `.strings` / `.xml`
- **Documentation multilingue**

## 🚀 Installation

### Via Docker Compose (méthode officielle)

```yaml
# docker-compose.yml
version: '3.8'
services:
  weblate:
    image: weblate/weblate:latest
    container_name: weblate
    restart: unless-stopped
    hostname: weblate.example.com
    depends_on:
      - db
      - cache
    environment:
      - WEBLATE_EMAIL_HOST=***      - WEBLATE_EMAIL_HOST_USER=velli@example.com
      - WEBLATE_EMAIL_HOST_PASSWORD=***      - WEBLATE_ALLOWED_HOSTS=weblate.example.com
      - WEBLATE_ADMIN_PASSWORD=***      - WEBLATE_ADMIN_EMAIL=velli@example.com
      - WEBLATE_SITE_DOMAIN=weblate.example.com
      - WEBLATE_SECRET_KEY=***      - WEBLATE_DATABASE_URL=postgresql://weblate:***@db:5432/weblate
      - WEBLATE_REDIS_URL=redis://cache:6379/0
    volumes:
      - weblate-data:/app/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.weblate.rule=Host(`weblate.example.com`)"
      - "traefik.http.routers.weblate.entrypoints=websecure"
      - "traefik.http.services.weblate.loadbalancer.server.port=8080"
    networks:
      - proxy

  db:
    image: postgres:15
    container_name: weblate-db
    restart: unless-stopped
    environment:
      - POSTGRES_DB=weblate
      - POSTGRES_USER=weblate
      - POSTGRES_PASSWORD=***    volumes:
      - weblate-db:/var/lib/postgresql/data
    networks:
      - proxy

  cache:
    image: redis:7
    container_name: weblate-cache
    restart: unless-stopped
    networks:
      - proxy

volumes:
  weblate-data:
  weblate-db:

networks:
  proxy:
    external: true
```

## ⚙️ Configuration

1. **Premier démarrage** : admin auto-créé (`WEBLATE_ADMIN_PASSWORD`)
2. **VCS (Git)** : ajouter une **clé SSH** dans Weblate pour push/pull auto
3. **Composants** : un composant = un fichier source (ex. `locales/fr/LC_MESSAGES/django.po`)
4. **Langues** : activer uniquement les langues cibles voulues
5. **Traducteurs** : créer des utilisateurs ou autoriser les **inscriptions libres** (crowdsourcing)
6. **Hooks** : configurer webhooks [[app-forgejo]] / [[app-gitlab]] pour push auto sur commit
7. **Backups** : DB PostgreSQL + `/app/data` (clé secrète, avatars, customisations)

## 🔗 Alternatives

- **Pootle** (Translate House) — Plus ancien, plus simple, moins maintenu
- **Zanata** (Red Hat) — Concurrent JBoss, en pause
- **Transifex** — SaaS leader, payant
- **Crowdin** — SaaS, freemium
- **Lokalise** — SaaS moderne, TMS pro
- **Tolgee** (JS) — Auto-hébergeable, plus moderne, plus orienté devs
- **Traduora** — Open source, en pause

## 🔒 Sécurité

- **HTTPS obligatoire** : Weblate gère l'auth et les secrets
- **Auth externe** : OIDC, OAuth (GitHub, GitLab, Gitea, Google)
- **2FA** : activable par utilisateur
- **Permissions granulaires** : admin, traducteur, reviewer
- **Validation manuelle** : éviter de pousser des traductions non revues vers la prod
- **Audit** : qui a modifié quoi
- **Backups** : PostgreSQL + volume `/app/data`
- **Rate limiting** : Weblate peut être cible de spam (formulaires d'inscription)

## 📚 Ressources

- [Documentation officielle](https://docs.weblate.org/)
- [GitHub WeblateOrg/weblate](https://github.com/WeblateOrg/weblate)
- [Liste des projets qui utilisent Weblate](https://weblate.org/uses/)
- [Weblate.org (cloud)](https://weblate.org/)

## 🔗 Pages Liées

- [[cat-development]] — Catégorie Development
- [[app-forgejo]] / [[app-gitlab]] / [[app-gitea]] — Forges Git (intégration VCS)
- [[app-traefik]] — Reverse proxy
- [[securisation-home-lab]] — Bonnes pratiques
- [[recettes-docker-compose]] — Templates Docker
