From 22f10b82a1a1d65d39b1ef9985875c688da776a8 Mon Sep 17 00:00:00 2001 From: Marion Durand Date: Wed, 29 Sep 2021 10:04:23 +0200 Subject: [PATCH] BZ22347: Translatability of ILSDI GetAvailability Some discovery tools can't translate ISL-DI results, it would be useful if we can get ISL-DI output already translate. This patch add an optional parameter language to GetAvailability, and make GetAvailability results translatable. If no parameter is given the output language is the language of the cookies is present or the first language in the opac language list. Test plan: 1. Enable the ILS-DI system preference 2. Locate a record 3. Test these URLs: [OPACBASEURL]/cgi-bin/koha/ilsdi.pl?service=GetAvailability&id=[BIBLIONUMBER]&id_type=biblio and [OPACBASEURL]/cgi-bin/koha/ilsdi.pl?service=GetAvailability&id=[ITEMNUMBER]&id_type=item (Where the [OPACBASEURL] is the OPAC URL of your test instance, [BIBLIONUMBER] and [ITEMNUMBER] are a record number and item number of your choice.) 4. Apply the patch 5. Test these URLs: [OPACBASEURL]/cgi-bin/koha/ilsdi.pl?service=GetAvailability&id=[BIBLIONUMBER]&id_type=biblio&language=[LANGUAGE] and [OPACBASEURL]/cgi-bin/koha/ilsdi.pl?service=GetAvailability&id=[ITEMNUMBER]&id_type=item&language=[LANGUAGE] (Where the [OPACBASEURL] is the OPAC URL of your test instance, [BIBLIONUMBER] and [ITEMNUMBER] are a record number and item number of your choice, [LANGUAGE] is a language code ex: 'en' or 'fr-FR') 6. The results should now be in the requested langugage Sponsored-by: University Lyon 3 --- C4/ILSDI/Services.pm | 18 ++++++++++-------- .../opac-tmpl/bootstrap/en/modules/ilsdi.tt | 2 ++ opac/ilsdi.pl | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/C4/ILSDI/Services.pm b/C4/ILSDI/Services.pm index a28c382d68..3a6e2abbd6 100644 --- a/C4/ILSDI/Services.pm +++ b/C4/ILSDI/Services.pm @@ -953,26 +953,28 @@ sub _availability { my ($itemnumber) = @_; my $item = Koha::Items->find($itemnumber); + use Koha::I18N; + unless ( $item ) { - return ( undef, 'unknown', 'Error: could not retrieve availability for this ID', undef ); + return ( undef, __('unknown'), __('Error: could not retrieve availability for this ID'), undef ); } my $biblionumber = $item->biblioitemnumber; my $library = Koha::Libraries->find( $item->holdingbranch ); my $location = $library ? $library->branchname : ''; - + if ( $item->notforloan ) { - return ( $biblionumber, 'not available', 'Not for loan', $location ); + return ( $biblionumber, __('not available'), __('Not for loan'), $location ); } elsif ( $item->onloan ) { - return ( $biblionumber, 'not available', 'Checked out', $location ); + return ( $biblionumber, __('not available'), __('Checked out'), $location ); } elsif ( $item->itemlost ) { - return ( $biblionumber, 'not available', 'Item lost', $location ); + return ( $biblionumber, __('not available'), __('Item lost'), $location ); } elsif ( $item->withdrawn ) { - return ( $biblionumber, 'not available', 'Item withdrawn', $location ); + return ( $biblionumber, __('not available'), __('Item withdrawn'), $location ); } elsif ( $item->damaged ) { - return ( $biblionumber, 'not available', 'Item damaged', $location ); + return ( $biblionumber, __('not available'), __('Item damaged'), $location ); } else { - return ( $biblionumber, 'available', undef, $location ); + return ( $biblionumber, __('available'), undef, $location ); } } diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt index 0a751c9d2b..fe4696f6c2 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/ilsdi.tt @@ -118,6 +118,8 @@
return_fmt (Optional)
requests a particular format or set of formats in reporting availability
+
language (Optional)
+
requests a particular language for the output, default is the opac cookie language if set, the first language in opac language list or english

Example call

diff --git a/opac/ilsdi.pl b/opac/ilsdi.pl index 1b785211ce..fb5c9d0919 100755 --- a/opac/ilsdi.pl +++ b/opac/ilsdi.pl @@ -100,7 +100,7 @@ my %required = ( # List of optional arguments my %optional = ( 'Describe' => [], - 'GetAvailability' => [ 'return_type', 'return_fmt' ], + 'GetAvailability' => [ 'return_type', 'return_fmt', 'language' ], 'GetRecords' => ['schema'], 'GetAuthorityRecords' => ['schema'], 'LookupPatron' => ['id_type'], -- 2.17.1