Bug 21156: Add plural translation capabilities to JS files
authorJulian Maurice <julian.maurice@biblibre.com>
Mon, 4 Jan 2016 20:08:29 +0000 (21:08 +0100)
committerJoy Nelson <joy@bywatersolutions.com>
Thu, 5 Mar 2020 23:24:35 +0000 (23:24 +0000)
commit841a0e573d23dbfb42fc07ab87676c5b95b64fab
tree505e0cdb456e442cbfd468be08285cf8f610eec5
parent07af2a5645303ad35b45fabc3ed966f2ab55899e
Bug 21156: Add plural translation capabilities to JS files

It adds Javascript equivalent of Koha::I18N's exported subroutines, and
they are used the same way.

String extraction is done only on *.js files and require gettext 0.19
(available in Debian jessie, and also in wheezy-backports)

It adds Javascript library Gettext.js for handling translation and a
Perl script po2json to transform PO file into JSON.

Gettext.js and po2json both come from Locale::Simple.
There are several tools named po2json. It's simpler to integrate this
one into Koha than to check if the good one is installed on the system.
Locale::Simple is not needed.

To avoid polluting the global namespace too much, this patch also
introduce a global JS object named Koha and add some stuff in Koha.i18n

Test plan:
1. Add a translatable string in a JS file. For example, add this:
     alert(__nx("There is one item", "There are {count} items", 3,
     {count: 3}));
   to staff-global.js
2. cd misc/translator && ./translate update fr-FR
3. Open misc/translator/po/fr-FR-messages-js.po, verify that your
   string is present, and translate it
4. cd misc/translator && ./translate install fr-FR
5. (Optional) Verify that
   koha-tmpl/intranet-tmpl/prog/fr-FR/js/locale_data.js exists and
   contains your translation
6. Open your browser on the staff main page, change language and verify
   that the message is translated
7. Repeat 1-6 on OPAC side

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Works well, translation is OK and test message is displayed correctly.
Current qa-tool error is a false positive.
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Joy Nelson <joy@bywatersolutions.com>
C4/Installer/PerlDependencies.pm
koha-tmpl/intranet-tmpl/js/Gettext.js [new file with mode: 0644]
koha-tmpl/intranet-tmpl/js/i18n.js [new file with mode: 0644]
koha-tmpl/intranet-tmpl/prog/en/includes/doc-head-close.inc
koha-tmpl/opac-tmpl/bootstrap/js/Gettext.js [new file with mode: 0644]
koha-tmpl/opac-tmpl/bootstrap/js/i18n.js [new file with mode: 0644]
misc/translator/LangInstaller.pm
misc/translator/po2json [new file with mode: 0755]