[open-ils-commits] SPAM: r9890 - in trunk/Open-ILS: web/opac/locale/en-US xul/staff_client/server/locale/en-US xul/staff_client/server/patron

svn at svn.open-ils.org svn at svn.open-ils.org
Thu Jun 19 16:35:25 EDT 2008


Author: dbs
Date: 2008-06-19 16:35:21 -0400 (Thu, 19 Jun 2008)
New Revision: 9890

Modified:
   trunk/Open-ILS/web/opac/locale/en-US/lang.dtd
   trunk/Open-ILS/xul/staff_client/server/locale/en-US/common.properties
   trunk/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties
   trunk/Open-ILS/xul/staff_client/server/patron/bill_history.xul
   trunk/Open-ILS/xul/staff_client/server/patron/display.js
   trunk/Open-ILS/xul/staff_client/server/patron/holds.js
   trunk/Open-ILS/xul/staff_client/server/patron/holds.xul
   trunk/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul
   trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul
Log:
Merge another i18n patch from Craig Ricciuto


Modified: trunk/Open-ILS/web/opac/locale/en-US/lang.dtd
===================================================================
--- trunk/Open-ILS/web/opac/locale/en-US/lang.dtd	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/web/opac/locale/en-US/lang.dtd	2008-06-19 20:35:21 UTC (rev 9890)
@@ -2173,3 +2173,28 @@
 <!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">

Modified: trunk/Open-ILS/xul/staff_client/server/locale/en-US/common.properties
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/locale/en-US/common.properties	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/locale/en-US/common.properties	2008-06-19 20:35:21 UTC (rev 9890)
@@ -16,6 +16,9 @@
 # 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

Modified: trunk/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties	2008-06-19 20:35:21 UTC (rev 9890)
@@ -30,7 +30,7 @@
 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.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.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

Modified: trunk/Open-ILS/xul/staff_client/server/patron/bill_history.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/bill_history.xul	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/patron/bill_history.xul	2008-06-19 20:35:21 UTC (rev 9890)
@@ -267,10 +267,10 @@
 
 				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) {

Modified: trunk/Open-ILS/xul/staff_client/server/patron/display.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/display.js	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/patron/display.js	2008-06-19 20:35:21 UTC (rev 9890)
@@ -431,7 +431,7 @@
 										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;
 										}
 									}

Modified: trunk/Open-ILS/xul/staff_client/server/patron/holds.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/holds.js	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/patron/holds.js	2008-06-19 20:35:21 UTC (rev 9890)
@@ -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 @@
 				'current_copy' : { 'hidden' : false },
 				'capture_time' : { 'hidden' : false },
 				'notify_time' : { 'hidden' : false },
-				'notify_count' : { 'hidden' : false },
+				'notify_count' : { 'hidden' : false }
 			} 
 		);
 
@@ -93,13 +95,13 @@
 											'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 @@
 						obj.controller.view.cmd_holds_cancel.setAttribute('disabled','true');
 						obj.controller.view.cmd_show_catalog.setAttribute('disabled','true');
 					}
-				},
-
+				}
 			}
 		);
 		
@@ -167,7 +168,7 @@
 					],
 					'cmd_broken' : [
 						['command'],
-						function() { alert('Not Yet Implemented'); }
+						function() { alert($("commonStrings").getString('common.unimplemented')); }
 					],
 					'sel_patron' : [
 						['command'],
@@ -240,7 +241,7 @@
 									);
 								}
 							} 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 @@
 								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 @@
 									//+ '&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 @@
 									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 @@
 								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 @@
 									//+ '&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 @@
 									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 @@
 						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 @@
 									//+ '&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 @@
 									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 @@
 						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 @@
 									//+ '&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 @@
 									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 @@
 						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 @@
 									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 @@
 						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 @@
 										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 @@
 										            }
                                                 }
                                             } 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 @@
 											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 @@
 				{
 					'row' : {
 						'my' : {
-							'hold_id' : hold_id,
+							'hold_id' : hold_id
 						}
 					}
 				}
@@ -970,13 +1073,13 @@
     			);
     			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');

Modified: trunk/Open-ILS/xul/staff_client/server/patron/holds.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/holds.xul	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/patron/holds.xul	2008-06-19 20:35:21 UTC (rev 9890)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -32,10 +32,12 @@
 	<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"/>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/patron/holds_overlay.xul	2008-06-19 20:35:21 UTC (rev 9890)
@@ -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">
@@ -56,22 +56,22 @@
 </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;"/>
@@ -105,7 +105,7 @@
 	<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>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul	2008-06-19 19:15:55 UTC (rev 9889)
+++ trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul	2008-06-19 20:35:21 UTC (rev 9890)
@@ -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);
 			}
@@ -171,7 +170,7 @@
 				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);
 			}
 		}
 
@@ -184,7 +183,7 @@
 							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,
@@ -192,12 +191,12 @@
 								}
 							);
 						} 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);
 			}
 		}
 
@@ -214,7 +213,7 @@
 						{ 
 							'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],
@@ -230,7 +229,7 @@
 					);
 				}
 			} 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);
 			}
 		}
 
@@ -253,7 +252,7 @@
 				{ 
 					'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,
@@ -270,42 +269,45 @@
 				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);
@@ -317,12 +319,20 @@
 					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">';
@@ -364,7 +374,7 @@
 						//+ '&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 {
@@ -382,26 +392,28 @@
 							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">
@@ -418,11 +430,11 @@
 
 	<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" />



More information about the open-ils-commits mailing list