From 5c3cdaf58de82ad52199314ca6a3a4ef31fcdba0 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Fri, 19 Oct 2018 11:24:09 +0200 Subject: [PATCH] Update l10n documentation Signed-off-by: Morris Jobke --- developer_manual/app/l10n.rst | 67 ++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/developer_manual/app/l10n.rst b/developer_manual/app/l10n.rst index d86e3f4e7..9f4d16ea6 100644 --- a/developer_manual/app/l10n.rst +++ b/developer_manual/app/l10n.rst @@ -4,7 +4,7 @@ Translation .. sectionauthor:: Bernhard Posselt -Nextcloud's translation system is powered by `Transifex `_. To start translating sign up and enter a group. If your community app should be added to Transifex contact one of the translation teams `in the forums `_ to set it up for you. +Nextcloud's translation system is powered by `Transifex `_. To start translating sign up and enter a group. If your community app should be translated by the `Nextcloud community on Transifex `_ just follow the setup section below. PHP --- @@ -128,39 +128,72 @@ Creating your own translatable files ------------------------------------ If Transifex is not the right choice or the app is not accepted for translation, -generate the gettext strings by yourself by creating an :file:`l10n/` directory -in the app folder and executing:: +generate the gettext strings by yourself by executing our +`translation tool `_ +in the app folder:: - cd /srv/http/nextcloud/apps/myapp/l10n - perl l10n.pl read myapp + cd /srv/http/nextcloud/apps/myapp + translationtool.phar create-pot-files -The translation script requires **Locale::PO** and **gettext**, installable via:: +The translation tool requires **gettext**, installable via:: - apt-get install liblocale-po-perl gettext + apt-get install gettext -The above script generates a template that can be used to translate all strings -of an app. This template is located in the folder :file:`template/` with the +The above tool generates a template that can be used to translate all strings +of an app. This template is located in the folder :file:`translationfiles/template/` with the name :file:`myapp.pot`. It can be used by your favored translation tool which then creates a :file:`.po` file. The :file:`.po` file needs to be placed in a folder named like the language code with the app name as filename - for example -:file:`l10n/es/myapp.po`. After this step the perl script needs to be invoked to +:file:`translationfiles/es/myapp.po`. After this step the tool needs to be invoked to transfer the po file into our own fileformat that is more easily readable by the server code:: - perl l10n.pl write myapp + translationtool.phar convert-po-files Now the following folder structure is available:: myapp/l10n - |-- es - |   |-- myapp.po |-- es.js |-- es.json - |-- es.php - |-- l10n.pl + myapp/translationfiles + |-- es + |   |-- myapp.po |-- templates |-- myapp.pot -You then just need the :file:`.php`, :file:`.json` and :file:`.js` files for a -working localized app. +You then just need the :file:`.json` and :file:`.js` files for a working localized app. + +Setup of the transifex sync +--------------------------- + +To setup the transifex sync within the Nextcloud community you need to add first the +transifex config to your app folder at :file:`.tx/config` (please replace **MYAPP** with your apps id):: + + [main] + host = https://www.transifex.com + lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja + + [nextcloud.MYAPP] + file_filter = translationfiles//MYAPP.po + source_file = translationfiles/templates/MYAPP.pot + source_lang = en + type = PO + +Then create a folder :file:`l10n` and a file :file:`l10n/.gitkeep` to create an +empty folder which later holds the translations. + +Now the GitHub account `@nextcloud-bot `_ needs +to get write access to your repository. It will run every night and only push +commits to the master branch once there is an update to the translation. In general +you should enable the `protected branches feature `_ +at least for the master branch. + +For the sync job there is a `configuration file `_ +available in our docker-ci repository. Adding there the repo owner and repo name +to the section named **app** via pull request is enough. Once this change is in +one member of the sysadmin team will deploy it to the sync server and the job +will then run once a day. + +If you need help then just `open a ticket with the request `_ +and we can also guide you through the steps.