Bug 22347: 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

Signed-off-by: Sonia <sonia.bouis@univ-lyon3.fr>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
Marion Durand 2021-09-29 10:04:23 +02:00 committed by Fridolin Somers
parent 014d423413
commit 69b9e1ddf4
3 changed files with 12 additions and 8 deletions

View File

@ -956,8 +956,10 @@ 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;
@ -966,17 +968,17 @@ sub _availability {
my $itemcallnumber = $item->itemcallnumber;
if ( $item->notforloan ) {
return ( $biblionumber, 'not available', 'Not for loan', $location, $itemcallnumber );
return ( $biblionumber, __('not available'), __('Not for loan'), $location, $itemcallnumber );
} elsif ( $item->onloan ) {
return ( $biblionumber, 'not available', 'Checked out', $location, $itemcallnumber );
return ( $biblionumber, __('not available'), __('Checked out'), $location, $itemcallnumber );
} elsif ( $item->itemlost ) {
return ( $biblionumber, 'not available', 'Item lost', $location, $itemcallnumber );
return ( $biblionumber, __('not available'), __('Item lost'), $location, $itemcallnumber );
} elsif ( $item->withdrawn ) {
return ( $biblionumber, 'not available', 'Item withdrawn', $location, $itemcallnumber );
return ( $biblionumber, __('not available'), __('Item withdrawn'), $location, $itemcallnumber );
} elsif ( $item->damaged ) {
return ( $biblionumber, 'not available', 'Item damaged', $location, $itemcallnumber );
return ( $biblionumber, __('not available'), __('Item damaged'), $location, $itemcallnumber );
} else {
return ( $biblionumber, 'available', undef, $location, $itemcallnumber );
return ( $biblionumber, __('available'), undef, $location, $itemcallnumber );
}
}

View File

@ -124,6 +124,8 @@
</dd>
<dt><strong>return_fmt</strong> (Optional)</dt>
<dd>requests a particular format or set of formats in reporting availability</dd>
<dt><strong>language (Optional)</strong></dt>
<dd>requests a particular language for the output, default is the opac cookie language if set, the first language in opac language list or english</dd>
</dl>
<h3>Example call</h3>

View File

@ -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'],