Merge another i18n patch from Craig Ricciuto
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 19 Jun 2008 20:35:21 +0000 (20:35 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 19 Jun 2008 20:35:21 +0000 (20:35 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@9890 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/xul/staff_client/server/locale/en-US/common.properties
Open-ILS/xul/staff_client/server/locale/en-US/patron.properties
Open-ILS/xul/staff_client/server/patron/bill_history.xul
Open-ILS/xul/staff_client/server/patron/display.js
Open-ILS/xul/staff_client/server/patron/holds.js
Open-ILS/xul/staff_client/server/patron/holds.xul
Open-ILS/xul/staff_client/server/patron/holds_overlay.xul
Open-ILS/xul/staff_client/server/patron/info_group.xul

index 08e1554..0ce32ac 100644 (file)
 <!ENTITY staff.patron.hold_notices.add_record_notification.accesskey "A">
 <!ENTITY staff.patron.hold_notices.close_window.label "Close">
 <!ENTITY staff.patron.hold_notices.close_window.accesskey "C">
+<!ENTITY staff.patron.holds_overlay.pickup_lib.label "Pickup Library">
+<!ENTITY staff.patron.holds_overlay.request_lib.label "Requesting Library">
+<!ENTITY staff.patron.holds_overlay.fulfillment_lib.label "Fulfilling Library">
+<!ENTITY staff.patron.holds_overlay.circ_lib.label "Item Circulating Library">
+<!ENTITY staff.patron.holds_overlay.owning_lib.label "Volume Owning Library">
+<!ENTITY staff.patron.holds_overlay.home_lib.label "Patron Home Library foo">
+<!ENTITY staff.patron.holds_overlay.fetch_more.label "Fetch More Holds">
+<!ENTITY staff.patron.holds_overlay.fetch_more.accesskey "M">
+<!ENTITY staff.patron.holds_overlay.lib_filter_checkbox.label "Filter:">
+<!ENTITY staff.patron.holds_overlay.actions_for_holds.label "Actions for Selected Holds">
+<!ENTITY staff.patron.holds_overlay.actions_for_holds.accesskey "S">
+<!ENTITY staff.patron.holds_overlay.holds_export.label "Export">
+<!ENTITY staff.patron.info_group.clone.label "Register a New Group Member by Cloning Selected Patrons">
+<!ENTITY staff.patron.info_group.clone.accesskey "N">
+<!ENTITY staff.patron.info_group.remove.accesskey "R">
+<!ENTITY staff.patron.info_group.remove.label "Remove Selected Patrons from the Group">
+<!ENTITY staff.patron.info_group.move.accesskey "M">
+<!ENTITY staff.patron.info_group.move.label "Move Selected Patrons to ANOTHER patron's group.">
+<!ENTITY staff.patron.info_group.add.accesskey "A">
+<!ENTITY staff.patron.info_group.add.label "Move ANOTHER patron to this patron group.">
+<!ENTITY staff.patron.info_group.retrieve_p.accesskey "P">
+<!ENTITY staff.patron.info_group.retrieve_p.label "Retrieve Selected Patrons">
+<!ENTITY staff.patron.info_group.group_member.label "Group Members">
+<!ENTITY staff.patron.info_group.choose_an_action.label "Choose an Action...">
+<!ENTITY staff.patron.info_group.choose_an_action.accesskey "A">
index e283b17..21803b3 100644 (file)
@@ -16,6 +16,9 @@ common.action_complete=Action completed.
 # common.grouping_string = the string that should be inserted between elements of a grouped list
 common.grouping_string=, 
 common.unimplemented=Not yet implemented
+common.yes=Yes
+common.no=No
+common.check_to_confirm=Check here to confirm this message
 lang.version=remote v1
 openils.global_util.clear_cache.error=Problem clearing the cache: %1$s
 openils.global_util.clipboard.error=Clipboard action failed: %1$s
index 6bce7f5..3f8e733 100644 (file)
@@ -30,7 +30,7 @@ staff.patron.bill_history.handle_add.btn_no=No
 staff.patron.bill_history.handle_add.confirm_message=Check here to confirm this message
 staff.patron.bill_history.print_bills.print_error=printing bills
 staff.patron.bills.bill_payment_amount.credit_amount=Patron only has %1$s in credit.
-staff.patron.bills.bill_change_amount.greedy=Someone wanted more money than they deserved\n
+staff.patron.bills.bill_change_amount.greedy=Someone wanted more money than they deserved
 staff.patron.bills.apply_payment.nothing_applied=No payments or patron credit applied.
 staff.patron.bills.pay.annotate_payment=Please annotate this payment:
 staff.patron.bills.pay.annotate_payment.title=Annotate Payment
@@ -54,11 +54,11 @@ staff.patron.bill_wizard.patron_bill_finish.billing_added=Billing added.
 staff.patron.display.cmd_patron_edit.edit_search=Editor would like to search for: %1$s
 staff.patron.display.spawn_editor.editing_related_patron=Editing Related Patron
 staff.patron.display.init.retrieving=Retrieving...
-staff.patron.display.init.network_request.alert_message=Alert message: "%1$s"<br/><br/>\n
-staff.patron.display.init.network_request.inactive_card=Patron account retrieved with an INACTIVE card.<br/><br/>\n
-staff.patron.display.init.network_request.account_barred=Patron account is BARRED.<br/><br/>\n
-staff.patron.display.init.network_request.account_inactive=Patron account is INACTIVE.<br/><br/>\n
-staff.patron.display.init.network_request.accoutn_expired=Patron account is EXPIRED.<br/><br/>\n
+staff.patron.display.init.network_request.alert_message=Alert message: "%1$s"<br/><br/>
+staff.patron.display.init.network_request.inactive_card=Patron account retrieved with an INACTIVE card.<br/><br/>
+staff.patron.display.init.network_request.account_barred=Patron account is BARRED.<br/><br/>
+staff.patron.display.init.network_request.account_inactive=Patron account is INACTIVE.<br/><br/>
+staff.patron.display.init.network_request.account_expired=Patron account is EXPIRED.<br/><br/>
 staff.patron.display.init.network_request.window_title=Alert
 staff.patron.display.init.network_request.window_message=Press a navigation button above (for example, Check Out) to clear this alert.
 staff.patron.display.init.network_request.dump_error_message=Not re-displaying this alert message: %1$s
@@ -72,3 +72,85 @@ staff.patron.hold_notices.cancel_accesskey=C
 staff.patron.hold_notices.add_notif_record=Add Notification Record
 staff.patron.hold_notices.add_notif_record_accesskey=A
 staff.patron.hold_notices.new_notification.not_created=The notification was not likely created.
+staff.patron.holds.init.hold_num_error=Error retrieving details for hold #%1$s
+staff.patron.holds.show_notifications.error_rendering_notifs=Error rendering/retrieving hold notifications.
+staff.patron.holds.holds_edit_selection_depth.choose_hold_range=Please choose a Hold Range:
+staff.patron.holds.holds_edit_selection_depth.done.label=Done
+staff.patron.holds.holds_edit_selection_depth.done.accesskey=D
+staff.patron.holds.holds_edit_selection_depth.cancel.label=Cancel
+staff.patron.holds.holds_edit_selection_depth.cancel.accesskey=C
+staff.patron.holds.holds_edit_selection_depth.choose_library=Choose a Pick Up Library
+staff.patron.holds.holds_edit_selection_depth.modify_holds_message.singular=Are you sure you would like to change the Hold Range for hold %1$s to "%2$s"?;
+staff.patron.holds.holds_edit_selection_depth.modify_holds_message.plural=Are you sure you would like to change the Hold Range for holds %1$s to "%2$s"?;
+staff.patron.holds.holds_edit_selection_depth.modify_holds_title=Modifying Holds
+staff.patron.holds.holds_not_modified=Holds not likely modified.
+staff.patron.holds.holds_edit_pickup_lib.new_pickup_lib.description=Please choose a new Pickup Library:
+staff.patron.holds.holds_edit_pickup_lib.done.label=Done
+staff.patron.holds.holds_edit_pickup_lib.done.accesskey=D
+staff.patron.holds.holds_edit_pickup_lib.cancel.label=Cancel
+staff.patron.holds.holds_edit_pickup_lib.cancel.accesskey=C
+staff.patron.holds.holds_edit_pickup_lib.choose_lib=Choose a Pick Up Library
+staff.patron.holds.holds_edit_pickup_lib.change_pickup_lib_message.singular=Are you sure you would like to change the Pick Up Library for hold %1$s to %2$s?;
+staff.patron.holds.holds_edit_pickup_lib.change_pickup_lib_message.plural=Are you sure you would like to change the Pick Up Library for holds %1$s to %2$s?;
+staff.patron.holds.holds_edit_pickup_lib.change_pickup_lib_title=Modifying Holds
+staff.patron.holds.holds_edit_phone_notify.new_phone_number=Please enter a new phone number for hold notification (leave the field empty to disable phone notification):
+staff.patron.holds.holds_edit_phone_notify.btn_done.label=Done
+staff.patron.holds.holds_edit_phone_notify.btn_done.accesskey=D
+staff.patron.holds.holds_edit_phone_notify.btn_cancel.label=Cancel
+staff.patron.holds.holds_edit_phone_notify.btn_cancel.accesskey=C
+staff.patron.holds.holds_edit_phone_notify.choose_phone_number=Choose a Hold Notification Phone Number
+staff.patron.holds.holds_edit_phone_notify.confirm_phone_number_change.singular=Are you sure you would like to change the Notification Phone Number for hold %1$s to "%2$s"?
+staff.patron.holds.holds_edit_phone_notify.confirm_phone_number_change.plural=Are you sure you would like to change the Notification Phone Number for holds %1$s to "%2$s"?
+staff.patron.holds.holds_edit_phone_notify.modifying_holds_title=Modifying Holds
+staff.patron.holds.holds_edit_email_notify.description=Send email notifications (when appropriate)?  The email address used is found in the hold recipient account.
+staff.patron.holds.holds_edit_email_notify.btn_email.label=Email
+staff.patron.holds.holds_edit_email_notify.btn_email.accesskey=E
+staff.patron.holds.holds_edit_email_notify.btn_no_email.label=No Email
+staff.patron.holds.holds_edit_email_notify.btn_no_email.accesskey=N
+staff.patron.holds.holds_edit_email_notify.btn_cancel.label=Cancel
+staff.patron.holds.holds_edit_email_notify.btn_cancel.accesskey=C
+staff.patron.holds.holds_edit_email_notify.set_notifs=Set Email Notification for Holds
+staff.patron.holds.holds_edit_email_notify.enable_email.singular=Are you sure you would like to enable email notification for hold %1$s?
+staff.patron.holds.holds_edit_email_notify.enable_email.plural=Are you sure you would like to enable email notification for holds %1$s?
+staff.patron.holds.holds_edit_email_notify.disable_email.singular=Are you sure you would like to disable email notification for hold %1$s?
+staff.patron.holds.holds_edit_email_notify.disable_email.plural=Are you sure you would like to disable email notification for hold %1$s?
+staff.patron.holds.holds_edit_email_notify.mod_holds_title=Modifying Holds
+staff.patron.holds.holds_retarget.reset_hold_message.singular=Are you sure you would like to reset hold %1$s?
+staff.patron.holds.holds_retarget.reset_hold_message.plural=Are you sure you would like to reset holds %1$s?
+staff.patron.holds.holds_retarget.reset_hold_title=Resetting Holds
+staff.patron.holds.holds_retarget.holds_not_reset=Holds not likely reset.
+staff.patron.holds.holds_cancel.cancel_hold_message.singular=Are you sure you would like to cancel hold %1$s?
+staff.patron.holds.holds_cancel.cancel_hold_message.plural=Are you sure you would like to cancel holds %1$s?
+staff.patron.holds.holds_cancel.cancel_hold_title=Cancelling Holds
+staff.patron.holds.holds_cancel.cancel_for_barcodes=For barcodes %1$s, should the associated transits also be cancelled?
+staff.patron.holds.holds_cancel.cancel_for_barcodes.title=Cancelling Transits
+staff.patron.holds.holds_cancel.hold_transits_not_cancelled=Hold transits not likely cancelled.
+staff.patron.holds.holds_cancel.hold_not_cancelled=Holds not likely cancelled.
+staff.patron.holds.show_catalog.unknown_htype=I do not understand the hold type of %1$s so I can not display the appropriate record in the catalog.
+staff.patron.holds.show_catalog.retrieving_title=Retrieving title...
+staff.patron.holds.lib_menus.missing_library_list=Missing library list.
+staff.patron.info_group.retrieve_group_members.failure=Failed to retrieve all the group members.
+staff.patron.info_group.retrieve_patron.tab_name=Retrieving Patron..
+staff.patron.info_group.retrieve_patron.failed_retrieving_patron=Failed to retrieve patron.
+staff.patron.info_group.retrieve_patron.failed_retrieving_patrons=Failed to retrieve patrons.
+staff.patron.info_group.clone_patron.register_clone.tab_name=Register Patron Clone for Group
+staff.patron.info_group.clone_patron.error_spawning_editors=error spawning user editors
+staff.patron.info_group.spwan_editor.editing_patron=Editing Related Patron
+staff.patron.info_group.spwan_search=spawn search
+staff.patron.info_group.remove_patron.warning_message=WARNING: If you remove the currently displayed patron, a NEW group will be displayed in this interface.
+staff.patron.info_group.remove_patron.warning_message_confirm=Remove selected patrons from this group?  %1$s
+staff.patron.info_group.remove_patron.error_removing_patron=error removing patron (id=%1$s) from usergroup
+staff.patron.info_group.remove_patron.patrons_removed_from_group=Patrons removed from group.
+staff.patron.info_group.remove_patron.patrons_not_removed_from_group=Patron not removed from group.
+staff.patron.info_group.link_patron.null_not_allowed=null parameter not allowed
+staff.patron.info_group.link_patron.invalid_parameter=Invalid parameter.  Expected boolean.
+staff.patron.info_group.link_patron.scan_patron_barcode=Please scan a patron barcode:
+staff.patron.info_group.link_patron.move_patron_to_new_usergroup=Move patron %1$s into patron %2$s's usergroup...
+staff.patron.info_group.link_patron.move.label=Move
+staff.patron.info_group.link_patron.move.accesskey=M
+staff.patron.info_group.link_patron.done.label=Done
+staff.patron.info_group.link_patron.done.accesskey=D
+staff.patron.info_group.link_patron.move_patron_to_usergroup=Move Patron into a Usergroup
+staff.patron.info_group.link_patron.error_linking_patron=error linking patron (id=%1$s)
+staff.patron.info_group.link_patron.usergroups_updated=User groups updated.
+staff.patron.info_group.link_patron.error_linking_patrons=error linking patrons
index 5824f9f..3038677 100644 (file)
 
                                if (xul_param('current')) {
                                        $('caption').setAttribute('label',$("patronStrings").getString('staff.patron.bill_history.my_init.current_bills'));
-                                       document.title = 'Current Bills';
+                                       document.title = $("patronStrings").getString('staff.patron.bill_history.my_init.current_bills');
                                } else {
                                        $('caption').setAttribute('label',$("patronStrings").getString('staff.patron.bill_history.my_init.bill_history'));
-                                       document.title = 'Bill History';
+                                       document.title = $("patronStrings").getString('staff.patron.bill_history.my_init.bill_history');
                                }
 
                        } catch(E) {
index 8edb1f0..5b67fe6 100644 (file)
@@ -431,7 +431,7 @@ patron.display.prototype = {
                                                                                expire = expire.getTime()/1000
 
                                                                                if (expire < now) {
-                                                                                       msg += $("patronStrings").getString('staff.patron.display.init.network_request.accoutn_expired');
+                                                                                       msg += $("patronStrings").getString('staff.patron.display.init.network_request.account_expired');
                                                                                obj.stop_checkouts = true;
                                                                                }
                                                                        }
index ceb3ef8..1374eff 100644 (file)
@@ -1,5 +1,7 @@
 dump('entering patron.holds.js\n');
 
+function $(id) { return document.getElementById(id); }
+
 if (typeof patron == 'undefined') patron = {};
 patron.holds = function (params) {
 
@@ -47,7 +49,7 @@ patron.holds.prototype = {
                                'current_copy' : { 'hidden' : false },
                                'capture_time' : { 'hidden' : false },
                                'notify_time' : { 'hidden' : false },
-                               'notify_count' : { 'hidden' : false },
+                               'notify_count' : { 'hidden' : false }
                        } 
                );
 
@@ -93,13 +95,13 @@ patron.holds.prototype = {
                                                                                        'id':row.my.ahr.id(),
                                                                                        'type':row.my.ahr.hold_type(),
                                                                                        'target':row.my.ahr.target(),
-                                                                                       'usr':row.my.ahr.usr(),
+                                                                                       'usr':row.my.ahr.usr()
                                                                                })
                                                                        );
                                                                        if (typeof params.on_retrieve == 'function') { params.on_retrieve(row); }
 
                                                                } catch(E) {
-                                                                       obj.error.standard_unexpected_error_alert('Error retrieving details for hold #' + row.my.hold_id, E);
+                                                                       obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.holds.init.hold_num_error', [row.my.hold_id]), E);
                                                                }
                                                        }
                                                );
@@ -151,8 +153,7 @@ patron.holds.prototype = {
                                                obj.controller.view.cmd_holds_cancel.setAttribute('disabled','true');
                                                obj.controller.view.cmd_show_catalog.setAttribute('disabled','true');
                                        }
-                               },
-
+                               }
                        }
                );
                
@@ -167,7 +168,7 @@ patron.holds.prototype = {
                                        ],
                                        'cmd_broken' : [
                                                ['command'],
-                                               function() { alert('Not Yet Implemented'); }
+                                               function() { alert($("commonStrings").getString('common.unimplemented')); }
                                        ],
                                        'sel_patron' : [
                                                ['command'],
@@ -240,7 +241,7 @@ patron.holds.prototype = {
                                                                        );
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Error rendering/retrieving hold notifications.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.show_notifications.error_rendering_notifs'),E);
                                                        }
                                                }
                                        ],
@@ -272,12 +273,14 @@ patron.holds.prototype = {
                                                                ml.setAttribute('id','selection');
                                                                ml.setAttribute('name','fancy_data');
                                                                var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               xml += '<description>Please choose a Hold Range:</description>';
+                                                               xml += '<description>' + $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.choose_hold_range') + '</description>';
                                                                xml += util.widgets.serialize_node(ml);
                                                                xml += '</vbox>';
                                                                var bot_xml = '<hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               bot_xml += '<spacer flex="1"/><button label="Done" accesskey="D" name="fancy_submit"/>';
-                                                               bot_xml += '<button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox>';
+                                                               bot_xml += '<spacer flex="1"/><button label="'+ $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.done.label') +'"';
+                                                               bot_xml += 'accesskey="'+ $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.done.accesskey') +'" name="fancy_submit"/>';
+                                                               bot_xml += '<button label="'+ $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.cancel.label') +'"';
+                                                               bot_xml += 'accesskey="'+ $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.cancel.accesskey') +'" name="fancy_cancel"/></hbox>';
                                                                netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
                                                                //obj.data.temp_mid = xml; obj.data.stash('temp_mid');
                                                                //obj.data.temp_bot = bot_xml; obj.data.stash('temp_bot');
@@ -288,12 +291,26 @@ patron.holds.prototype = {
                                                                        //+ '&bottom_xml_in_stash=temp_bot'
                                                                        //+ '&title=' + window.escape('Choose a Pick Up Library'),
                                                                        'fancy_prompt', 'chrome,resizable,modal',
-                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : 'Choose a Pick Up Library' }
+                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.choose_library') }
                                                                );
                                                                if (fancy_prompt_data.fancy_status == 'incomplete') { return; }
                                                                var selection = fancy_prompt_data.selection;
-                                                               var msg = 'Are you sure you would like to change the Hold Range for hold' + ( obj.retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ') + ' to "' + obj.data.hash.aout[selection].opac_label() + '"?';
-                                                               var r = obj.error.yns_alert(msg,'Modifying Holds','Yes','No',null,'Check here to confirm this message');
+                
+                                                               var hold_list = util.functional.map_list(obj.retrieve_ids, function(o){return o.id;}).join(', ');
+                                                               var msg = '';
+                                                               if(obj.retrieve_ids.length > 1) {
+                                                                       msg = $("patronStrings").getformattedString('staff.patron.holds.holds_edit_selection_depth.modify_holds_message.plural', [hold_list, obj.data.hash.aout[selection].opac_label()])
+                                                               } else {
+                                                                       msg = $("patronStrings").getformattedString('staff.patron.holds.holds_edit_selection_depth.modify_holds_message.singular', [hold_list, obj.data.hash.aout[selection].opac_label()])
+                                                               }
+                    
+                                                               var r = obj.error.yns_alert(msg,
+                                                                               $("patronStrings").getString('staff.patron.holds.holds_edit_selection_depth.modify_holds_title'),
+                                                                               $("commonStrings").getString('common.yes'),
+                                                                               $("commonStrings").getString('common.no'),
+                                                                               null,
+                                                                               $("commonStrings").getString('common.check_to_confirm')
+                                                               );
                                                                if (r == 0) {
                                                                        for (var i = 0; i < obj.retrieve_ids.length; i++) {
                                                                                var hold = obj.holds_map[ obj.retrieve_ids[i].id ];
@@ -305,7 +322,7 @@ patron.holds.prototype = {
                                                                        obj.clear_and_retrieve(true);
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Holds not likely modified.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_not_modified'),E);
                                                        }
                                                }
                                        ],
@@ -342,12 +359,14 @@ patron.holds.prototype = {
                                                                ml.setAttribute('id','lib');
                                                                ml.setAttribute('name','fancy_data');
                                                                var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               xml += '<description>Please choose a new Pickup Library:</description>';
+                                                               xml += '<description>'+$("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.new_pickup_lib.description')+'</description>';
                                                                xml += util.widgets.serialize_node(ml);
                                                                xml += '</vbox>';
                                                                var bot_xml = '<hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               bot_xml += '<spacer flex="1"/><button label="Done" accesskey="D" name="fancy_submit"/>';
-                                                               bot_xml += '<button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox>';
+                                                               bot_xml += '<spacer flex="1"/><button label="'+ $("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.done.label') +'"';
+                                                               bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.done.accesskey')+'" name="fancy_submit"/>';
+                                                               bot_xml += '<button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.cancel.label')+'"';
+                                                               bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.cancel.accesskey')+'" name="fancy_cancel"/></hbox>';
                                                                netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
                                                                //obj.data.temp_mid = xml; obj.data.stash('temp_mid');
                                                                //obj.data.temp_bot = bot_xml; obj.data.stash('temp_bot');
@@ -358,12 +377,25 @@ patron.holds.prototype = {
                                                                        //+ '&bottom_xml_in_stash=temp_bot'
                                                                        //+ '&title=' + window.escape('Choose a Pick Up Library'),
                                                                        'fancy_prompt', 'chrome,resizable,modal',
-                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : 'Choose a Pick Up Library' }
+                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.choose_lib') }
                                                                );
                                                                if (fancy_prompt_data.fancy_status == 'incomplete') { return; }
                                                                var pickup_lib = fancy_prompt_data.lib;
-                                                               var msg = 'Are you sure you would like to change the Pick Up Lib for hold' + ( obj.retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ') + ' to ' + obj.data.hash.aou[pickup_lib].shortname() + '?';
-                                                               var r = obj.error.yns_alert(msg,'Modifying Holds','Yes','No',null,'Check here to confirm this message');
+                
+                                                               var hold_list = util.functional.map_list(obj.retrieve_ids, function(o){return o.id;}).join(', ');
+                                                               var msg = '';
+                                                               if(obj.retrieve_ids.length > 1) {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_pickup_lib.change_pickup_lib_message.plural',[hold_list, obj.data.hash.aou[pickup_lib].shortname()]);
+                                                               } else {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_pickup_lib.change_pickup_lib_message.singular',[hold_list, obj.data.hash.aou[pickup_lib].shortname()]);
+                                                               }
+                                                               var r = obj.error.yns_alert(msg,
+                                                                               $("patronStrings").getString('staff.patron.holds.holds_edit_pickup_lib.change_pickup_lib_title'),
+                                                                               $("commonStrings").getString('common.yes'),
+                                                                               $("commonStrings").getString('common.no'),
+                                                                               null,
+                                                                               $("commonStrings").getString('common.check_to_confirm')
+                                                               );
                                                                if (r == 0) {
                                                                        for (var i = 0; i < obj.retrieve_ids.length; i++) {
                                                                                var hold = obj.holds_map[ obj.retrieve_ids[i].id ];
@@ -375,7 +407,7 @@ patron.holds.prototype = {
                                                                        obj.clear_and_retrieve(true);
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Holds not likely modified.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_not_modified'),E);
                                                        }
                                                }
                                        ],
@@ -384,12 +416,14 @@ patron.holds.prototype = {
                                                function() {
                                                        try {
                                                                var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               xml += '<description>Please enter a new phone number for hold notification (leave the field empty to disable phone notification):</description>';
+                                                               xml += '<description>'+$("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.new_phone_number')+'</description>';
                                                                xml += '<textbox id="phone" name="fancy_data"/>';
                                                                xml += '</vbox>';
                                                                var bot_xml = '<hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               bot_xml += '<spacer flex="1"/><button label="Done" accesskey="D" name="fancy_submit"/>';
-                                                               bot_xml += '<button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox>';
+                                                               bot_xml += '<spacer flex="1"/><button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.btn_done.label')+'"';
+                                                               bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.btn_done.accesskey')+'" name="fancy_submit"/>';
+                                                               bot_xml += '<button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.btn_cancel.label')+'"';
+                                                               bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.btn_cancel.accesskey')+'" name="fancy_cancel"/></hbox>';
                                                                netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
                                                                //obj.data.temp_mid = xml; obj.data.stash('temp_mid');
                                                                //obj.data.temp_bot = bot_xml; obj.data.stash('temp_bot');
@@ -401,12 +435,25 @@ patron.holds.prototype = {
                                                                        //+ '&title=' + window.escape('Choose a Hold Notification Phone Number')
                                                                        //+ '&focus=phone',
                                                                        'fancy_prompt', 'chrome,resizable,modal',
-                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : 'Choose a Hold Notification Phone Number', 'focus' : 'phone' }
+                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.choose_phone_number'), 'focus' : 'phone' }
                                                                );
                                                                if (fancy_prompt_data.fancy_status == 'incomplete') { return; }
                                                                var phone = fancy_prompt_data.phone;
-                                                               var msg = 'Are you sure you would like to change the Notification Phone Number for hold' + ( obj.retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ') + ' to "' + phone + '"?';
-                                                               var r = obj.error.yns_alert(msg,'Modifying Holds','Yes','No',null,'Check here to confirm this message');
+
+                                                               var hold_list = util.functional.map_list(obj.retrieve_ids, function(o){return o.id;}).join(', ');
+                                                               var msg = '';
+                                                               if(obj.retrieve_ids.length > 1) {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_phone_notify.confirm_phone_number_change.plural',[hold_list, phone]);
+                                                               } else {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_phone_notify.confirm_phone_number_change.singular',[hold_list, phone]);
+                                                               }
+                                                               var r = obj.error.yns_alert(msg,
+                                                                               $("patronStrings").getString('staff.patron.holds.holds_edit_phone_notify.modifying_holds_title'),
+                                                                               $("commonStrings").getString('common.yes'),
+                                                                               $("commonStrings").getString('common.no'),
+                                                                               null,
+                                                                               $("commonStrings").getString('common.check_to_confirm')
+                                                               );
                                                                if (r == 0) {
                                                                        for (var i = 0; i < obj.retrieve_ids.length; i++) {
                                                                                var hold = obj.holds_map[ obj.retrieve_ids[i].id ];
@@ -418,7 +465,7 @@ patron.holds.prototype = {
                                                                        obj.clear_and_retrieve(true);
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Holds not likely modified.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_not_modified'),E);
                                                        }
                                                }
                                        ],
@@ -427,12 +474,15 @@ patron.holds.prototype = {
                                                function() {
                                                        try {
                                                                var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               xml += '<description>Send email notifications (when appropriate)?  The email address used is found in the hold recipient account.</description>';
-                                                               xml += '<hbox><button value="email" label="Email" accesskey="E" name="fancy_submit"/>';
-                                                               xml += '<button value="noemail" label="No Email" accesskey="N" name="fancy_submit"/></hbox>';
+                                                               xml += '<description>'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.description')+'</description>';
+                                                               xml += '<hbox><button value="email" label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.btn_email.label')+'"';
+                                                               xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.btn_email.accesskey')+'" name="fancy_submit"/>';
+                                                               xml += '<button value="noemail" label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.btn_no_email.label')+'"';
+                                                               xml += '  accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.btn_no_email.accesskey')+'" name="fancy_submit"/></hbox>';
                                                                xml += '</vbox>';
                                                                var bot_xml = '<hbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical">';
-                                                               bot_xml += '<spacer flex="1"/><button label="Cancel" accesskey="C" name="fancy_cancel"/></hbox>';
+                                                               bot_xml += '<spacer flex="1"/><button label="'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.btn_cancel.label')+'"';
+                                                               bot_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.btn_cancel.accesskey')+'" name="fancy_cancel"/></hbox>';
                                                                netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
                                                                //obj.data.temp_mid = xml; obj.data.stash('temp_mid');
                                                                //obj.data.temp_bot = bot_xml; obj.data.stash('temp_bot');
@@ -443,12 +493,34 @@ patron.holds.prototype = {
                                                                        //+ '&bottom_xml_in_stash=temp_bot'
                                                                        //+ '&title=' + window.escape('Set Email Notification for Holds'),
                                                                        'fancy_prompt', 'chrome,resizable,modal',
-                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : 'Set Email Notification for Holds' }
+                                                                       { 'xml' : xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.set_notifs') }
                                                                );
                                                                if (fancy_prompt_data.fancy_status == 'incomplete') { return; }
                                                                var email = fancy_prompt_data.fancy_submit == 'email' ? get_db_true() : get_db_false();
-                                                               var msg = 'Are you sure you would like ' + ( get_bool( email ) ? 'enable' : 'disable' ) + ' email notification for hold' + ( obj.retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ') + '?';
-                                                               var r = obj.error.yns_alert(msg,'Modifying Holds','Yes','No',null,'Check here to confirm this message');
+
+                                                               var hold_list = util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ');
+                                                               var msg = '';
+                                                               if(get_bool(email)) {
+                                                                       if(obj.retrieve_ids.length > 1) {
+                                                                               msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_email_notify.enable_email.plural', [hold_list]);
+                                                                       } else {
+                                                                               msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_email_notify.enable_email.singular', [hold_list]);
+                                                                       }
+                                                               } else {
+                                                                       if(obj.retrieve_ids.length > 1) {
+                                                                               msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_email_notify.disable_email.plural', [hold_list]);
+                                                                       } else {
+                                                                               msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_edit_email_notify.disable_email.singular', [hold_list]);
+                                                                       }
+                                                               }
+                                                                               
+                                                               var r = obj.error.yns_alert(msg,
+                                                                               $("patronStrings").getString('staff.patron.holds.holds_edit_email_notify.mod_holds_title'),
+                                                                               $("commonStrings").getString('common.yes'),
+                                                                               $("commonStrings").getString('common.no'),
+                                                                               null,
+                                                                               $("commonStrings").getString('common.check_to_confirm')
+                                                               );
                                                                if (r == 0) {
                                                                        for (var i = 0; i < obj.retrieve_ids.length; i++) {
                                                                                var hold = obj.holds_map[ obj.retrieve_ids[i].id ];
@@ -460,7 +532,7 @@ patron.holds.prototype = {
                                                                        obj.clear_and_retrieve(true);
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Holds not likely modified.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_not_modified'),E);
                                                        }
                                                }
                                        ],
@@ -603,8 +675,21 @@ patron.holds.prototype = {
                                                function() {
                                                        try {
                                                                JSAN.use('util.functional');
-                                                               var msg = 'Are you sure you would like to reset hold' + ( obj.retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ') + '?';
-                                                               var r = obj.error.yns_alert(msg,'Resetting Holds','Yes','No',null,'Check here to confirm this message');
+
+                                                               var hold_list = util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ');
+                                                               var msg = '';
+                                                               if(obj.retrieve_ids.length > 1) {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_retarget.reset_hold_message.plural',[hold_list]);
+                                                               } else {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_retarget.reset_hold_message.singular',[hold_list]);
+                                                               }
+                                                               var r = obj.error.yns_alert(msg,
+                                                                               $("patronStrings").getString('staff.patron.holds.holds_retarget.reset_hold_title'),
+                                                                               $("commonStrings").getString('common.yes'),
+                                                                               $("commonStrings").getString('common.no'),
+                                                                               null,
+                                                                               $("commonStrings").getString('common.check_to_confirm')
+                                                               );
                                                                if (r == 0) {
                                                                        for (var i = 0; i < obj.retrieve_ids.length; i++) {
                                                                                var robj = obj.network.simple_request('FM_AHR_RESET',[ ses(), obj.retrieve_ids[i].id]);
@@ -613,7 +698,7 @@ patron.holds.prototype = {
                                                                        obj.clear_and_retrieve();
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Holds not likely reset.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_retarget.holds_not_reset'),E);
                                                        }
 
                                                }
@@ -624,8 +709,21 @@ patron.holds.prototype = {
                                                function() {
                                                        try {
                                                                JSAN.use('util.functional');
-                                                               var msg = 'Are you sure you would like to cancel hold' + ( obj.retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ') + '?';
-                                                               var r = obj.error.yns_alert(msg,'Cancelling Holds','Yes','No',null,'Check here to confirm this message');
+
+                                                               var hold_list = util.functional.map_list( obj.retrieve_ids, function(o){return o.id;}).join(', ');
+                                                               var msg = '';
+                                                               if(obj.retrieve_ids.length > 1 ) {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_cancel.cancel_hold_message.plural', [hold_list]);
+                                                               } else {
+                                                                       msg = $("patronStrings").getFormattedString('staff.patron.holds.holds_cancel.cancel_hold_message.singular', [hold_list]);
+                                                               }
+                                                               var r = obj.error.yns_alert(msg,
+                                                                               $("patronStrings").getString('staff.patron.holds.holds_cancel.cancel_hold_title'),
+                                                                               $("commonStrings").getString('common.yes'),
+                                                                               $("commonStrings").getString('common.no'),
+                                                                               null,
+                                                                               $("commonStrings").getString('common.check_to_confirm')
+                                                               );
                                                                if (r == 0) {
                                     var transits = [];
                                                                        for (var i = 0; i < obj.retrieve_ids.length; i++) {
@@ -636,8 +734,13 @@ patron.holds.prototype = {
                                                                                if (typeof robj.ilsevent != 'undefined') throw(robj);
                                                                        }
                                     if (transits.length > 0) {
-                                        var msg2 = 'For barcodes ' + transits.join(', ') + ' cancel the transits as well?';
-                                        var r2 = obj.error.yns_alert(msg2,'Cancelling Transits','Yes','No',null,'Check here to confirm this message');
+                                        var msg2 = $("patronStrings").getFormattedString('staff.patron.holds.holds_cancel.cancel_for_barcodes', [transits.join(', ')]);
+                                        var r2 = obj.error.yns_alert(msg2,
+                                            $("patronStrings").getString('staff.patron.holds.holds_cancel.cancel_for_barcodes.title'),
+                                            $("commonStrings").getString('common.yes'),
+                                            $("commonStrings").getString('common.no'),
+                                                                                       null,
+                                            $("commonStrings").getString('common.check_to_confirm'));
                                         if (r2 == 0) {
                                             try {
                                                 for (var i = 0; i < transits.length; i++) {
@@ -656,14 +759,14 @@ patron.holds.prototype = {
                                                                                            }
                                                 }
                                             } catch(E) {
-                                                                           obj.error.standard_unexpected_error_alert('Hold-transits not likely cancelled.',E);
+                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_cancel.hold_transits_not_cancelled'),E);
                                             }
                                         }
                                     }
                                                                        obj.clear_and_retrieve();
                                                                }
                                                        } catch(E) {
-                                                               obj.error.standard_unexpected_error_alert('Holds not likely cancelled.',E);
+                                                               obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.holds.holds_cancel.hold_not_cancelled'),E);
                                                        }
                                                }
                                        ],
@@ -717,18 +820,18 @@ patron.holds.prototype = {
                                                                                        opac_url = xulG.url_prefix( urls.opac_rdetail) + '?r=' + my_acn.record();
                                                                                break;
                                                                                default:
-                                                                                       obj.error.standard_unexpected_error_alert("I don't understand the hold type of " + htype + ", so I can't jump to the appropriate record in the catalog.", obj.retrieve_ids[i]);
+                                                                                       obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.holds.show_catalog.unknown_htype', [htype]), obj.retrieve_ids[i]);
                                                                                        continue;
                                                                                break;
                                                                        }
                                                                        var content_params = { 
                                                                                'session' : ses(),
                                                                                'authtime' : ses('authtime'),
-                                                                               'opac_url' : opac_url,
+                                                                               'opac_url' : opac_url
                                                                        };
                                                                        xulG.new_tab(
                                                                                xulG.url_prefix(urls.XUL_OPAC_WRAPPER), 
-                                                                               {'tab_name': htype == 'M' ? 'Catalog' : 'Retrieving title...'}, 
+                                                                               {'tab_name': htype == 'M' ? 'Catalog' : $("patronStrings").getString('staff.patron.holds.show_catalog.retrieving_title') },
                                                                                content_params
                                                                        );
                                                                }
@@ -904,7 +1007,7 @@ patron.holds.prototype = {
                                {
                                        'row' : {
                                                'my' : {
-                                                       'hold_id' : hold_id,
+                                                       'hold_id' : hold_id
                                                }
                                        }
                                }
@@ -970,13 +1073,13 @@ patron.holds.prototype = {
                        );
                        obj.controller.view.lib_menu = ml;
                        } else {
-                               throw('Missing library list.\n');
+                               throw($("patronStrings").getString('staff.patron.holds.lib_menus.missing_library_list'));
                        }
 
                } catch(E) {
                        this.error.standard_unexpected_error_alert('rendering lib menu',E);
                }
-       },
+       }
 }
 
 dump('exiting patron.holds.js\n');
index baddc14..0c0d285 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
        <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
        <script>
        <![CDATA[
+               function $(id) { return document.getElementById(id); }
+               
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
@@ -55,8 +57,7 @@
                                default_focus();
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\npatron/holds.xul\n" + E + '\n';
+                               var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/holds.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
@@ -67,7 +68,8 @@
        ]]>
        </script>
 
-    <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale' -->/circ.properties"/>
+       <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale' -->/circ.properties"/>
+       <messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
        <commandset id="holds_cmds">
                <command id="sel_mark_items_damaged" disabled="true"/>
index 85198be..e3f26bf 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE overlay PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 <overlay id="holds_overlay" 
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 </vbox>
 
 <hbox id="holds_top_ui" flex="1">
-    <checkbox id="lib_filter_checkbox" persist="checked" checked="true" hidden="true" label="Filter:"/>
+    <checkbox id="lib_filter_checkbox" persist="checked" checked="true" hidden="true" label="&staff.patron.holds_overlay.lib_filter_checkbox.label;"/>
     <menulist id="lib_type_menu" hidden="true" persist="value">
         <menupopup>
-            <menuitem id="pickup_lib" value="pickup_lib" label="Pickup Library"/>
-            <menuitem id="request_lib" value="request_lib" label="Requesting Library"/>
-            <menuitem id="fulfillment_lib" value="fulfillment_lib" label="Fulfilling Library"/>
-            <menuitem id="circ_lib" value="circ_lib" label="Item Circulating Library"/>
-            <menuitem id="owning_lib" value="owning_lib" label="Volume Owning Library"/>
-            <menuitem id="home_lib" value="home_lib" label="Patron Home Library foo"/>
+            <menuitem id="pickup_lib" value="pickup_lib" label="&staff.patron.holds_overlay.pickup_lib.label;"/>
+            <menuitem id="request_lib" value="request_lib" label="&staff.patron.holds_overlay.request_lib.label;"/>
+            <menuitem id="fulfillment_lib" value="fulfillment_lib" label="&staff.patron.holds_overlay.fulfillment_lib.label;"/>
+            <menuitem id="circ_lib" value="circ_lib" label="&staff.patron.holds_overlay.circ_lib.label;"/>
+            <menuitem id="owning_lib" value="owning_lib" label="&staff.patron.holds_overlay.owning_lib.label;"/>
+            <menuitem id="home_lib" value="home_lib" label="&staff.patron.holds_overlay.home_lib.label;"/>
         </menupopup>
     </menulist>
     <vbox id="lib_menu_placeholder" hidden="true"/>
-    <button id="fetch_more" label="Fetch More Holds" accesskey="M" hidden="true"/>
+    <button id="fetch_more" label="&staff.patron.holds_overlay.fetch_more.label;" accesskey="&staff.patron.holds_overlay.fetch_more.accesskey;" hidden="true"/>
        <spacer flex="1"/>
     <menubar>
-        <menu label="Actions for Selected Holds" accesskey="S">
+        <menu label="&staff.patron.holds_overlay.actions_for_holds.label;" accesskey="&staff.patron.holds_overlay.actions_for_holds.accesskey;">
             <menupopup>
                 <menuitem command="sel_clip" label="&staff.circ.holds.copy_to_clipboard;" accesskey="&staff.circ.holds.copy_to_clipboard.accesskey;" />
                 <menuitem label="&staff.circ.holds.show_in_catalog;" command="cmd_show_catalog" accesskey="&staff.circ.holds.show_in_catalog.accesskey;"/>
        <spacer flex="1"/>
        <button id="holds_print" label="Print" command="cmd_holds_print" accesskey="P" />
        <button id="holds_export" 
-               label="Export"
+               label="&staff.patron.holds_overlay.holds_export.label;"
                command="cmd_holds_export"
                accesskey=""/>
 </hbox>
index 277eaa5..b8ed187 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -37,7 +37,7 @@
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
 
@@ -55,8 +55,7 @@
                                refresh();
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\npatron_info_group.xul\n" + E + '\n';
+                               var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/info_group.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
                                exec.chain( funcs );
 
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('Failed to retrieve all the group members.',E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_group.retrieve_group_members.failure'),E);
                        }
                }
 
                                                        var url = urls.XUL_PATRON_DISPLAY// + '?id=' + window.escape( g.sel_list[i] );
                                                        window.xulG.new_tab(
                                                                url, 
-                                                               { 'tab_name' : 'Retrieving Patron..' }, 
+                                                               { 'tab_name' : $("patronStrings").getString('staff.patron.info_group.retrieve_patron.tab_name') }, 
                                                                { 
                                                                        'id' : g.sel_list[i],
                                                                        'url_prefix' : xulG.url_prefix,
                                                                }
                                                        );
                                                } catch(E) {
-                                                       g.error.standard_unexpected_error_alert('Failed to retrieve patron.',E);
+                                                       g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_group.retrieve_patron.failed_retrieving_patron'),E);
                                                }
                                        }
                                }
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('Failed to retrieve patrons.',E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_group.retrieve_patron.failed_retrieving_patrons'),E);
                        }
                }
 
                                                { 
                                                        'url' : urls.XUL_PATRON_EDIT, // + '?ses=' + window.escape(ses()) + '&clone=' + g.sel_list[i],
                                                        'show_print_button' : true , 
-                                                       'tab_name' : 'Register Patron Clone for Group' ,
+                                                       'tab_name' : $("patronStrings").getString('staff.patron.info_group.clone_patron.register_clone.tab_name'),
                                                        'passthru_content_params' : {
                                                                'ses' : ses(),
                                                                'clone' : g.sel_list[i],
                                        );
                                }
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('error spawning user editors',E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_group.clone_patron.error_spawning_editors'),E);
                        }
                }
 
                                { 
                                        'url' : url,
                                        'show_print_button' : true , 
-                                       'tab_name' : 'Editing Related Patron' ,
+                                       'tab_name' : $("patronStrings").getString('staff.patron.info_group.spwan_editor.editing_patron'),
                                        'passthru_content_params' : passthru,
                                        'url_prefix' : xulG.url_prefix,
                                        'new_tab' : xulG.new_tab,
                                if (typeof window.xulG == 'object' && typeof window.xulG.new_tab == 'function') 
                                        xulG.new_tab( loc, {}, {'doit':1,'query':s} );
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('spawn search',E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_group.spwan_search'),E);
                        }
                }
 
                function remove_patron() {
                        if (! g.sel_list ) return;
-                       var msg = ''; for (var i = 0 ; i < g.sel_list.length; i++) if (g.sel_list[i] == g.patron_id) msg =
-                               'WARNING: If you remove the currently displayed patron, a NEW group will be displayed in this interface.';
-                       var c = window.confirm('Remove selected patrons from this group?  ' + msg);
+                       var msg = '';
+                       for (var i = 0 ; i < g.sel_list.length; i++)
+                               if (g.sel_list[i] == g.patron_id)
+                                       msg = $("patronStrings").getString('staff.patron.info_group.remove_patron.warning_message');
+                                       
+                       var c = window.confirm($("patronStrings").getFormattedString('staff.patron.info_group.remove_patron.warning_message_confirm', [msg]));
                        if (c) {
                                for (var i = 0; i < g.sel_list.length; i++) {   
                                        var robj = g.network.simple_request('FM_AU_NEW_USERGROUP', [ ses(), g.sel_list[i], get_db_true() ]);
                                        if (typeof robj.ilsevent != 'undefined') {
-                                               g.error.standard_unexpected_error_alert('error removing patron (id=' + g.sel_list[i] + ') from usergroup',robj);
+                                               g.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.info_group.remove_patron.error_removing_patron', [g.sel_list[i]]), robj);
                                        }
                                }
-                               alert('Patrons removed from group.'); 
+                               alert($("patronStrings").getString('staff.patron.info_group.remove_patron.patrons_removed_from_group')); 
                                /* FIXME - xulrunner bug if this alert comes after refresh? */
                                /* that's okay, because now that we're on a distributed database, we want human delay to mitigate race conditions */
                                refresh();
                        } else {
-                               alert('Patron not removed from group.');
+                               alert($("patronStrings").getString('staff.patron.info_group.remove_patron.patrons_not_removed_from_group'));
                        }
                }
 
                function link_patron(direction) {
                        try {
                                if (! g.sel_list ) { g.sel_list = []; g.sel_list[0] = g.patron_id; }
-                               if (direction == null) throw('null paramater not allowed');
+                               if (direction == null) throw($("patronStrings").getString('staff.patron.info_group.link_patron.null_not_allowed'));
                                var first_msg; var second_msg;
                                switch(direction) {
                                        case true: first_msg = "-->"; break;
                                        case false: first_msg = "<--"; break;
-                                       default: throw('Invalid parameter.  Expected boolean.'); break;
+                                       default: throw($("patronStrings").getString('staff.patron.info_group.link_patron.invalid_parameter')); break;
                                }
-                               var barcode = window.prompt('Please scan a patron barcode:','',first_msg);
+                               var barcode = window.prompt($("patronStrings").getString('staff.patron.info_group.link_patron.scan_patron_barcode'),'',first_msg);
                                if (!barcode) return;
                                JSAN.use('patron.util');
                                var patron_b = patron.util.retrieve_fleshed_au_via_barcode(ses(),barcode);
                                        var patron_a = patron.util.retrieve_fleshed_au_via_id(ses(),g.sel_list[i]);
                                        if (typeof patron_a.ilsevent != 'undefined') throw(patron_a);
                                        switch(direction) {
-                                               case true: second_msg = "Move patron " + patron_a.card().barcode() + " into patron " + patron_b.card().barcode() + "'s usergroup..."; break;
-                                               case false: second_msg = "Move patron " + patron_b.card().barcode() + " into patron " + patron_a.card().barcode() + "'s usergroup..."; break;
+                                               case true:
+                                                               second_msg = $("patronStrings").getFormattedString('staff.patron.info_group.link_patron.move_patron_to_new_usergroup',[patron_a.card().barcode(), patron_b.card().barcode()]);
+                                                               break;
+                                               case false:
+                                                       second_msg = $("patronStrings").getFormattedString('staff.patron.info_group.link_patron.move_patron_to_new_usergroup',[patron_b.card().barcode(), patron_a.card().barcode()]);
+                                                       break;
                                        }
 
                                        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
-                                       var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto"><description>' + second_msg + '</description><hbox><spacer flex="1"/><button label="Move" accesskey="M" name="fancy_submit"/><button label="Done" accesskey="D" name="fancy_cancel"/></hbox></vbox>';
+                                       var top_xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto"><description>' + second_msg + '</description>';
+                                       top_xml += '<hbox><spacer flex="1"/><button label="'+$("patronStrings").getFormattedString('staff.patron.info_group.link_patron.move.label')+'"';
+                                       top_xml += ' accesskey="'+$("patronStrings").getFormattedString('staff.patron.info_group.link_patron.move.accesskey')+'" name="fancy_submit"/>';
+                                       top_xml += '<button label="'+$("patronStrings").getFormattedString('staff.patron.info_group.link_patron.done.label')+'"';
+                                       top_xml += ' accesskey="'+$("patronStrings").getFormattedString('staff.patron.info_group.link_patron.done.accesskey')+'" name="fancy_cancel"/></hbox></vbox>';
                                        var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: vertical"><hbox flex="1">';
                                        /************/
                                        xml += '<vbox flex="1">';
                                                //+ '&bottom_xml_in_stash=temp_bot'
                                                //+ '&title=' + window.escape('Move Patron into a Usergroup'),
                                                'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
-                                               { 'xml' : xml, 'top_xml' : top_xml, 'bottom_xml' : bot_xml, 'title' : 'Move Patron into a Usergroup' }
+                                               { 'xml' : xml, 'top_xml' : top_xml, 'bottom_xml' : bot_xml, 'title' : $("patronStrings").getString('staff.patron.info_group.link_patron.move_patron_to_usergroup')}
                                        );
                                        if (fancy_prompt_data.fancy_status == 'incomplete') { continue; }
                                        else {
                                                        break;
                                                }
                                                var robj = g.network.simple_request('FM_AU_UPDATE',[ ses(), patron_c ]);
-                                               if (typeof robj.ilsevent != 'undefined') g.error.standard_unexpected_error_alert('error linking patron (id=' + g.sel_list[i] + ')', robj);
+                                               if (typeof robj.ilsevent != 'undefined') g.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.info_group.link_patron.error_linking_patron', [g.sel_list[i]]), robj);
                                        }
                                }
-                               alert('User groups updated.');
+                               alert($("patronStrings").getString('staff.patron.info_group.link_patron.usergroups_updated'));
                                refresh();
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('error linking patrons',E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_group.link_patron.error_linking_patrons'),E);
                                refresh();
                        }
                }
 
        ]]>
        </script>
+       
+       <messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
 
        <commandset id="info_group_cmds">
-               <command id="clone" accesskey="N" label="Register a New Group Member by Cloning Selected Patrons" oncommand="try{clone_patron();}catch(E){alert('FIXME:'+E);}"/>
-               <command id="remove" accesskey="R" label="Remove Selected Patrons from the Group" oncommand="try{remove_patron();}catch(E){alert('FIXME:'+E);}"/>
-               <command id="move" accesskey="M" label="Move Selected Patrons to ANOTHER patron's group." oncommand="try{link_patron(true);}catch(E){alert('FIXME:'+E);}"/>     
-               <command id="add" accesskey="A" label="Move ANOTHER patron to this patron group." oncommand="try{link_patron(false);}catch(E){alert('FIXME:'+E);}"/>    
-               <command id="retrieve_p" label="Retrieve Selected Patrons" accesskey="P" oncommand="try{retrieve_patron();}catch(E){alert(E);}"/>
+               <command id="clone" accesskey="&staff.patron.info_group.clone.accesskey;" label="&staff.patron.info_group.clone.label;" oncommand="try{clone_patron();}catch(E){alert('FIXME:'+E);}"/>
+               <command id="remove" accesskey="&staff.patron.info_group.remove.accesskey;" label="&staff.patron.info_group.remove.label;" oncommand="try{remove_patron();}catch(E){alert('FIXME:'+E);}"/>
+               <command id="move" accesskey="&staff.patron.info_group.move.accesskey;" label="&staff.patron.info_group.move.label;" oncommand="try{link_patron(true);}catch(E){alert('FIXME:'+E);}"/>  
+               <command id="add" accesskey="&staff.patron.info_group.add.accesskey;" label="&staff.patron.info_group.add.label;" oncommand="try{link_patron(false);}catch(E){alert('FIXME:'+E);}"/>    
+               <command id="retrieve_p" label="&staff.patron.info_group.retrieve_p.label;" accesskey="&staff.patron.info_group.retrieve_p.accesskey;" oncommand="try{retrieve_patron();}catch(E){alert(E);}"/>
        </commandset>
 
        <popupset id="info_group_popupset">
 
        <vbox flex="1" class="my_overflow" id="group_panel">
                <groupbox flex="1">
-                       <caption label="Group Members"/>
+                       <caption label="&staff.patron.info_group.group_member.label;"/>
                        <hbox>
                                <spacer flex="1"/>
                                <menubar id="ml">
-                                       <menu label="Choose an Action..." accesskey="A" value="0">
+                                       <menu label="&staff.patron.info_group.choose_an_action.label;" accesskey="&staff.patron.info_group.choose_an_action.accesskey;" value="0">
                                                <menupopup>
                                                        <menuitem command="clone" />
                                                        <menuitem command="remove" />