Koha/C4
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
..
AuthoritiesMarc Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Barcodes Bug 14752 - (QA followup) Remove annoying modal, use dialog box instead 2016-09-13 17:21:05 +00:00
ClassSortRoutine Bug 16011: $VERSION - Remove use vars qw(); 2016-03-24 17:20:39 +00:00
Creators Bug 15766: Fix incorrect GROUP BY 2018-10-24 17:15:36 +00:00
External Bug 21403: Add Indian Amazon Affiliate option to AmazonLocale setting 2018-10-02 00:03:03 +00:00
Form Bug 16259: Replace CGI->param with CGI->multi_param in list context - part 2 2016-05-16 17:28:06 +00:00
Heading Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
ILSDI Bug 21681: Improve the account lines fetch 2018-10-31 13:52:08 +00:00
Installer Bug 15395: Allow correct handling of plural translation 2018-11-08 15:55:50 +00:00
Labels Bug 21719: Fix typos 2018-11-08 02:18:46 +00:00
Linker
Members Bug 20444: Remove sub GetAttributes 2018-05-03 13:26:49 -03:00
OAI Bug 18601: OAI/Sets.t mangles data due to truncate in ModOAISetsBiblios 2017-06-13 16:18:59 -03:00
Output
Patroncards Bug 20084: Fix Industrial2of5 and COOP2of5 patron card layouts 2018-07-12 12:39:34 +00:00
Reports Bug 20495: Remove get_saved_report 2018-07-02 12:06:54 +00:00
Search Bug 17323: Column search_history.time cannot be null 2016-11-18 13:51:37 +00:00
Serials Bug 20144: [sql_modes] Add default value for subscription_numberpatterns.description in tests 2018-02-13 13:58:53 -03:00
SIP Bug 15494: Update display of renewal errors 2018-11-07 21:39:38 +00:00
Utils Bug 20455: Fix sort patrons by date expired 2018-03-28 15:25:46 -03:00
Accounts.pm Bug 20629: Remove ability to 'reverse' payments 2018-11-06 16:32:34 +00:00
Acquisition.pm Bug 15184: Add the ordernumbers filters to GetHistory 2018-11-08 15:52:57 +00:00
Auth.pm Bug 11897: 'superlibrarian' has 'stockrotation' perms 2018-10-09 15:46:07 +00:00
Auth_cas_servers.yaml.sample Bug 17065 - Rename C4/Auth_cas_servers.yaml.orig 2016-08-08 13:16:36 +00:00
Auth_with_cas.pm Bug 19160: Add POD 2018-03-23 11:45:38 -03:00
Auth_with_ldap.pm Bug 18947: LDAP - do not assume anonymous bind if no user or password 2018-08-20 14:40:13 +00:00
Auth_with_shibboleth.pm Bug 19625: Enable Shibboleth auto-provisioning for Plack 2018-10-09 15:02:50 +00:00
AuthoritiesMarc.pm Bug 21581: (QA follow-up) Update comment according to code in SearchAuthorities 2018-10-31 13:17:48 +00:00
BackgroundJob.pm Bug 16011: $VERSION - Remove empty BEGIN block 2016-03-24 17:20:41 +00:00
Barcodes.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Biblio.pm Bug 14385: (QA follow-up) Additional changes and fixes 2018-11-02 10:33:12 +00:00
Bookseller.pm Bug 14535: Update the supplier filter too 2017-03-31 12:38:44 +00:00
Boolean.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Breeding.pm Bug 12747: (QA follow-up) Treat 010 according to marcflavour 2018-10-01 13:56:26 +00:00
Budgets.pm Bug 21604: Fix add/edit fund/budget 2018-11-02 10:33:01 +00:00
Calendar.pm Bug 14572 - insert_single_holiday() forces a value on an AUTO_INCREMENT column, during an INSERT 2017-07-06 14:29:04 -03:00
Charset.pm Bug 18910: Revert "Bug 18152 : fix unimarc label in SetMarcUnicodeFlag" 2017-07-26 14:01:51 -03:00
Circulation.pm Bug 15494: (follow-up) Move yaml syspref code to its own sub in SySpref object 2018-11-07 21:39:39 +00:00
ClassSortRoutine.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
ClassSource.pm Bug 17208: Checking if classification source or filing rule already exists before adding 2016-12-23 11:33:48 +00:00
Context.pm Bug 14302: (follow-up) Remove traces in C4::Search and C4::Context 2018-08-31 11:24:22 +00:00
Contract.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
CourseReserves.pm Bug 21603: Remove incorrect GROUP BY from C4::CourseReserves 2018-10-26 16:33:14 +00:00
Creators.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Debug.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Heading.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
HoldsQueue.pm Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
HTML5Media.pm Bug 21742: Fix YouTube variable propagation 2018-11-01 18:59:33 +00:00
Images.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
ImportBatch.pm Bug 21183: Replace C4::Items::GetItemnumberFromBarcode calls 2018-08-30 13:40:35 +00:00
ImportExportFramework.pm Bug 17389: Clear logs 2016-10-11 16:18:10 +00:00
InstallAuth.pm Bug 21137: Replace USER_INFO with logged_in_user 2018-08-14 12:43:10 +00:00
Installer.pm Bug 21654: Remove refund_lost_item_fee_rules.sql from the installer process 2018-10-26 17:09:59 +00:00
ItemCirculationAlertPreference.pm Bug 15407: Koha::Patron::Categories - replace C4::Category->all 2016-09-08 13:29:03 +00:00
Items.pm Bug 21413: Fix condition to avoid operator bnding isssues 2018-11-08 13:32:42 +00:00
Koha.pm Bug 18322: Add a facet for ccode fields to Zebra 2018-07-18 17:42:48 +00:00
Labels.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Languages.pm Bug 20115: Set the languages order with the pref values 2018-04-04 15:45:43 -03:00
Letters.pm Bug 15971: Add biblioitems to available fields for serial claim notices and fix notices editor display 2018-10-01 13:56:34 +00:00
Linker.pm
Log.pm Bug 19528: Fix a few typos like corrosponding 2017-10-27 14:09:04 -03:00
MarcModificationTemplates.pm Bug 13560: Add an 'Add' option for marc modification templates 2018-07-19 17:22:18 +00:00
Matcher.pm Bug 21606: [sql_modes] Fix matching rules insert 2018-11-02 10:33:08 +00:00
Members.pm Bug 21015: fix performance issue with C4::Members 2018-11-08 02:18:48 +00:00
Message.pm Bug 19743: Update header and footer on each item for checkin / checkout / renewal notices 2018-08-14 11:55:07 +00:00
NewsChannels.pm Bug 19528: Fix a few typos like corrosponding 2017-10-27 14:09:04 -03:00
Output.pm Bug 20661: (QA follow-up) Add POD for output_and_exit 2018-08-10 12:23:03 +00:00
Overdues.pm Bug 21196: Use replacement cost from the item type if not set at item level 2018-09-26 16:00:30 +00:00
Patroncards.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Print.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
Record.pm Bug 14385: Squash of a lot of patches rebased 2018-11-02 10:33:12 +00:00
Reports.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
Reserves.pm Bug 15486: (follow-up) Default to unlimited 2018-10-24 13:24:06 +00:00
Ris.pm Bug 10306: Core module changes for multiple mappings 2017-12-07 14:44:15 -03:00
RotatingCollections.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
Scheduler.pm Bug 16011: $VERSION - Remove comments 2016-03-24 17:20:29 +00:00
Scrubber.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
Search.pm Bug 20078: Add accelerated reading indexes to getIndexes 2018-11-06 12:22:47 +00:00
Serials.pm Bug 20351: Shortcut serials scripts if a blocking error appeared 2018-10-17 14:25:30 +00:00
Service.pm Bug 7550: [QA Follow-up] Resolve param warning from sco-patron-image 2017-05-08 09:00:26 -04:00
ShelfBrowser.pm Bug 19040: Refactor GetMarcBiblio parameters 2017-08-25 10:23:42 -03:00
SMS.pm Bug 19134: C4::SMS falils on long driver name 2017-08-25 10:51:24 -03:00
SocialData.pm
Stats.pm Bug 20510: Remove unused sub TotalPaid from C4::Stats 2018-04-05 14:17:36 -03:00
Suggestions.pm Bug 13287: (QA follow-up) Extend Suggestions.t for DelSuggestionsOlderThan 2018-02-26 13:24:45 -03:00
Tags.pm Bug 16637: Dependency for C4::Tags not listed 2016-06-10 18:05:10 +00:00
Templates.pm Bug 20538: Remove the need of writing [% KOHA_VERSION %] everywhere 2018-04-13 11:49:44 -03:00
TmplToken.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
TmplTokenType.pm Bug 16011: $VERSION - Remove the $VERSION init 2016-03-24 17:20:28 +00:00
TTParser.pm
UsageStats.pm Bug 21226: Remove xISBN services 2018-08-16 13:20:22 +00:00
XISBN.pm Bug 21235: Remove table services_throttle 2018-09-07 15:09:39 +00:00
XSLT.pm Bug 18921: Resolve a few warnings in C4/XSLT.pm 2017-09-07 14:34:42 -03:00