2014-10-09 17:10:36 +00:00
Friendica translations
======================
2016-12-06 14:03:57 +00:00
* [Home ](help )
2018-11-29 03:57:55 +00:00
## Overview
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
The Friendica translation process is based on `gettext` PO files.
2016-01-22 06:36:01 +00:00
2018-11-29 03:57:55 +00:00
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/ ).
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.
2016-01-22 06:36:01 +00:00
2018-11-29 03:57:55 +00:00
## Translate Friendica in your favorite language
2016-01-22 06:36:01 +00:00
2018-11-29 03:57:55 +00:00
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.
2016-01-22 06:36:01 +00:00
2018-11-29 03:57:55 +00:00
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.
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
## Add new translation strings
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
### Core
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
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.
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
### Addon
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
If you have the `friendica-addons` repository in the `addon` directory of your Friendica cloned repository, just run `bin/run_xgettext.sh -a <addon_name>` from the base Friendica directory.
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
Otherwise:
2016-01-22 06:36:01 +00:00
2018-11-29 03:57:55 +00:00
cd /path/to/friendica-addons/< addon_name >
/path/to/friendica/bin/run_xgettext.sh -s
2016-01-22 06:36:01 +00:00
2018-11-29 14:19:33 +00:00
In either case, you need to commit the updated `<addon_name>/lang/C/messages.po` to your working branch.
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
## Update translations from Transifex
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
Please download the Transifex file "for use" in `view/lang/<language>/messages.po` .
2014-10-09 17:10:36 +00:00
2018-11-29 14:19:33 +00:00
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.
2017-10-17 20:48:33 +00:00
2018-11-29 03:57:55 +00:00
### Using the Transifex client
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
Transifex has a client program which allows you to sync files between your cloned Friendica repository and Transifex.
Help for the client can be found at the [Transifex Help Center ](https://docs.transifex.com/client/introduction ).
2017-01-27 11:39:21 +00:00
Here we will only cover basic usage.
After installation of the client, you should have a `tx` command available on your system.
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:
2018-11-29 03:57:55 +00:00
[https://www.transifex.com]
2017-01-27 11:39:21 +00:00
username = user
token =
password = p@ssw0rd
2018-11-29 03:57:55 +00:00
hostname = https://www.transifex.com
2017-01-27 11:39:21 +00:00
2018-11-29 03:57:55 +00:00
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.
2017-01-27 11:39:21 +00:00
$> tx pull -l eo
2018-11-29 14:19:33 +00:00
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.
2018-11-29 03:57:55 +00:00
## Translation functions usage
2017-01-27 11:39:21 +00:00
2018-11-29 03:57:55 +00:00
### Basic usage
2017-01-27 11:39:21 +00:00
2018-11-29 03:57:55 +00:00
- `Friendica\Core\L10n::t('Label')` => `Label`
- `Friendica\Core\L10n::t('Label %s', 'test')` => `Label test`
2017-01-27 11:39:21 +00:00
2018-11-29 03:57:55 +00:00
### Plural
2014-10-09 17:10:36 +00:00
2018-11-29 03:57:55 +00:00
- `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`