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:

  • msgid is the original interface text. Do not change it.
  • msgstr is the translated text.
  • msgid_plural and numbered msgstr fields contain plural forms.
  • A fuzzy flag 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 .po files.
  • Handheld Daemon keeps PO and POT files 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.