Video coming soon…

🌐 Setup Weblate — Self-Hosted Translation Management

Deploy a web-based translation platform for software localization with Git integration, translation memory, and team collaboration.

Dev Localization Translation
⚠️ This script is provided for demo and testing purposes only. Not intended for production use.

📦 Resources & Setup Scripts

Grab the automated bash script from GitHub to follow along with the video.

Automated install — Weblate translation platform running in one command.
View on GitHub

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

PortPurpose
80Weblate Web UI
5432PostgreSQL (internal)
6379Redis 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.

                      Contact Us

                      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.