Koha/koha-tmpl/intranet-tmpl/prog/en/modules/labels/label-manage.tt
Pasi Kallinen 9e9088049c Bug 12138 - Use placeholders in translatable Javascript strings
Currently translating Javascript strings with variables in them is hard,
because the strings are created from separate parts. For example:

 _("Are you sure you want to delete the") + " " + count + " " +
_("attached items?")

This is translated in two different parts, and the translator cannot
affect the place where the count-variable is.

Now, if the javascript strings allowed placeholders, similar to how the
template strings do, the above could be written as:

_("Are you sure you want to delete the %s attached
items?").format(count)

This would make translation much easier.

Attached patch adds a Javascript string formatter, and changes all the
concatenated translatable JS strings used in intranet to use that.

To test:
1) cd misc/translator
2) perl translate update xx-YY
3) grep ^msgid po/xx-YY-i-staff-t-prog-v-3006000.po | sort | uniq >
xx-YY-pre
4) apply patch
5) perl translate update xx-YY
6) grep ^msgid po/xx-YY-i-staff-t-prog-v-3006000.po | sort | uniq >
xx-YY-post
7) compare the files: diff -Nurd xx-YY-pre xx-yy-post | less
   should show the javascript strings that changed.
8) Test the UIs where the formatted js strings are used.

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

I tested *most* of the changed files. There were some instances where it
wasn't clear to me how to trigger the warnings which were modified,
especially tags/review.tt, admin/manage-marc-import.tt, and holidays.tt.
Everything I was able to test worked correctly.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>

Works nicely, no regressions found. Thx!

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-04-27 21:24:04 +00:00

168 lines
8 KiB
Text

[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Tools &rsaquo; Labels &rsaquo; Manage label elements</title>
[% INCLUDE 'doc-head-close.inc' %]
[% INCLUDE 'greybox.inc' %]
<script type="text/javascript">
//<![CDATA[
function DeleteConfirm() {
var element_id = selected_layout("delete");
if (element_id>-1) {
var msg = _("Are you sure you want to delete %s %s?").format("[% label_element %]", element_id);
var answer = confirm(msg);
if (answer) {
window.location = "/cgi-bin/koha/labels/label-manage.pl?op=delete&amp;label_element=[% label_element %]&amp;element_id=" + element_id;
}
else {
return; // abort delete
}
}
else {
return; // no layout selected
};
};
function Edit() {
var element_id = selected_layout("edit");
if (element_id>-1) {
window.location = "/cgi-bin/koha/labels/label-edit-[% label_element %].pl?op=edit&amp;element_id=" + element_id;
}
else {
return; // no layout selected
};
};
function Xport() {
batches= new Array;
if(document.layouts.action.length > 0) {
for (var i=0; i < document.layouts.action.length; i++) {
if (document.layouts.action[i].checked) {
batches.push("batch_id=" + document.layouts.action[i].value);
}
}
if (batches.length < 1) {
alert(_("Please select at least one batch to export."));
return; // no batch selected
}
getstr = batches.join("&");
}
else if (document.layouts.action.checked) {
getstr = "batch_id="+document.layouts.action.value;
}
else {
alert(_("Please select at least one batch to export."));
return; // no batch selected
}
return GB_showCenter('Export Labels', "/cgi-bin/koha/labels/label-print.pl?" + getstr, 700, 800);
};
function selected_layout(op) {
var selected = new Array;
if (document.layouts.action.length) {
for (i=0;i<document.layouts.action.length;i++){
if (document.layouts.action[i].checked){
selected.push(i);
}
};
if (selected.length == 1) {
return(document.layouts.action[selected[0]].value);
}
else {
alert(_("Please select only one %s to %s.").format("[% label_element %]", op));
return (-1);
}
}
else {
if (document.layouts.action.checked){
return(document.layouts.action.value);
}
};
alert(_("Please select a %s.").format("[% label_element %]"));
return (-1);
};
//]]>
</script>
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
[% INCLUDE 'datatables.inc' %]
<script type="text/javascript" id="js">
$(document).ready(function() {
$("#labels-table").dataTable($.extend(true, {}, dataTablesDefaults, {
"sPaginationType": "four_button",
"aaSorting": [[ 1, "asc" ]],
"aoColumnDefs": [
{ "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
]
}));
});
</script>
</head>
<body id="labels_label-manage" class="tools labels">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
<div id="breadcrumbs">
<a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo;
<a href="/cgi-bin/koha/tools/tools-home.pl">Tools</a> &rsaquo;
<a href="/cgi-bin/koha/labels/label-home.pl">Labels home</a> &rsaquo;
Manage label [% label_element_title %]
</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
[% INCLUDE 'labels-toolbar.inc' %]
<div class="yui-gc">
<div class="yui-u first" id="manage-label-layouts">
<div class="hint">Current library: [% LoginBranchname %]</div>
[% IF ( table_loop ) %]
<form name="layouts" action="/cgi-bin/koha/label-manage.pl?label_element=[% label_element %]">
<h2>Currently Available [% label_element_title %]</h2>
<table id="labels-table">
[% FOREACH table_loo IN table_loop %]
[% IF ( table_loo.header_fields ) %]
<thead>
<tr>
[% FOREACH header_field IN table_loo.header_fields %]
<th>[% header_field.field_label %]</th>
[% END %]
</tr>
</thead>
[% ELSE %]
<tr>
[% FOREACH text_field IN table_loo.text_fields %]
[% IF ( text_field.select_field ) %]
<td align="center"><input type="checkbox" name="action" value="[% text_field.field_value %]" /></td>
[% ELSIF ( text_field.field_value ) %]
<td>[% text_field.field_value %]</td>
[% ELSE %]
<td>&nbsp;</td>
[% END %]
[% END %]
</tr>
[% END %]
[% END %]
</table>
<fieldset class="action">
<input type="button" id="edit" onclick="Edit()" value="Edit" />
<input type="button" id="delete" onclick="DeleteConfirm()" value="Delete" />
[% IF ( print ) %]<input type="button" id="print" onclick="Xport()" value="Export" />[% END %]
</fieldset>
</form>
[% ELSE %]
<div class="dialog message">
<h4>There are no [% label_element_title %] currently available.</h4>
<p>Use the toolbar above to create a new [% label_element %].</p></div>
[% END %]
</div>
[% IF ( error ) %]
<div class="yui-u">
<div class="dialog alert">
<strong>WARNING:</strong> An error was encountered and the [% op %] operation for [% label_element %] [% element_id %] was not completed. Please have your system administrator check the error log for details.
</div>
</div>
[% END %]
</div>
</div>
</div>
<div class="yui-b">
[% INCLUDE 'labels-menu.inc' %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]