Skip to content

i18n/localisation/internationalisation for the applications (GUI, CLI) #11783

@Byron

Description

@Byron

This is a tracking ticket for internationalising the application. @nshcr has driven this topic forward as a community effort, but this ticket is here to keep track of what happened, and ideally, what will happen.

For now there is no timeline for releasing this feature to the public.

Anticipated Features

  • a language selector in the settings (initially behind a feature toggle)
  • a way to see the state of the translation, and which translations are missing
  • a way to deal with new translations and missing translations
  • a concept for how to validate the look of translations and allow users to suggest improvements (maybe by giving access to the translation key?)
  • Automatically detecting the user's system language and switching accordingly
  • Translating the application menu bar
  • Uploading the user's locale as telemetry data (which I imagine could be valuable to you)
  • More complete type-safe support and missing-translation checks
  • Localization of but command output (low priority, requires Rust i18n support)
  • Frontend styling improvements for localized messages (localized strings can't embed custom components like , which means link styling in some texts needs adjustment)
  • A concept of whether the web presence can also be translated, and how.

Fully Supported Languages

  • English
  • Chinese
  • Japanese
  • German1
  • Spanish1

Out of scope

This issue isn't about the translation of the documentation. People can typically use machine translations for this, and these only get better.

PRs

Research

Frontend (by @nshcr)

(This is a partial copy of this PR text)

Screen.Recording.2026-01-11.at.21.42.34.mov

There are many i18n libraries available in the Svelte ecosystem. My choice to port vue-i18n is largely personal: it's feature-rich, actively maintained, and developed directly by the Vue core team, which gives me confidence in its long-term maintenance and support.

That said, a downside is that it's not an i18n solution designed specifically for Svelte, so its level of framework-specific integration is relatively low. However, it fits well with GitButler's service-injection-based architecture, reduces coupling to a specific frontend framework, and allows localization to be introduced incrementally.

Below are some other Svelte i18n libraries I've looked into. Their functionality is broadly similar and they're listed here for comparison.

AI Prompts

Review the localization translations for Chinese, Japanese, English, and German file by file and field by field. English is the source text. Chinese is a human-reviewed reference translation. Japanese and German are AI-generated translations.
The translations should be professional and accurate. The tone should match the English as closely as possible, if the original tone is unclear, prefer a casual and relaxed style.
Carefully consider the differences between languages and perform this task step by step and patiently. Do not guess when unsure - look up the relevant code context where the string is used.
If you find any missing translations in any language, fill them in following the same standards.

Footnotes

  1. Natives are on the team 2

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-Tracking IssueCategory: A meta-issue that keeps track of a more general matter

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions