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/<language>/messages.po`.
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
cd /path/to/friendica-addons/<addon_name>
/path/to/friendica/bin/run_xgettext.sh -s
-In either case, you need to commit the updated `<addon_name>/lang/C/messages.po`.
+In either case, you need to commit the updated `<addon_name>/lang/C/messages.po` to your working branch.
## Update translations from Transifex
Please download the Transifex file "for use" in `view/lang/<language>/messages.po`.
-Then run `bin/console po2php view/lang/<language>/messages.po` to update the related `strings.php` file.
+Then run `bin/console po2php view/lang/<language>/messages.po` to update the related `strings.php` file and commit both files to your working branch.
### Using the Transifex client
$> tx pull -l eo
-Then run `bin/console po2php view/lang/<language>/messages.po` to update the related `strings.php` file.
+Then run `bin/console po2php view/lang/<language>/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`