Bug 21156: Add plural translation capabilities to JS files
commit9d6ec5c64bd2d11cd143dfb357377e48237cb229
authorJulian Maurice <julian.maurice@biblibre.com>
Mon, 4 Jan 2016 20:08:29 +0000 (4 21:08 +0100)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 10 Feb 2020 10:14:46 +0000 (10 10:14 +0000)
tree7aaf6b81698538034ec774409164622041d75f6d
parent17400198f02f30ec5ad2710efe6f10a950a96879
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>
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]