Skip to content

First translations for the Linux app #3643

Closed

Description

@datlechin

Problem

The Linux app ships in English only. linux/po/LINGUAS holds its two comment lines and no locale, so the packages install no catalogue.

The plumbing is in place (linux/ROADMAP.md, Packaging and platform, Translations):

  • The app's strings go through gettext (linux/crates/app/src/i18n.rs): about 1,150 calls in crates/app/src outside the tests, plus the translatable strings in data/resources/ui/, the desktop entry, the metainfo and the GSettings schema.
  • po/POTFILES.in lists every source file, and CI fails when it is stale.
  • linux/po/README.md describes adding a locale with msginit and updating it with tablepro-update-po.

What makes a start harder today:

  • tablepro.pot is not committed (ci(linux): drop the doc-symbol step and stop committing tablepro.pot #3575), and generating it needs gettext 1.0 or newer (linux/po/README.md, Generating tablepro.pot). Ubuntu 26.04 ships 0.23.2 and Fedora 44 ships 0.26, so a translator on either cannot produce the template.
  • Release criterion 9 is still open: a few SSH details from the ssh crate and some TLS failures still reach the user in English (linux/ROADMAP.md, Release criteria).
  • There is no stated place for translators to work.

Proposed solution

  • Start with the languages the macOS app already ships, so the same translators can help: French, Korean, Turkish, Vietnamese, Simplified Chinese and Traditional Chinese (apple/TablePro/Resources/Localizable.xcstrings), as fr, ko, tr, vi, zh_CN and zh_TW.
  • Have CI generate tablepro.pot with gettext 1.0 and publish it, as a workflow artifact on main and a file on each linux-v* release, so translators do not need gettext 1.0 themselves.
  • Decide where translators work, pull requests against po/*.po only or a hosted translation service, and say so in linux/CONTRIBUTING.md and linux/po/README.md.
  • Add a locale to LINGUAS only once it is complete enough to ship, and check that both packages install its .mo and that the app shows it under that locale.
  • Close release criterion 9 before asking for translations, so translators are not asked twice.

Done means: at least one locale is in LINGUAS, the PPA and COPR packages install it, and the app starts translated under that locale.

Alternatives considered

No response

Platform

Linux

Related database type

N/A / General

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions