diff --git a/docs/translations.markdown b/docs/translations.markdown index 71bd8c5..c0aa591 100644 --- a/docs/translations.markdown +++ b/docs/translations.markdown @@ -5,24 +5,72 @@ How to translate Miniflux to a new language? -------------------------------------------- - Translations are stored inside the directory `locales` -- There is sub-directory for each language, by example for french we have `fr_FR`, for italian `it_IT` etc... +- There is a sub-directory for each language, by example for the French we have `fr_FR`, Italian `it_IT` etc... - A translation is a PHP file that return an Array with a key-value pairs - The key is the original text in english and the value is the translation for the corresponding language +- **French translations are always up to date** +- Always use the last version (branch master) -French translations are always up to date (because I am french). +### Plurals + +Each translation file has a plural formula defined. This formula is used to determine wether a plural for the current number is needed. For languages with multiple plurals, the formula determine which plural form is the right one. + +You can get the formula for your language from https://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html. + +The formula need to be adjusted to be valid php code. Do not hesitate to ask for an adjusted formula in the bugtracker. + +You need to create a list of strings for terms that have a plural. For example the plural for the English translation looks like the following: + +``` + 'plural' => function($n) { return ($n != 1); }, + 'After %d day' => array('After %d day', 'After %d days'), +``` ### Create a new translation: 1. Make a new directory: `locales/xx_XX` by example `locales/fr_CA` for French Canadian 2. Create a new file for the translation: `locales/xx_XX/translations.php` -3. Use the content of the french locales and replace the values +3. Use the content of the French locale and replace the values 4. Inside the file `models/config.php`, add a new entry for your translation inside the function `get_languages()` 5. Check with your local installation of Miniflux if everything is ok -6. Send a pull-request with Github +6. Send a [pull-request with Github](https://help.github.com/articles/using-pull-requests/) How to update an existing translation? -------------------------------------- 1. Open the translation file `locales/xx_XX/translations.php` -2. Missing translations are commented and the values are empty, just fill blank and remove comments -3. Check with your local installation of Miniflux and send a pull-request +2. Missing translations are commented with `//` and the values are empty, just fill blank and remove the comment +3. Check with your local installation of Miniflux and send a [pull-request](https://help.github.com/articles/using-pull-requests/) + +How to add new translated text in the application? +-------------------------------------------------- + +Translations are displayed with the following functions in the source code: + +- `t()`: escaped HTML text +- `tne()`: displayed with no escaping +- `dt()`: date using `strftime()` formats + +Always use the english version in the source code. + +How to find missing translations in the applications? +----------------------------------------------------- + +From a Unix shell run: + +```bash +./scripts/find-strings.sh +``` + +All missing translations are displayed on the screen. Put that in the french locale and sync other locales (see below). + +How to synchronize translation files? +------------------------------------- + +From a Unix shell run this command: + +```bash +./scripts/sync-locales.php +``` + +The french translation is used a reference for other locales.