🌐 Setup Weblate — Self-Hosted Translation Management
Deploy a web-based translation platform for software localization with Git integration, translation memory, and team collaboration.
📦 Resources & Setup Scripts
Grab the automated bash script from GitHub to follow along with the video.
Quick Install:
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/dev/weblate/weblate-ubuntu.sh
chmod +x weblate-ubuntu.sh
sudo bash weblate-ubuntu.sh
Tutorial Steps
1 Download & Run the Installer
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
2 Access Web UI and Create Admin
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
3 Create a Translation Project
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.
4 Invite Translators
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.
Ports Used
| Port | Purpose |
|---|---|
| 80 | Weblate Web UI |
| 5432 | PostgreSQL (internal) |
| 6379 | Redis cache (internal) |
Overview
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.
Why Use It
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.
When You Need It
Who Should Use It
Real Use Cases
Main Features
How to Use After Installation
Security Best Practices
Ports and Firewall Notes
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.
Backup and Maintenance
Common Mistakes
Troubleshooting
Alternatives
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.
When Not to Use It
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 Professional Help
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.
Frequently Asked Questions
How does Weblate sync with my Git repository?
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.
What file formats does Weblate support?
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.
Can Weblate suggest translations automatically?
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.
Can community members contribute translations without code access?
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.
How do I set up GitHub integration?
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.
Can I track translation progress per language?
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.