🗣️ Pontoon

GitHub - mozilla/pontoon: Mozilla’s Localization Platform
Mozilla’s Localization Platform. Contribute to mozilla/pontoon development by creating an account on GitHub.

Pontoon (code) is a Mozilla project that helps teams localize their websites. It's a full-blown localization ("L10n") platform that's released as open source (BSD 3 clause license).

Pontoon powers the Localize Mozilla project:

Localize Mozilla Project

Pontoon is used to manage translations into local language for your app, website, or any other project – people can create accounts, submit and manage translations, and help increase or maintain which languages are supported.

Mozilla even has a demo that you can try out online:

Tutorial
Mozilla’s Localization Platform

Here's what the main dashboard of Pontoon looks like:

Pontoon Screenshot (source: github.com/mozilla/pontoon)

As with any polished project like Pontoon, there's great documentation for you to check out:

Pontoon - Mozilla’s Localization Platform — Pontoon 1.0 documentation

🌠 Features

Pontoon is enterprise-grade software (and of course, at least one very important enterprise is using it!), and it's full of features:

  • Database backed by Postgres
  • Easy to deploy
  • Available Public Roadmap
  • Fully integrated login and administration system
  • Multi team & project support

Another great thing about Pontoon is it's wide support for various formats used for Localization:

.dtd .ftl (Fluent) .inc .ini .json (WebExtensions) .json (key-value)
.lang .po (Gettext) .properties .xliff .xml (Android)

🤖 As described by AI

Mozilla Pontoon is an open-source localization platform by Mozilla, designed to make software translation collaborative and efficient. It offers an intuitive interface for global volunteers to translate Mozilla's projects like Firefox, enabling them in multiple languages. Pontoon supports features like in-context translation and integrates with version control systems to automate the workflow between translations and source code.

The platform emphasizes community involvement and provides tools for managing translation projects. It automatically imports new strings for translation and exports completed ones back to the repositories. This ensures a seamless cycle of updates, making software accessible worldwide while fostering a global translator community.

📺 Watch this

Matjaz Horvat presented Pontoon as recently as FOSDEM 2023, which is a great introduction to the project and how to use it:

Pontoon is very easy to approach, and is built in a way that makes it easy to administer as well.

As Pontoon has been around a very long time, there are some older tutorials that are worth looking at as well:

👟 Getting started

Pontoon comes with deployment documentation which is kept reasonably up to date. It's a proper 12 factor app, so much of the configuration can be managed via ENV variables which are generally easy to set.

🐳 Getting started with Docker

Unfortunately, Pontoon is actually meant to be deployed to Heroku, which has somewhat fallen out of favor but is a really great platform for deploying simple (and even some complex) apps.

While there's no official pontoon image listed on DockerHub, there is an official Dockerfile in the pontoon repository:

FROM python:3.10-bookworm AS server

ARG USER_ID=1000
ARG GROUP_ID=1000

ENV DEBIAN_FRONTEND=noninteractive
ENV HGPYTHON3=1

# Python environment variables
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONPATH /app

# Install required software.
RUN apt-get update \
    # Enable downloading packages over https
    && apt-get install -y apt-transport-https \
    # Add source for node.js
    && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list \
    # Install software
    && apt-get update \
    && apt-get install -y --no-install-recommends \
        build-essential \
        libmemcached-dev \
        nodejs \
        postgresql-client \
        postgresql-server-dev-15 \
    # Clean up what can be cleaned up.
    && apt-get autoremove -y

WORKDIR /app

# Install Pontoon Python requirements
COPY requirements/* /app/requirements/
RUN pip install -U 'pip>=8' && \
    pip install --no-cache-dir --require-hashes -r requirements/default.txt -r requirements/dev.txt -r requirements/test.txt -r requirements/lint.txt

# Create the app user
RUN groupadd -r --gid=${GROUP_ID} pontoon && useradd --uid=${USER_ID} --no-log-init -r -m -g pontoon pontoon
RUN chown -R pontoon:pontoon /app
USER pontoon

# Install the server's Node.js requirements
ENV YUGLIFY_BINARY /app/node_modules/.bin/yuglify
ENV TERSER_BINARY /app/node_modules/.bin/terser
COPY --chown=pontoon:pontoon pontoon/package.json .
RUN npm install

COPY --chown=pontoon:pontoon ./docker/config/server.env .env
COPY --chown=pontoon:pontoon . /app/

RUN python manage.py collectstatic

STOPSIGNAL SIGINT
CMD ["/app/docker/server_run.sh"]

You can peruse it inside the repo here:

pontoon/docker/Dockerfile at main · mozilla/pontoon
Mozilla’s Localization Platform. Contribute to mozilla/pontoon development by creating an account on GitHub.

🧑‍💻 Want to contribute?

Pontoon is an open source project supported by Mozilla, so you can expect to find friendly faces, open governance and good vibes.

There are over 300 open issues (and over 300 closed ones) to dive into:

Issues · mozilla/pontoon
Mozilla’s Localization Platform. Contribute to mozilla/pontoon development by creating an account on GitHub.

📬 Want Awesome F/OSS in your inbox?

We'll send you new articles as soon as they go live.