Translate stillOS
Some stillOS applications use GNU gettext .po files for interface text.
You can contribute to those translations directly in Git today. We plan to
provide a web-based translation platform soon, which will make contributing
possible without editing files or using Git.
Find a translation
The following stillHQ projects currently contain gettext infrastructure (last updated June 27, 2026):
| Project | Current translation files |
|---|---|
| stillCenter | A stillcenter.pot template and source-file list are available. No language .po files are registered yet. |
| stillControl | A source template and gettext configuration are available. No language .po files are registered yet. |
| Quick Setup | Gettext integration and a source-file list are available. No language .po files are registered yet. |
| stillExplore | Meson/gettext integration and a source-file list are available. No language .po files are registered yet. |
| stillTerminal | Meson/gettext integration and a source-file list are available. No language .po files are registered yet. |
Check the project's README and contribution instructions before starting. For
the five stillOS applications above, open an issue or merge request with the
maintainers if you want to add the first translation for a locale so its code
can be added to po/LINGUAS.
A project without .po, .pot, POTFILES, or LINGUAS files may not support
gettext translations yet. Ask its maintainers before adding a new translation
system.
In a clone of the project, list its gettext files with:
find . -type f \( -name '*.po' -o -name '*.pot' \)
The .pot file is the source template. A .po file contains translations for
one locale. Edit the existing .po file for your language. If it does not
exist, open an issue and ask the project's maintainers how they want new
locales named and registered.
Edit a .po file
Use a gettext-aware editor such as Poedit, GNOME Translation Editor, or Lokalize. These tools preserve the file format and help with plural forms. A text editor also works when you are familiar with gettext syntax.
In each entry:
msgidis the original interface text. Do not change it.msgstris the translated text.msgid_pluraland numberedmsgstrfields contain plural forms.- A
fuzzyflag means the translation needs review. Remove the flag only after checking the entry.
Preserve placeholders such as %s, %d, {name}, and markup exactly. Keep
keyboard mnemonics and punctuation appropriate for your language, and use the
comments in the entry for context. Translate the meaning in the interface,
not each word in isolation.
Example:
msgid "Install update"
msgstr "Installer la mise à jour"
Check and submit the translation
If GNU gettext is installed, validate the file before committing it:
msgfmt --check --check-format --output-file=/dev/null path/to/locale.po
Run any project-specific checks, then open a focused merge request against the
project's current default branch. State the language and locale, identify
whether the translation is new or updated, and mention how you validated it.
Do not include generated .mo files unless that project's instructions
explicitly require them.
Established open-source workflows
Other open-source projects use the same approach while offering browser-based contribution:
- Learn GDScript From Zero translations
accepts either Weblate contributions or direct edits to
.pofiles. - Handheld Daemon
keeps
POandPOTfiles in its repository and recommends Weblate for translators. - AutoTrace uses gettext and directs translators to Weblate while documenting its source-string workflow for developers.
stillOS will follow a similar contributor-friendly model when its web-based
translation platform becomes available. Until then, merge requests remain the
way to contribute .po updates.