From f833928fcdc2e47c356d4a4aacfaad1b5d8baf94 Mon Sep 17 00:00:00 2001 From: Kat <65649991+00-kat@users.noreply.github.com> Date: Fri, 27 Feb 2026 11:56:50 +1100 Subject: [PATCH] Document localization teams. --- po/README_TRANSLATORS.md | 68 ++++++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 17 deletions(-) diff --git a/po/README_TRANSLATORS.md b/po/README_TRANSLATORS.md index 88fbf1777..4ed877e1e 100644 --- a/po/README_TRANSLATORS.md +++ b/po/README_TRANSLATORS.md @@ -48,12 +48,6 @@ Full locale names are more complicated, but Ghostty does not use all parts. [The `gettext` documentation](https://www.gnu.org/software/gettext/manual/gettext.html#Locale-Names-1) has more information on locale names. -## Localization team name - -Every locale has a localization team that helps keep localizations up to date. -Localization team names _always_ consist of a language code and a country code -(e.g. `de_DE` or `zh_CN`). - ## Translation file names All translation files lie in the `po/` directory, including the main _template_ @@ -140,17 +134,9 @@ You should then be able to run `zig build run` and see your translations in action! See the ["Viewing translations" section](#viewing-translations) below. Before opening a pull request with the new translation file, you should also -add your translation file to the `CODEOWNERS` file. Find the `# Localization` -section near the bottom and add a line like so (where `X.po` is the name of the -translation file that you created and `Y` is your [localization team name](#localization-team-name): - -```diff - # Localization - /po/README_TRANSLATORS.md @ghostty-org/localization - /po/com.mitchellh.ghostty.pot @ghostty-org/localization - /po/zh_CN.po @ghostty-org/zh_CN -+/po/X.po @ghostty-org/Y -``` +update the `CODEOWNERS` file. This is described in more detail in the +["Localization teams" section](#localization-teams)—don't forget to read that +section before submitting a pull request! ## Viewing translations @@ -172,6 +158,54 @@ Some strings are present in multiple places! A notable example is the context menus: the hamburger menu in the header bar duplicates many strings present in the right click menu. +## Localization teams + +Every locale has a localization team consisting of the locale's maintainers. +These maintainers review contributions to their locale's translations, and are +responsible for translating new strings when requested: occasionally, all locale +maintainers are pinged and requested to translate missing strings. + +The primary purposes of being a locale maintainer are a declaration of +_commitment_ to their upkeep, and being _informed_ of updates or update requests +of the translations, via GitHub's review requests or @mentions. + +So that future updates to a locale are possible, each localization team must +have at least two members. If you are introducing a new language, please +**consider volunteering** to be a part of the localization team, by mentioning +that you are willing to be a part of it in the pull request description! You, +and all reviewers, will be offered to join the locale team before the pull +request to add the new language is merged, but this denotes your dedication +upfront—for a pull request adding a new language to be merged, it needs at least +one review from a speaker of that language _and_ at least two localization team +members. No one is _required_ to join a localization team, even if they +introduced support for the language. + +### `CODEOWNERS` + +Localization teams are represented as teams in the Ghostty GitHub organization. +GitHub reads a `CODEOWNERS` file, which maps files to teams, to determine +identify relevant maintainers. When **introducing support for a language**, you +should add the `.po` file to `CODEOWNERS`. + +To do this, find the `# Localization` section near the bottom of the file, and +add a line like so: + +```diff + # Localization + /po/README_TRANSLATORS.md @ghostty-org/localization + /po/com.mitchellh.ghostty.pot @ghostty-org/localization + /po/zh_CN.po @ghostty-org/zh_CN ++/po/X.po @ghostty-org/yy_ZZ +``` + +`X.po` here is the name of the translation file you created. Unlike the +translation file's name, localization team names **always include a language and +a country code**; `yy` here is the _language code_, and `ZZ` is the _country +code_. + +When adding a new entry, try to keep the list in **alphabetical order** if +possible. + ## Style guide These are general style guidelines for translations. Naturally, the specific