X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=doc%2Ftranslations.md;h=8b7077b6b17617e97779eb2a46b28bd7d5566b83;hb=9d26a054d5b05b751e1a729984236538e87dc2a2;hp=e545aa1c1e4af4526d70dc1effc1957f12922018;hpb=9102a37b371c0e2cb5e0393484465652076f0d8d;p=friendica.git diff --git a/doc/translations.md b/doc/translations.md index e545aa1c1e..8b7077b6b1 100644 --- a/doc/translations.md +++ b/doc/translations.md @@ -8,7 +8,7 @@ Friendica translations The Friendica translation process is based on `gettext` PO files. Basic worflow: -1. `xgettext` is used to collect translation strings across the project in the master PO file located in `view/lang/C/messages.po`. +1. `xgettext` is used to collect translation strings across the project in the authoritative PO file located in `view/lang/C/messages.po`. 2. This file makes translations strings available at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/). 3. The translation itself is done at Transifex by volunteers. 4. The resulting PO files by languages are manually updated in `view/lang//messages.po`. @@ -20,10 +20,20 @@ Thank you for your interest in improving Friendica's translation! Please register a free Transifex account and ask over at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/) to join the translation team for your favorite language. As a rule of thumb, we add support for a language in Friendica when at least 50% of the strings have been translated to avoid a scattered experience. -For addons, we add support for a language when all the strings for this addon have been translated and only if we already support the language in Friendica. +For addons, we add support for a language when if we already support the language in Friendica. ## Add new translation strings +### Supported gettext version + +We currently support the gettext version 0.19.8.1 and actively check new translation strings with this version. + +If you don't use this version, it's possible that our checks fail (f.e. because of tiny differences at linebreaks). +In case you do have a Docker environment, you can easily update the translations with the following command: +```shell +docker run --rm -v $PWD:/data -w /data friendicaci/transifex bin/run_xgettext.sh +``` + ### Core Once you have added new translation strings in your code changes, please run `bin/run_xgettext.sh` from the base Friendica directory and commit the updated `view/lang/C/messages.po` to your branch. @@ -37,13 +47,13 @@ Otherwise: cd /path/to/friendica-addons/ /path/to/friendica/bin/run_xgettext.sh -s -In either case, you need to commit the updated `/lang/C/messages.po`. +In either case, you need to commit the updated `/lang/C/messages.po` to your working branch. ## Update translations from Transifex Please download the Transifex file "for use" in `view/lang//messages.po`. -Then run `bin/console po2php view/lang//messages.po` to update the related `strings.php` file. +Then run `bin/console po2php view/lang//messages.po` to update the related `strings.php` file and commit both files to your working branch. ### Using the Transifex client @@ -67,20 +77,20 @@ To update the PO files after you have translated strings of e.g. Esperanto on th $> tx pull -l eo -Then run `bin/console po2php view/lang//messages.po` to update the related `strings.php` file. +Then run `bin/console po2php view/lang//messages.po` to update the related `strings.php` file and commit both files to your working branch. ## Translation functions usage ### Basic usage -- `Friendica\Core\L10n::t('Label')` => `Label` -- `Friendica\Core\L10n::t('Label %s', 'test')` => `Label test` +- `Friendica\DI::l10n()->t('Label')` => `Label` +- `Friendica\DI::l10n()->t('Label %s', 'test')` => `Label test` ### Plural -- `Friendica\Core\L10n::tt('Label', 'Labels', 1)` => `Label` -- `Friendica\Core\L10n::tt('Label', 'Labels', 3)` => `Labels` -- `Friendica\Core\L10n::tt('%d Label', '%d Labels', 1)` => `1 Label` -- `Friendica\Core\L10n::tt('%d Label', '%d Labels', 3)` => `3 Labels` -- `Friendica\Core\L10n::tt('%d Label', 'Labels %2%s %3%s', 1, 'test', 'test2')` => `Label test test2` -- `Friendica\Core\L10n::tt('%d Label', 'Labels %2%s %3%s', 3, 'test', 'test2')` => `Labels test test2` +- `Friendica\DI::l10n()->tt('Label', 'Labels', 1)` => `Label` +- `Friendica\DI::l10n()->tt('Label', 'Labels', 3)` => `Labels` +- `Friendica\DI::l10n()->tt('%d Label', '%d Labels', 1)` => `1 Label` +- `Friendica\DI::l10n()->tt('%d Label', '%d Labels', 3)` => `3 Labels` +- `Friendica\DI::l10n()->tt('%d Label', 'Labels %2%s %3%s', 1, 'test', 'test2')` => `Label test test2` +- `Friendica\DI::l10n()->tt('%d Label', 'Labels %2%s %3%s', 3, 'test', 'test2')` => `Labels test test2`