Initial vault setup
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user