The Forgejo translations being trapped in a proprietary service would be a blocker in the event of a hard fork. Late 2022 the strategy for localization was to:
- have a script to patch the existing translations where relevant
- add new strings and resolve conflicts weekly (those are not translated at all)
It worked fine until now, the overhead and problems were close to non-existent. Nobody knew Forgejo and establishing a translation team would have been difficult then but things are different now. There are significantly more people aware of what Forgejo is and willing to help. @Werenter recently started to work on it and got inspiration from @delvh previous work.
TODO:
- create a translation team
- propose a localization team forgejo/governance#61
- create a translation https://matrix.to/#/#forgejo-localization:matrix.org
- add the chatroom to the Forgejo space
- agreement finalized for the localization team forgejo/governance#61
- draft of the documentation of the localization team forgejo/governance#62
- document the localization team forgejo/governance#62
- recruit translators to be reviewers vetting translations
- 21 January 2024 call for participation in the development chatroom
- update the website with a link encouraging invovlement
- initial translation team candidates
- Arabic @oatbiscuits
- Dutch @Gusted
- French @dachary
- Russian @0eoc @Werenter
- Hungarian @algernon
- Greek @n0toose
- German @fnetX
- Ukranian @nykula
- document the l10n workflow (see the PR)
- make Forgejo translation files authoritative (see the pull request)
- modify build/merge-forgejo-locales.go to produce a minimal diff
- collect all changes to options/locale/locale_en-US.ini from the feature branches
- cherry pick changes from https://codeberg.org/forgejo/forgejo-translation / https://translate.codeberg.org/projects/forgejo/forgejo-test/
- add
[common]to the beginning of all files. It will be treated as no section and is a requirement for weblate which would otherwise be confused by the absence of section (see also the content duplication bug) - add support for
[common]in addition to[DEFAULT]in Forgejodiff --git a/modules/translation/i18n/localestore.go b/modules/translation/i18n/localestore.go index f5a951a79f..5fc992794e 100644 --- a/modules/translation/i18n/localestore.go +++ b/modules/translation/i18n/localestore.go @@ -54,7 +54,7 @@ func (store *localeStore) AddLocaleByIni(langName, langDesc string, source, more for _, section := range iniFile.Sections() { for _, key := range section.Keys() { var trKey string - if section.Name() == "" || section.Name() == "DEFAULT" { + if section.Name() == "" || section.Name() == "DEFAULT" || section.Name() == "common" { trKey = key.Name() } else { trKey = section.Name() + "." + key.Name() - commit to https://codeberg.org/forgejo/forgejo/src/branch/forgejo-development
- 28 January cleanup
- resolve conflict in
[GITEA] notifies admins on new user registration - remove the forgejo-i18n branch
- merge
frogejo-developmentintoforgejo
- resolve conflict in
- reconfigure https://translate.codeberg.org/settings/forgejo/forgejo/#vcs to use https://codeberg.org/forgejo/forgejo and the forgejo branch
- reset https://translate.codeberg.org/projects/forgejo/forgejo/#repository
image - (hard fork only) run build/crowdin-to-weblate.sh when cherry-picking
- create a forgejo weblate project
- https://translate.codeberg.org/projects/forgejo/
- to enforce the desired workflow the "Enable reviews" button must be set in https://translate.codeberg.org/settings/forgejo/#workflow
- Add a banner so people do not start translating during the transition phase
image - select "Gitea via pull request" strategy, which relies on weblate being configured server side to open pull requests
- create a localization group
image - invite localization team members to the "localization" group
- approve all existing strings, thus preventing them from being modified by random users.
image
- adding weblate translations to Forgejo is done manually by a member of the team merging the weblate pull request
image