🗣️ Pontoon
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:
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:
Here's what the main dashboard of Pontoon looks like:
As with any polished project like Pontoon, there's great documentation for you to check out:
🌠 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:
🧑💻 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:
📬 Want Awesome F/OSS in your inbox?
We'll send you new articles as soon as they go live.