Document localization teams.

This commit is contained in:
Kat
2026-02-27 11:56:50 +11:00
parent d68f51672e
commit f833928fcd

View File

@@ -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