]> git.mxchange.org Git - friendica.git/blobdiff - doc/translations.md
Merge remote-tracking branch 'upstream/2023.09-rc' into user-defined-channels
[friendica.git] / doc / translations.md
index f12f070655aedc7bf0232110f4fe21f511c4e8bb..4c84b67a81358908db9581a189da34a8934d138b 100644 (file)
@@ -7,9 +7,9 @@ Friendica translations
 
 The Friendica translation process is based on `gettext` PO files.
 
 
 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`.
-2. This file makes translations strings available at [the Transifex Friendica page](https://www.transifex.com/Friendica/friendica/dashboard/).
+Basic workflow:
+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://app.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`.
 5. PO files are converted to PHP arrays in `view/lang/<language>/strings.php` that are ultimately used by Friendica to display the translations.
 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`.
 5. PO files are converted to PHP arrays in `view/lang/<language>/strings.php` that are ultimately used by Friendica to display the translations.
@@ -17,13 +17,23 @@ Basic worflow:
 ## Translate Friendica in your favorite language
 
 Thank you for your interest in improving Friendica's translation!
 ## Translate Friendica in your favorite language
 
 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.
+Please register a free Transifex account and ask over at [the Transifex Friendica page](https://app.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 if we already support the language in Friendica.
 
 ## Add new translation strings
 
 
 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 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.
 ### 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.
@@ -56,11 +66,11 @@ To use it, first create a configuration file with your credentials.
 On Linux this file should be placed into your home directory `~/.transifexrc`.
 The content of the file should be something like the following:
 
 On Linux this file should be placed into your home directory `~/.transifexrc`.
 The content of the file should be something like the following:
 
-    [https://www.transifex.com]
+    [https://app.transifex.com]
     username = user
     token =
     password = p@ssw0rd
     username = user
     token =
     password = p@ssw0rd
-    hostname = https://www.transifex.com
+    hostname = https://app.transifex.com
 
 Since Friendica version 3.5.1 we ship configuration files for the Transifex client in the core repository and the addon repository in `.tx/config`.
 To update the PO files after you have translated strings of e.g. Esperanto on the Transifex website you can use `tx` to download the updated PO file in the right location.
 
 Since Friendica version 3.5.1 we ship configuration files for the Transifex client in the core repository and the addon repository in `.tx/config`.
 To update the PO files after you have translated strings of e.g. Esperanto on the Transifex website you can use `tx` to download the updated PO file in the right location.
@@ -73,14 +83,14 @@ Then run `bin/console po2php view/lang/<language>/messages.po` to update the rel
 
 ### Basic usage
 
 
 ### Basic usage
 
-- `Friendica\Core\DI::l10n()->t('Label')` => `Label`
-- `Friendica\Core\DI::l10n()->t('Label %s', 'test')` => `Label test`
+- `Friendica\DI::l10n()->t('Label')` => `Label`
+- `Friendica\DI::l10n()->t('Label %s', 'test')` => `Label test`
 
 ### Plural
 
 
 ### Plural
 
-- `Friendica\Core\DI::l10n()->tt('Label', 'Labels', 1)` => `Label`
-- `Friendica\Core\DI::l10n()->tt('Label', 'Labels', 3)` => `Labels`
-- `Friendica\Core\DI::l10n()->tt('%d Label', '%d Labels', 1)` => `1 Label`
-- `Friendica\Core\DI::l10n()->tt('%d Label', '%d Labels', 3)` => `3 Labels`
-- `Friendica\Core\DI::l10n()->tt('%d Label', 'Labels %2%s %3%s', 1, 'test', 'test2')` => `Label test test2`
-- `Friendica\Core\DI::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`