Koha-clms/Koha/Template/Plugin
Julian Maurice d708255c7a Bug 15395: Allow correct handling of plural translation
Locale::Maketext does not allow correct handling of plural translation
for languages that have more than one plural forms.
Locale::Messages does.

So Koha::I18N is now a wrapper around Locale::Messages, just like
Locale::TextDomain, and export the same symbols as Locale::TextDomain.
You can refer to documentation of Locale::TextDomain to know how to use
exported subroutines.

Example usage:
  __("Hi")
  __x("Hi {name}", name => 'Bob')
  __n("item", "items", $num_items)
  __nx("one item", "{count} items", $num_items, count => $num_items)
  __p("Bibliographic record", "item")

This patch also brings Koha::I18N power to Template::Toolkit templates
by adding a TT plugin.
This plugin can be used like this:

[%# USE the plugin and define some macros %]
[% PROCESS 'i18n.inc' %]

[%# tn is the equivalent of __n %]
[%# macro names can't start with underscore, t is for "translate" %]
[% tn('item', 'items', num_items) %]
Extraction of strings from templates is a bit complicated and use
Template::Parser and PPI. Template is compiled into Perl code and then
analyzed by PPI. It is slow, but should be correct even with complex
constructions.

Remove dependency to Locale::Maketext and Locale::Maketext::Lexicon
Add dependency to Locale::Messages and PPI

Test plan for translation in Perl code:
1. Open a .pl script or .pm module with your favorite text editor
2. Add 'use Koha::I18N;' in the beginning of file
3. Use one of the subroutines exported by Koha::I18N and be sure to have
   a way to visualize the result (pass result to the template for
   example, or simply warn and watch the log file)
4. cd misc/translator && ./translate update fr-FR # try other languages
5. Open misc/translator/po/fr-FR-messages.po and translate your
   string(s)
   You may need to change the "Plural-Forms" header. See
   https://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html
6. ./translate install fr-FR
7. Use your web browser to go to the page that should display the
   translation, change language and verify the translation is correct
8. prove t/Koha/I18N.t

Test plan for translation in templates:
1. Open a template file (.tt or .inc) with your favorite text editor
2. Add the PROCESS directive mentioned above in the beginning of file
3. Use one of the t* macros defined in i18n.inc. They are used like
   their "__" equivalent, with one difference: the 'x' variants take a
   hashref instead of a hash as last parameter
4. cd misc/translator && ./translate update fr-FR
5. Open misc/translator/po/fr-FR-messages.po and translate your
   string(s)
6. ./translate install fr-FR
7. Use your web browser to go to the page that should display the
   translation, change language and verify the translation is
   correct

Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
2018-11-08 15:55:50 +00:00
..
Asset.pm Bug 20538: ->tag is private - tell it explicitly 2018-04-13 12:57:32 -03:00
AudioAlerts.pm Bug 11431: (QA followup) Move AudioAlerts to a separate plugin 2015-11-04 12:33:10 -03:00
AuthorisedValues.pm Bug 21593: Remove GROUP BY from GetAuthValueDropbox 2018-10-18 11:54:25 +00:00
Biblio.pm Bug 14610 - Add and update modules 2016-10-26 12:15:13 +00:00
Borrowers.pm Bug 12461 - Add patron clubs feature 2017-04-28 08:37:44 -04:00
Branches.pm Bug 7534: Use search parameters for Koha::Template::Plugin::Branches->all 2018-09-06 17:27:05 +00:00
Cache.pm Bug 17189: Add the ability to define several memcached namespaces - replace existing occurrences 2016-09-08 10:24:46 +00:00
Categories.pm Bug 20226: Centralize update child code (CATCODE_MULTI) 2018-08-14 11:58:26 +00:00
CirculationRules.pm Bug 18887: Use get_effective_rule instead of search 2018-10-03 17:58:15 +00:00
ColumnsSettings.pm Bug 10212: Columns configuration for tables 2014-08-26 09:28:03 -03:00
HtmlTags.pm Bug 18665 - Translatability: Add tt filter to allow html tags inside tt directives 2017-06-21 11:22:18 -03:00
I18N.pm Bug 15395: Allow correct handling of plural translation 2018-11-08 15:55:50 +00:00
ItemTypes.pm Bug 17843: [QA Follow-up] Some polishing 2017-07-05 13:42:21 -03:00
Koha.pm Bug 18026: Correct URL to database columns from .pref files 2017-02-21 19:54:23 +00:00
KohaDates.pm Bug 9978: Replace license header with the correct license (GPLv3+) 2015-04-20 09:59:38 -03:00
KohaPlugins.pm Bug 21352: Allow plugins to add CSS and Javascript to Staff interface 2018-10-03 17:45:57 +00:00
KohaSpan.pm Bug 15707: (QA follow-up) Allow object names to be styled without impeding translation 2018-02-12 15:41:08 -03:00
Price.pm Bug 4078: Pass with_symbol to module 2018-03-23 11:45:38 -03:00
Remove_MARC_punctuation.pm Bug 19578: Remove MARC punctuation in notices (TT syntax) 2018-04-04 15:45:43 -03:00
To.pm Bug 19655: Make To.json escape doesn't escape newlines to create valid JSON 2017-11-26 12:59:04 -03:00
raw.pm Bug 13618: Add POD to raw.pm 2018-08-17 16:14:14 +00:00