Deploy a web-based translation platform for software localization with Git integration, translation memory, and team collaboration.
Grab the automated bash script from GitHub to follow along with the video.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/dev/weblate/weblate-ubuntu.sh
chmod +x weblate-ubuntu.sh
sudo bash weblate-ubuntu.sh
The script installs Docker, sets up Weblate with PostgreSQL and Redis, and starts all containers. Weblate will be available on port 80 once initialization completes — the first startup takes a few minutes as it applies database migrations.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/dev/weblate/weblate-ubuntu.sh
chmod +x weblate-ubuntu.sh
sudo bash weblate-ubuntu.sh
Open your browser and navigate to Weblate. The first-run wizard will prompt you to create an administrator account with a username, email, and password.
http://<your-server-ip>:80
In the admin panel, go to Projects → Add project. Enter a project name and slug, then link your Git repository URL. Choose the appropriate file format for your project: PO files for GNU Gettext, XLIFF for XML-based workflows, JSON for web apps, or YAML for Ruby/Rails projects. Weblate will clone the repository and detect translation files automatically.
Navigate to the project's Access Control settings. Add languages to define which locales need translation, then invite team members by email. Assign each member a role: Translator for direct editing, Reviewer for approval workflows, or Manager for project administration. Per-language reviewers ensure quality control before changes are committed back to the repository.
| Port | Purpose |
|---|---|
| 80 | Weblate Web UI |
| 5432 | PostgreSQL (internal) |
| 6379 | Redis cache (internal) |
Weblate is a web-based localization and translation management platform that integrates with Git and SVN repositories. Translators work in a clean web interface while changes are committed directly to your source code repository. It supports PO, XLIFF, JSON, YAML, Android strings, and dozens of other translation file formats.
Weblate bridges the gap between developers and translators. Developers keep translations in the codebase; translators work in a friendly web editor without touching code. Changes sync bidirectionally via Git integration, eliminating the email-based translation round-trips that plague most localization workflows.
Weblate runs on port 80 inside the container. Serve it via HTTPS using a reverse proxy. For private translation projects, restrict access to authenticated users only. The Git repository connection may require outbound access to GitHub or your internal Gitea instance.
Alternatives include Transifex (cloud, paid), Crowdin (cloud, freemium), Pootle (self-hosted, older), and Tolgee (self-hosted, more developer-focused). Choose Weblate for mature self-hosted translation management with direct Git integration.
Avoid Weblate if you have only one or two target languages and a small team — a shared spreadsheet or direct Git PR workflow may be simpler. Weblate adds operational overhead that is only justified for larger, ongoing localization efforts.
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Weblate clones your repository and monitors it for changes. When a translator saves a translation in the Weblate web UI, Weblate commits the change to its local clone. You configure how often Weblate pushes back to the origin — on every change, hourly, or manually. Pull requests can also be used for review before merging.
Weblate supports over 80 file formats including GNU Gettext PO and POT, XLIFF, Java properties, Android strings.xml, iOS .strings and .stringsdict, JSON (flat, nested, and i18next), YAML, PHP arrays, CSV, and many more. Check the Weblate documentation for the complete list.
Yes. Weblate integrates with machine translation services including DeepL, Google Translate, LibreTranslate, Microsoft Translator, and its own built-in translation memory. Machine suggestions appear alongside the translation editor. Translators review and accept or modify them.
Yes — this is one of Weblate's primary use cases. Community translators register on your Weblate instance, join a project, and translate directly in the web browser. They never see or touch the Git repository. Weblate handles all the file format parsing and commits on their behalf.
Create a personal access token or deploy key with read-write access to your GitHub repository. In Weblate, add the component with your GitHub repository URL and configure the access token or SSH key. Optionally add a GitHub webhook pointing to your Weblate instance to trigger automatic syncs on new commits.
Yes. Weblate shows translation completion percentages per language for each component on the project dashboard. You can also view a translation matrix showing all languages vs all components at once, and export progress reports.