[open-ils-commits] SPAM: r9970 - 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
Sun Jul 6 12:06:33 EDT 2008


Author: dbs
Date: 2008-07-06 12:06:30 -0400 (Sun, 06 Jul 2008)
New Revision: 9970

Modified:
   trunk/Open-ILS/web/opac/locale/en-US/lang.dtd
   trunk/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties
   trunk/Open-ILS/xul/staff_client/server/patron/barcode_entry.xul
   trunk/Open-ILS/xul/staff_client/server/patron/bill_cc_info.xul
   trunk/Open-ILS/xul/staff_client/server/patron/bill_check_info.xul
   trunk/Open-ILS/xul/staff_client/server/patron/display.js
   trunk/Open-ILS/xul/staff_client/server/patron/display.xul
   trunk/Open-ILS/xul/staff_client/server/patron/info.xul
   trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul
   trunk/Open-ILS/xul/staff_client/server/patron/info_notes.xul
   trunk/Open-ILS/xul/staff_client/server/patron/info_stat_cats.xul
   trunk/Open-ILS/xul/staff_client/server/patron/info_surveys.xul
   trunk/Open-ILS/xul/staff_client/server/patron/items.js
   trunk/Open-ILS/xul/staff_client/server/patron/items.xul
   trunk/Open-ILS/xul/staff_client/server/patron/search_form.js
   trunk/Open-ILS/xul/staff_client/server/patron/search_form.xul
   trunk/Open-ILS/xul/staff_client/server/patron/search_form_overlay.xul
   trunk/Open-ILS/xul/staff_client/server/patron/search_result.js
   trunk/Open-ILS/xul/staff_client/server/patron/search_result.xul
   trunk/Open-ILS/xul/staff_client/server/patron/search_result_overlay.xul
   trunk/Open-ILS/xul/staff_client/server/patron/summary.js
   trunk/Open-ILS/xul/staff_client/server/patron/summary.xul
   trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay.xul
   trunk/Open-ILS/xul/staff_client/server/patron/ue.js
   trunk/Open-ILS/xul/staff_client/server/patron/user_buckets.xul
   trunk/Open-ILS/xul/staff_client/server/patron/user_edit.js
   trunk/Open-ILS/xul/staff_client/server/patron/user_edit.xml
Log:
Patch from Craig Ricciuto to bring i18n to the patron staff client interfaces


Modified: trunk/Open-ILS/web/opac/locale/en-US/lang.dtd
===================================================================
--- trunk/Open-ILS/web/opac/locale/en-US/lang.dtd	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/web/opac/locale/en-US/lang.dtd	2008-07-06 16:06:30 UTC (rev 9970)
@@ -2069,6 +2069,8 @@
 <!ENTITY staff.patron.bill_cc_info.cancel.accesskey "C">
 <!ENTITY staff.patron.bill_cc_info.submit.label "Submit this Info">
 <!ENTITY staff.patron.bill_cc_info.submit.accesskey "S">
+<!ENTITY staff.patron.bill_cc_info.info.label "Credit Card Info">
+<!ENTITY staff.patron.bill_cc_info.type.label "CC Type">
 <!ENTITY staff.patron.bill_check_info.check_info.label "Check Info">
 <!ENTITY staff.patron.bill_check_info.check_number.value "Check Number">
 <!ENTITY staff.patron.bill_check_info.note.value "Note">
@@ -2200,3 +2202,31 @@
 <!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">
+<!ENTITY staff.patron.info_surveys.survey_number.value "Survey #">
+<!ENTITY staff.patron.info_surveys.last_answered.value "Last Answered on:">
+<!ENTITY staff.patron.info_surveys.answer.value "Answer:">
+<!ENTITY staff.patron.info.notes.label "Notes">
+<!ENTITY staff.patron.info.notes.accesskey "N">
+<!ENTITY staff.patron.info.stat_cats.label "Stat Cats">
+<!ENTITY staff.patron.info.stat_cats.accesskey "S">
+<!ENTITY staff.patron.info.surveys.label "Surveys">
+<!ENTITY staff.patron.info.surveys.accesskey "y">
+<!ENTITY staff.patron.info.group.label "Group">
+<!ENTITY staff.patron.info.group.accesskey "G">
+<!ENTITY staff.patron.search_form_overlay.inactive.value "Include inactive patrons?">
+<!ENTITY staff.patron.search_form_overlay.inactive.accesskey "I">
+<!ENTITY staff.patron.search_form_overlay.search_range_menu.value "Limit results to patrons in">
+<!ENTITY staff.patron.search_result_overlay.save_cols.label "Save Columns">
+<!ENTITY staff.patron.search_result_overlay.copy_to_clipboard.label "Copy to Clipboard">
+<!ENTITY staff.patron.search_result_overlay.print.label "Print">
+<!ENTITY staff.patron.summary_overlay.psagbc.alert.label "Alert">
+<!ENTITY staff.patron.summary_overlay.pssgbc.standing.label "Standing">
+<!ENTITY staff.patron.summary_overlay.overdue.value "Long Overdue:">
+<!ENTITY staff.patron.summary_overlay.claimed_returned.value "Claimed Returned:">
+<!ENTITY staff.patron.summary_overlay.lost_label.value "Lost:">
+<!ENTITY staff.patron.summary_overlay.noncat_label.value "Non Cat:">
+<!ENTITY staff.patron.summary_overlay.summary_contact.label "ID/Contact Info">
+<!ENTITY staff.patron.summary_overlay.opac_login.value "OPAC Login:">
+<!ENTITY staff.patron.user_buckets.stub_not_implemented "Just a stub, Not Yet Implemented">
+<!ENTITY staff.patron.user_edit.user_name.label "User Name:">
+<!ENTITY staff.patron.user_edit.barcode.label "Barcode:">

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-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties	2008-07-06 16:06:30 UTC (rev 9970)
@@ -53,16 +53,19 @@
 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_patron=Retrieving Patron...
 staff.patron.display.init.retrieving=Retrieving...
 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.holds_ready=Holds available: %1$s
 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
 staff.patron.display.init.network_request.error_showing_alert=Error showing patron alert and holds availability.
+staff.patron.display.render_search_form.patron_search=Patron Search
 staff.patron.hold_notices.tooltiptext=ID: %1$s Hold ID: %2$s Notifying Staff ID: %3$s
 staff.patron.hold_notices.new_notification_record=New Notification Record
 staff.patron.hold_notices.method=Method
@@ -90,8 +93,8 @@
 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_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
@@ -154,3 +157,89 @@
 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
+staff.patron.info_notes.render_notes.add_new_note.label=Add New Note
+staff.patron.info_notes.render_notes.add_new_note.accesskey=A
+staff.patron.info_notes.render_notes.tooltiptext=Note ID: %1$s Creator ID: %2$s
+staff.patron.info_notes.render_notes.pub.patron_visible=Patron Visible
+staff.patron.info_notes.render_notes.pub.staff_only=Staff Only
+staff.patron.info_notes.render_notes.delete_note_message=Delete the note titled "%1$s" created on %1=2$s?
+staff.patron.info_notes.render_notes.delete_note_title=Delete Note
+staff.patron.info_notes.render_notes.btn1.delete_note.label=Delete This Note
+staff.patron.info_notes.render_notes.note_deleted=Note deleted.
+staff.patron.info_notes.render_notes.pertaining_to=Pertaining to
+staff.patron.info_notes.render_notes.created_on=created on
+staff.patron.info_notes.render_notes.printing_note_num=printing note #%1$s
+staff.patron.info_notes.render_notes.btn2.print_note.label=Print
+staff.patron.info_notes.new_note.label=New Note
+staff.patron.info_notes.new_note.patron_visible.value=Patron Visible?
+staff.patron.info_notes.new_note.title.value=Title
+staff.patron.info_notes.new_note.note.value=Note
+staff.patron.info_notes.new_note.cancel.label=Cancel
+staff.patron.info_notes.new_note.cancel.accesskey=C
+staff.patron.info_notes.new_note.add.label=Add Note
+staff.patron.info_notes.new_note.add.accesskey=A
+staff.patron.info_notes.new_note.add_note_title=Add Note
+staff.patron.info_notes.new_note.add_note_title=Note added.
+staff.patron.info_notes.new_note.note_not_created=The note was not likely created.
+staff.patron.info_stat_cats.retrieve_fleshed_patron.failed=Failed to retrieve patron stat cats.
+staff.patron.info_stat_cats.render_stat_cats.opac_visible=OPAC Visible
+staff.patron.info_stat_cats.render_stat_cats.not_opac_visible=Not OPAC Visible
+staff.patron.info_stat_cats.render_stat_cats.rendering_exception=rendering/retrieving stat cat
+staff.patron.info_surveys.retrieve_surveys.failed=Failed to retrieve all the survey responses.
+staff.patron.info_surveys.render_surveys.required=Required
+staff.patron.info_surveys.render_surveys.not_required=Not Required
+staff.patron.items.show_noncats.14_days=14 days
+staff.patron.items.show_noncats.err_showing_noncat=Error showing NonCat #%1$s
+staff.patron.items.show_noncats.err_showing_circulations=Error showing NonCat circulations
+staff.patron.items.items_renew_all.list_is_busy=This is list is busy retrieving/rendering rows for a prior action.  Abort the prior action and proceed?
+staff.patron.items.items_renew_all.renew_items_in_list=Renew all the items in this list?
+staff.patron.items.items_renew_all.items_not_renewed=All items were not likely renewed (%1$s)
+staff.patron.items.items_renew.renew_item_singular=Are you sure you would like to renew item %1$s?
+staff.patron.items.items_renew.renew_item_singular=Are you sure you would like to renew items %1$s?
+staff.patron.items.items_renew.renewing=Renewing %1$s
+staff.patron.items.items_renew.renewed=%1$s renewed.
+staff.patron.items.items_renew.not_renewed=%1%s not renewed.\n%2$s
+staff.patron.items.items_renew.err_in_renew_via_barcode=Error in renew_via_barcode callback\nRenew probably did not happen for barcode %1$s
+staff.patron.items.items_renew.no_renew_for_barcode=Renew probably did not happen for barcode %1$s
+staff.patron.items.items_renew.no_renew=Renew probably did not happen.
+staff.patron.items.items_edit.invalid_date=Invalid Date
+staff.patron.items.items_edit.need_later_date=Due date needs to be after today.
+staff.patron.items.items_edit.edit_due_date.singular=Edit Due Date
+staff.patron.items.items_edit.edit_due_date.plural=Edit Due Dates
+staff.patron.items.items_edit.new_due_date=Enter a new due date for these items: %1$s
+staff.patron.items.items_edit.dates_not_modified=The due dates were not likely modified.
+staff.patron.items.items_edit.mark_barcode_lost=Mark barcode lost = %1$s
+staff.patron.items.items_edit.item_barcode=Item Barcode %1$s\n%2$s
+staff.patron.items.items_edit.items_not_marked_lost=The items were not likely marked lost.
+staff.patron.items.items_claimed_returned.date_cannot_be_in_future=Claims Returned Date cannot be in the future.
+staff.patron.items.items_claimed_returned.claimed_returned=Claimed Returned
+staff.patron.items.items_claimed_returned.enter_returned_date=Enter a claimed returned date for these items: %1$s
+staff.patron.items.items_claimed_returned.not_marked_claimed_returned=The items were not likely marked Claimed Returned.
+staff.patron.items.items_checkin.confirm_item_check_in.singular=Are you sure you would like to check in item %1$s?
+staff.patron.items.items_checkin.confirm_item_check_in.plural=Are you sure you would like to check in items %1$s?
+staff.patron.items.items_checkin.no_checkin=Checkin probably did not happen.
+staff.patron.items.show_catalog.barcode_not_cataloged=%1$s is not cataloged
+staff.patron.items.show_catalog.retrieving_title=Retrieving title...
+staff.patron.items.retrieve_row.callback_error=Error in callback for FM_CIRC_DETAILS.authoritative in patron/items.js
+staff.patron.items.retrieve_row.error_in_retrieve_row=error in patron/items.js retrieve_row():
+staff.patron.items.refresh.error_refreshing_row2=2 Error refreshing row in list\ncirc_id = %1$s\nnparams = %2$s
+staff.patron.items.refresh.error_refreshing_row=Error refreshing row in list\ncirc_id = %1$s\nnparams = %2$s
+staff.patron.items.retrieve.err_retrieving_circulations=Error retrieving circulations.
+staff.patron.items.gen_list_append.error=patron/items.js: error in gen_list_append
+staff.patron.search_result.search.no_patrons_found=No patrons found matching search criteria.
+staff.patron.search_result.search.capped_results=Results capped at %1$s patrons.
+staff.patron.search_result.search.enter_search_terms=Please enter some search terms.
+staff.patron.search_result.init.typeof_params=typeof params.on_retrieve == %1$s
+staff.patron.search_result.init.search_print=patron search print
+staff.patron.search_result.init.search_clipboard=patron search clipboard
+staff.patron.search_result.init.search_saving_columns=patron search saving columns
+staff.patron.summary.patron_bill.money=$ %1$s
+staff.patron.summary.retrieve.no_barcode=summary: No barcode or id
+staff.patron.summary.patron_net_access=Internet
+staff.patron.summary.expires_on=Expires on
+staff.patron.ue.uEditInit.session_no_defined=User session is not defined
+staff.patron.ue.uEditSaveuser.error_creating_note=Error creating patron guardian/parent note
+staff.patron.ue.uEditShowSearch.search=Search would be:\n%1$s
+staff.patron.user_edit.save_user.depth_required=Depth is required on the %1$s permission.
+staff.patron.user_edit.save_user.user_modified_successfully=User %1$s [%2$s] successfully modified.\n'%3$s permissions and %4$swork locations updated.
+staff.patron.user_edit.display_perm.select_one=-- Select One --

Modified: trunk/Open-ILS/xul/staff_client/server/patron/barcode_entry.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/barcode_entry.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/barcode_entry.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -73,8 +73,6 @@
 				}
 
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" + E + '\n';
 				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/barcode_entry.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);

Modified: trunk/Open-ILS/xul/staff_client/server/patron/bill_cc_info.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/bill_cc_info.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/bill_cc_info.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -61,16 +61,16 @@
 	]]>
 	</script>
 
-	<messagecatalog id="catStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties" />
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties" />
 	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<groupbox>
-		<caption label="Credit Card Info"/>
+		<caption label="&staff.patron.bill_cc_info.info.label;/>
 		<grid>
 			<columns> <column flex="0" /> <column flex="0" /> </columns>
 			<rows>
 				<row>
-					<label value="CC Type"/>
+					<label value="&staff.patron.bill_cc_info.type.label;"/>
 					<menulist id="cc_type" oncommand="g.payment_blob.cc_type = this.value;">
 						<menupopup>
 							<menuitem label="&staff.patron.bill_cc_info.visa.label;" value="Visa"/>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/bill_check_info.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/bill_check_info.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/bill_check_info.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -61,7 +61,7 @@
 	]]>
 	</script>
 
-	<messagecatalog id="catStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties" />
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties" />
 	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<groupbox>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/display.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/display.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/display.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -224,8 +224,8 @@
 									'passthru_content_params' : {
 										'params' : {
 											'ses' : ses(),
-											'usr' : obj.patron.id(),
-										}
+											'usr' : obj.patron.id()
+										},
 										'on_save' : function(p) {
 											try {
 												if (obj.barcode) obj.barcode = p.card().barcode();
@@ -339,7 +339,7 @@
 
 		if (obj.barcode || obj.id) {
 			if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-				try { window.xulG.set_tab_name('Retrieving Patron...'); } catch(E) { alert(E); }
+				try { window.xulG.set_tab_name($("patronStrings").getString('staff.patron.display.init.retrieving_patron')); } catch(E) { alert(E); }
 			}
 
 			obj.controller.view.PatronNavBar.selectedIndex = 1;
@@ -436,7 +436,9 @@
 										}
 									}
 									var holds = req.getResultObject();
-									if (holds.ready && holds.ready > 0) msg += 'Holds available: ' + holds.ready;
+									if (holds.ready && holds.ready > 0) {
+										msg += $("patronStrings").getFormattedString('staff.patron.display.init.holds_ready', [holds.ready]);
+									}
 									if (msg) {
 										if (msg != obj.old_msg) {
 											//obj.error.yns_alert(msg,'Alert Message','OK',null,null,'Check here to confirm this message.');
@@ -500,7 +502,7 @@
 	'render_search_form' : function(params) {
 		var obj = this;
 			if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-				try { window.xulG.set_tab_name('Patron Search'); } catch(E) { alert(E); }
+				try { window.xulG.set_tab_name($("patronStrings").getString('staff.patron.display.render_search_form.patron_search')); } catch(E) { alert(E); }
 			}
 
 			obj.controller.view.PatronNavBar.selectedIndex = 0;
@@ -509,7 +511,12 @@
 
 			var loc = urls.XUL_PATRON_SEARCH_FORM; 
 			var my_xulG = {
-				'clear_left_deck' : function() { setTimeout( function() { obj.left_deck.clear_all_except(loc); obj.render_search_form(params); }, 0); },
+				'clear_left_deck' : function() {
+					setTimeout( function() {
+						obj.left_deck.clear_all_except(loc);
+						obj.render_search_form(params);
+					}, 0);
+				},
 				'on_submit' : function(query) {
 					obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','true');
 					var list_frame = obj.right_deck.reset_iframe(

Modified: trunk/Open-ILS/xul/staff_client/server/patron/display.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/display.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/display.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -26,10 +26,10 @@
 
 	<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 	<!-- BEHAVIOR -->
-        <script type="text/javascript">
+	<script type="text/javascript">
 		var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};
 	</script>
-        <scripts id="openils_util_scripts"/>
+	<scripts id="openils_util_scripts"/>
 
 	<script type="text/javascript" src="/xul/server/main/JSAN.js"/>
 	<script>
@@ -50,7 +50,7 @@
 					'barcode' : xul_param('barcode'),
 					'id' : xul_param('id'),
 					'query' : xul_param('query'),
-					'doit' : xul_param('doit'),
+					'doit' : xul_param('doit')
 				} );
 
 			//document.documentElement.style.setProperty('font-size-adjust','1','important');

Modified: trunk/Open-ILS/xul/staff_client/server/patron/info.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/info.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/info.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -39,7 +39,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/');
 
@@ -74,8 +74,7 @@
 				}catch(E){alert(E);}
 
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\npatron_info.xul\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/info.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -100,10 +99,10 @@
 	<vbox flex="1" class="my_overflow2">
 		<tabbox flex="1" orient="horizontal">
 			<tabs orient="vertical" class="tabs-left">
-				<tab accesskey="N" label="Notes" />
-				<tab accesskey="S" label="Stat Cats"/>
-				<tab accesskey="y" label="Surveys"/>
-				<tab accesskey="G" label="Group"/>
+				<tab accesskey="&staff.patron.info.notes.accesskey;" label="&staff.patron.info.notes.label;"/>
+				<tab accesskey="&staff.patron.info.stat_cats.accesskey;" label="&staff.patron.info.stat_cats.label;"/>
+				<tab accesskey="&staff.patron.info.surveys.accesskey;" label="&staff.patron.info.surveys.label;"/>
+				<tab accesskey="&staff.patron.info.group.accesskey;" label="&staff.patron.info.group.label;"/>
 				<tab label=" " disabled="true" linkedpanel="notes_panel" flex="1"/>
 				<tab label=" " disabled="true" linkedpanel="notes_panel" flex="1"/>
 				<tab label=" " disabled="true" linkedpanel="notes_panel" flex="1"/>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/info_group.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -303,9 +303,15 @@
 				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($("patronStrings").getString('staff.patron.info_group.link_patron.invalid_parameter')); break;
+					case true:
+						first_msg = "-->";
+						break;
+					case false:
+						first_msg = "<--";
+						break;
+					default:
+						throw($("patronStrings").getString('staff.patron.info_group.link_patron.invalid_parameter'));
+						break;
 				}
 				var barcode = window.prompt($("patronStrings").getString('staff.patron.info_group.link_patron.scan_patron_barcode'),'',first_msg);
 				if (!barcode) return;
@@ -320,8 +326,8 @@
 					if (typeof patron_a.ilsevent != 'undefined') throw(patron_a);
 					switch(direction) {
 						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;
+							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;
@@ -329,10 +335,10 @@
 
 					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>';
-					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>';
+					top_xml += '<hbox><spacer flex="1"/><button label="'+$("patronStrings").getString('staff.patron.info_group.link_patron.move.label')+'"';
+					top_xml += ' accesskey="'+$("patronStrings").getString('staff.patron.info_group.link_patron.move.accesskey')+'" name="fancy_submit"/>';
+					top_xml += '<button label="'+$("patronStrings").getString('staff.patron.info_group.link_patron.done.label')+'"';
+					top_xml += ' accesskey="'+$("patronStrings").getString('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">';
@@ -406,6 +412,7 @@
 	]]>
 	</script>
 	
+    <messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties"/>
 	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
 
 	<commandset id="info_group_cmds">
@@ -426,8 +433,6 @@
 		</popup>
 	</popupset>
 
-    <messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties"/>
-
 	<vbox flex="1" class="my_overflow" id="group_panel">
 		<groupbox flex="1">
 			<caption label="&staff.patron.info_group.group_member.label;"/>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/info_notes.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/info_notes.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/info_notes.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -25,8 +25,12 @@
 
 	<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 	<!-- BEHAVIOR -->
-        <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
-        <scripts id="openils_util_scripts"/>
+	<script type="text/javascript">
+		var myPackageDir = 'open_ils_staff_client';
+		var IAMXUL = true;
+		var g = {};
+	</script>
+	<scripts id="openils_util_scripts"/>
 
 	<script type="text/javascript" src="/xul/server/main/JSAN.js"/>
 	<script>
@@ -37,7 +41,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 +59,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.xul\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/info_notes.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -91,11 +94,11 @@
 		function render_notes() {
 			JSAN.use('util.widgets'); util.widgets.remove_children('notes_panel');
 			var np = $('notes_panel');
-				var hbox = document.createElement('hbox'); np.appendChild(hbox);
-					var btn = document.createElement('button'); hbox.appendChild(btn);
-						btn.setAttribute('label','Add New Note');
-						btn.setAttribute('accesskey','A');
-						btn.setAttribute('oncommand','new_note()');
+			var hbox = document.createElement('hbox'); np.appendChild(hbox);
+			var btn = document.createElement('button'); hbox.appendChild(btn);
+			btn.setAttribute('label', $("patronStrings").getString('staff.patron.info_notes.render_notes.add_new_note.label'));
+			btn.setAttribute('accesskey', $("patronStrings").getString('staff.patron.info_notes.render_notes.add_new_note.accesskey'));
+			btn.setAttribute('oncommand','new_note()');
 
 			for (var i = 0; i < g.notes.length; i++) {
 
@@ -103,66 +106,86 @@
 				var node = $('note_template').cloneNode(true); np.appendChild(node); node.hidden = false;
 				apply(node,'create_date',g.notes[i].create_date().toString().substr(0,10));
 				util.widgets.apply(node,'name','create_date',
-					function(n){n.setAttribute("tooltiptext","Note ID: " + g.notes[i].id() + " Creator ID: " + g.notes[i].creator());}
+					function(n){n.setAttribute("tooltiptext", $("patronStrings").getFormattedString('staff.patron.info_notes.render_notes.tooltiptext', [g.notes[i].id(), g.notes[i].creator()]));}
 				);
 				apply(node,'title',g.notes[i].title());
-				apply(node,'pub',get_bool(g.notes[i].pub()) ? "Patron Visible" : "Staff Only");
+				if (get_bool(g.notes[i].pub())) {
+					apply(node, 'pub', $("patronStrings").getString('staff.patron.info_notes.render_notes.pub.patron_visible'));
+				} else {
+					apply(node, 'pub', $("patronStrings").getString('staff.patron.info_notes.render_notes.pub.staff_only') );
+				}
 				apply(node,'value',g.notes[i].value());
 				apply(node,'id',g.notes[i].id());
 				apply(node,'creator',g.notes[i].creator());
 
 				/* button bar */
-				var hb = document.createElement('hbox'); np.appendChild(hb);
-					var btn1 = document.createElement('button'); hb.appendChild(btn1);
-						btn1.setAttribute('label','Delete This Note');
-						btn1.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
+				var hb = document.createElement('hbox');
+				np.appendChild(hb);
+				var btn1 = document.createElement('button');
+				hb.appendChild(btn1);
+				btn1.setAttribute('label',$("patronStrings").getString('staff.patron.info_notes.render_notes.btn1.delete_note.label'));
+				btn1.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
 
-						btn1.addEventListener(
-							'command',
-							function(id){ return function() { 
-								var r = g.error.yns_alert('Delete the note titled "' + g.notes[id].title() + '" created on ' + g.notes[id].create_date().toString().substr(0,10) + '?','Delete Note','Yes','No',null,'Check here to confirm this action'); 
-								if (r == 0) {
-									g.network.simple_request('FM_AUN_DELETE',[ses(),g.notes[id].id()]);
-									setTimeout(function(){ g.new_note = true; alert('Note deleted.'); refresh();},0);
-								}
-							} }(i),
-							false
-						);
-					var btn2 = document.createElement('button'); hb.appendChild(btn2);
-						btn2.setAttribute('label','Print');
-						btn2.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
+				btn1.addEventListener(
+					'command',
+					function(id){ 
+						return function() { 
+							var r = g.error.yns_alert(
+								$("patronStrings").getFormattedString('staff.patron.info_notes.render_notes.delete_note_message',[g.notes[id].title(), g.notes[id].create_date().toString().substr(0,10)]),
+								$("patronStrings").getString('staff.patron.info_notes.render_notes.delete_note_title'),
+								$("commonStrings").getString('common.yes'),
+								$("commonStrings").getString('common.no'),
+								null,
+								$("commonStrings").getString('common.check_to_confirm')
+							); 
+							if (r == 0) {
+								g.network.simple_request('FM_AUN_DELETE',[ses(),g.notes[id].id()]);
+								setTimeout(function(){ 
+									g.new_note = true;
+									alert($("patronStrings").getString('staff.patron.info_notes.render_notes.note_deleted'));
+									refresh();
+								},0);
+							}
+						}
+					 }
+					(i), false
+					);
+					var btn2 = document.createElement('button');
+					hb.appendChild(btn2);
+					btn2.setAttribute('label',$("patronStrings").getString('staff.patron.info_notes.render_notes.btn2.print_note.label'));
+					btn2.setAttribute('image',"/xul/server/skin/media/images/up_arrow.gif");
 
-						btn2.addEventListener(
-							'command',
-							function(id){ return function() { 
-								try {
-									JSAN.use('patron.util'); 
-									var patron_obj = patron.util.retrieve_fleshed_au_via_id(ses(),g.patron_id);
-									var staff_obj = patron.util.retrieve_name_via_id( ses(), g.notes[id].creator() );
-									JSAN.use('util.print'); var p = new util.print();
-									p.simple(
-										'<hr/>'
-										+ '<p>Pertaining to ' + 
-											( patron_obj.prefix() ? patron_obj.prefix() + ' ' : '') + 
-											patron_obj.family_name() + ', ' + 
-											patron_obj.first_given_name() + ' ' +
-											( patron_obj.second_given_name() ? patron_obj.second_given_name() + ' ' : '' ) +
-											( patron_obj.suffix() ? patron_obj.suffix() : '')
-											+ ' : ' 
-										+ patron_obj.card().barcode() + '</p>'
-										+ '<p><b>"' 
-										+ g.notes[id].title() + '"</b> created on ' + g.notes[id].create_date().toString().substr(0,10) 
-										+ ' by ' + staff_obj[0] + ' @ ' + g.data.hash.aou[ staff_obj[3] ].shortname()
-										+ '</p><p>'
-										+ g.notes[id].value()
-										+ '</p><hr/>'
-									);
-								} catch(E) {
-									g.error.standard_unexpected_error_alert('printing note #' + g.notes[id].id(), E);
-								}
-							} }(i),
-							false
-						);
+					btn2.addEventListener(
+						'command',
+						function(id){ return function() { 
+							try {
+								JSAN.use('patron.util'); 
+								var patron_obj = patron.util.retrieve_fleshed_au_via_id(ses(),g.patron_id);
+								var staff_obj = patron.util.retrieve_name_via_id( ses(), g.notes[id].creator() );
+								JSAN.use('util.print');
+								var p = new util.print();
+								p.simple(
+									'<hr/>'
+									+ '<p>'+ $("patronStrings").getString('staff.patron.info_notes.render_notes.pertaining_to') + ' ' + 
+										( patron_obj.prefix() ? patron_obj.prefix() + ' ' : '') + 
+										patron_obj.family_name() + ', ' + 
+										patron_obj.first_given_name() + ' ' +
+										( patron_obj.second_given_name() ? patron_obj.second_given_name() + ' ' : '' ) +
+										( patron_obj.suffix() ? patron_obj.suffix() : '')
+										+ ' : ' 
+									+ patron_obj.card().barcode() + '</p>'
+									+ '<p><b>"' + g.notes[id].title() + '"</b>'
+									+ $("patronStrings").getFormattedString('staff.patron.info_notes.render_notes.created_on', [g.notes[id].create_date().toString().substr(0,10), staff_obj[0], g.data.hash.aou[ staff_obj[3] ].shortname()]) 
+									+ '</p><p>'
+									+ g.notes[id].value()
+									+ '</p><hr/>'
+								);
+							} catch(E) {
+								g.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.info_notes.render_notes.printing_note_num', [g.notes[id].id()]), E);
+							}
+						}
+					}(i), false
+				);
 			}
 
 		}
@@ -170,7 +193,15 @@
 		function new_note() {
 			try {
 				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserWrite");
-				var xml = '<groupbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1"><caption label="New Note"/><grid flex="1"><columns><column/><column flex="1"/></columns><rows><row><label value="Patron Visible?"/><checkbox id="pub" name="fancy_data"/></row><row><label value="Title"/><textbox id="title" name="fancy_data"/></row><row><label value="Note"/><textbox multiline="true" id="note" name="fancy_data"/></row><row><spacer/><hbox><button label="Cancel" name="fancy_cancel" accesskey="C"/><button label="Add Note" accesskey="A" name="fancy_submit"/></hbox></row></rows></grid></groupbox>';
+				var xml = '<groupbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1">';
+				xml += '<caption label="'+$("patronStrings").getString('staff.patron.info_notes.new_note.label')+'"/><grid flex="1"><columns><column/><column flex="1"/></columns><rows><row>';
+				xml += '<label value="'+$("patronStrings").getString('staff.patron.info_notes.new_note.patron_visible.value')+'"/><checkbox id="pub" name="fancy_data"/></row>';
+				xml += '<row><label value="'+$("patronStrings").getString('staff.patron.info_notes.new_note.title.value')+'"/><textbox id="title" name="fancy_data"/></row>';
+				xml += '<row><label value="'+$("patronStrings").getString('staff.patron.info_notes.new_note.note.value')+'"/><textbox multiline="true" id="note" name="fancy_data"/></row>';
+				xml += '<row><spacer/><hbox><button label="'+$("patronStrings").getString('staff.patron.info_notes.new_note.cancel.label')+'" name="fancy_cancel"';
+				xml += ' accesskey="'+$("patronStrings").getString('staff.patron.info_notes.new_note.cancel.accesskey')+'"/>';
+				xml += '<button label="'+$("patronStrings").getString('staff.patron.info_notes.new_note.add.label')+'"';
+				xml += ' accesskey="'+$("patronStrings").getString('staff.patron.info_notes.new_note.add.accesskey')+'" name="fancy_submit"/></hbox></row></rows></grid></groupbox>';
 				//g.data.init({'via':'stash'});
 				//g.data.temp_note_xml = xml; g.data.stash('temp_note_xml');
 				JSAN.use('util.window'); var win = new util.window();
@@ -180,7 +211,7 @@
 					//+ '&focus=' + window.escape('title')
 					//+ '&title=' + window.escape('Add Note'),
 					'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
-					{ 'xml' : xml, 'focus' : 'title', 'title' : 'Add Note' }
+					{ 'xml' : xml, 'focus' : 'title', 'title' : $("patronStrings").getString('staff.patron.info_notes.new_note.add_note_title') }
 				);
 				if (fancy_prompt_data.fancy_status == 'complete') {
 					//alert(js2JSON(g.data.fancy_prompt_data));
@@ -192,15 +223,22 @@
 					note.usr( g.patron_id );
 					var r = g.network.simple_request('FM_AUN_CREATE',[ ses(), note ]);
 					if (typeof r.ilsevent != 'undefined') throw(r);
-					setTimeout(function(){ g.new_note = true; alert('Note added.'); refresh();},0);
+					setTimeout(function(){
+						g.new_note = true;
+						alert($("patronStrings").getString('staff.patron.info_notes.new_note.add_note_title'));
+						refresh();
+					},0);
 				}
 			} catch(E) {
-				g.error.standard_unexpected_error_alert('The note was not likely created.',E);
+				g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_notes.new_note.note_not_created'),E);
 			}
 		}
 
 	]]>
 	</script>
+	
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<stack hidden="true" id="note_template" flex="1">
 		<groupbox flex="1" style="background-color: black;"/>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/info_stat_cats.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/info_stat_cats.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/info_stat_cats.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -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/');
 
@@ -53,8 +53,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_stat_cats.xul\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/info_stat_cats', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -71,7 +70,7 @@
 				if (g.patron.ilsevent) throw(g.patron);
 
 			} catch(E) {
-				g.error.standard_unexpected_error_alert('Failed to retrieve patron stat cats.',E);
+				g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_stat_cats.retrieve_fleshed_patron.failed'),E);
 				g.patron = null;
 			}
 
@@ -104,9 +103,15 @@
 			for (var i = 0; i < my_actsc.length; i++) {
 
 				/* template */
-				var actsc_node = $('actsc_template').cloneNode(true); sp.appendChild(actsc_node); actsc_node.hidden = false;
+				var actsc_node = $('actsc_template').cloneNode(true);
+				sp.appendChild(actsc_node);
+				actsc_node.hidden = false;
 				apply(actsc_node,'name',my_actsc[i].name());
-				apply(actsc_node,'opac',my_actsc[i].opac_visible() ? 'OPAC Visible' : 'Not OPAC Visible');
+				if (my_actsc[i].opac_visible()) {
+					apply(actsc_node, 'opac', $("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.opac_visible'));
+				} else {
+					apply(actsc_node, 'opac', $("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.not_opac_visible'));
+				}
 				apply(actsc_node,'owner',g.data.hash.aou[my_actsc[i].owner()].shortname());
 
 				var nl = actsc_node.getElementsByAttribute('name','entry');
@@ -136,9 +141,16 @@
 				sc = sc[0];
 
 				/* template */
-				var actsc_node = $('actsc_template').cloneNode(true); sp.appendChild(actsc_node); actsc_node.hidden = false;
+				var actsc_node = $('actsc_template').cloneNode(true);
+				sp.appendChild(actsc_node);
+				actsc_node.hidden = false;
+
 				apply(actsc_node,'name',sc.name());
-				apply(actsc_node,'opac',sc.opac_visible() ? 'OPAC Visible' : 'Not OPAC Visible');
+				if (sc.opac_visible()) {
+					apply(actsc_node, 'opac', $("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.opac_visible'));
+				} else {
+					apply(actsc_node, 'opac', $("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.not_opac_visible'));
+				}
 				apply(actsc_node,'owner',g.data.hash.aou[sc.owner()].shortname());
 
 				var nl = actsc_node.getElementsByAttribute('name','entry');
@@ -148,20 +160,26 @@
 				if (entry_placeholder) {
 
 					/* template */
-					var actsce_node = $('actsce_template').cloneNode(true); entry_placeholder.appendChild(actsce_node); actsce_node.hidden = false;
+					var actsce_node = $('actsce_template').cloneNode(true);
+					entry_placeholder.appendChild(actsce_node);
+					actsce_node.hidden = false;
+
 					var scem = scem_hash[ i ];
 					apply(actsce_node,'value',scem.stat_cat_entry());
 
 				}
 
 				} catch(E) {
-					g.error.standard_unexpected_error_alert('rendering/retrieving stat cat',E);
+					g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.rendering_exception'),E);
 				}
 			}
 		}
 		
 	]]>
 	</script>
+	
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<stack hidden="true" id="actsc_template" flex="1">
 		<groupbox flex="1" style="background-color: black;"/>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/info_surveys.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/info_surveys.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/info_surveys.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -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/');
 
@@ -53,8 +53,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_surveys.xul\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/info_surveys.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -76,7 +75,7 @@
 					g.survey_responses[ surveys[i].id() ] = responses;
 				}
 			} catch(E) {
-				g.error.standard_unexpected_error_alert('Failed to retrieve all the survey responses.',E);
+				g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.info_surveys.retrieve_surveys.failed'),E);
 			}
 
 		}
@@ -104,8 +103,16 @@
 				var asv_node = $('asv_template').cloneNode(true); sp.appendChild(asv_node); asv_node.hidden = false;
 				apply(asv_node,'id',g.data.hash.asv[i].id());
 				apply(asv_node,'description',g.data.hash.asv[i].description());
-				apply(asv_node,'required',g.data.hash.asv[i].required() ? 'Required' : 'Not Required');
-				apply(asv_node,'opac',g.data.hash.asv[i].opac() ? 'OPAC Visible' : 'Not OPAC Visible');
+				if (g.data.hash.asv[i].required()) {
+					apply(asv_node, 'required', $("patronStrings").getString('staff.patron.info_surveys.render_surveys.required'));
+				} else {
+					apply(asv_node, 'required', $("patronStrings").getString('staff.patron.info_surveys.render_surveys.not_required'));
+				}
+				if (g.data.hash.asv[i].opac()) {
+					apply(asv_node, 'opac', $("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.opac_visible'));
+				} else {
+					apply(asv_node, 'opac', $("patronStrings").getString('staff.patron.info_stat_cats.render_stat_cats.not_opac_visible'));
+				}
 
 				var nl = asv_node.getElementsByAttribute('name','questions');
 				var question_placeholder;
@@ -116,7 +123,10 @@
 					for (var j = 0; j < questions.length; j++) {
 
 						/* template */
-						var asvq_node = $('asvq_template').cloneNode(true); question_placeholder.appendChild(asvq_node); asvq_node.hidden = false;
+						var asvq_node = $('asvq_template').cloneNode(true);
+						question_placeholder.appendChild(asvq_node);
+						asvq_node.hidden = false;
+
 						apply(asvq_node,'ordinal',j+1);
 						apply(asvq_node,'question',questions[j].question());
 
@@ -147,11 +157,14 @@
 	]]>
 	</script>
 
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
+	
 	<stack hidden="true" id="asv_template" flex="1">
 		<groupbox flex="1" style="background-color: black;"/>
 		<groupbox flex="1" style="background-color: #CC9966; -moz-border-radius-topright: 35px;" >
 			<hbox>
-				<label value="Survey #" style="font-weight: bold"/>
+				<label value="&staff.patron.info_surveys.survey_number.value;" style="font-weight: bold"/>
 				<label name="id" style="font-weight: bold"/>
 				<description name="description" style="font-weight: bold"/>
 				<spacer flex="1"/>
@@ -171,8 +184,8 @@
 	</grid>
 
 	<hbox hidden="true" id="asva_template" flex="1">
-		<label value="Last Answered on:"/><label name="date"/>
-		<label value="Answer:"/><description style="font-weight: bold" name="answer"/>
+		<label value="&staff.patron.info_surveys.last_answered.value;"/><label name="date"/>
+		<label value="&staff.patron.info_surveys.answer.value;"/><description style="font-weight: bold" name="answer"/>
 	</hbox>
 
 	<vbox flex="1" class="my_overflow" id="surveys_panel">

Modified: trunk/Open-ILS/xul/staff_client/server/patron/items.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/items.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/items.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -1,5 +1,7 @@
 dump('entering patron.items.js\n');
 
+function $(id) { return document.getElementById(id); }
+
 if (typeof patron == 'undefined') patron = {};
 patron.items = function (params) {
 
@@ -104,7 +106,7 @@
 					'cmd_show_catalog2' : [ ['command'], function() { obj.show_catalog(2); } ],
 					'cmd_add_billing' : [ ['command'], function() { obj.add_billing(1);  /*obj.retrieve();*/ } ],
 					'cmd_add_billing2' : [ ['command'], function() { obj.add_billing(2);  /*obj.retrieve();*/ } ],
-					'cmd_show_noncats' : [ ['command'], function() { obj.show_noncats(); } ],
+					'cmd_show_noncats' : [ ['command'], function() { obj.show_noncats(); } ]
 				}
 			}
 		);
@@ -172,7 +174,7 @@
 						obj.data.stash('hash','list');
 						t = obj.data.hash.cnct[ nc_circ.item_type() ];
 					}
-					var cd = t.circ_duration() || "14 days";
+					var cd = t.circ_duration() || $("patronStrings").getString('staff.patron.items.show_noncats.14_days');
 					var i = util.date.interval_to_seconds( cd ) * 1000;
 					d.setTime( Date.parse(d) + i );
 					fake_circ.due_date( util.date.formatted_date(d,'%F') );
@@ -187,12 +189,12 @@
 					obj.list.append( { 'row' : { 'my' : { 'circ' : fake_circ, 'mvr' : fake_record, 'acp' : fake_copy } }, 'to_bottom' : true, 'no_auto_select' : true } );
 
 				} catch(F) {
-					obj.error.standard_unexpected_error_alert('Error showing NonCat #' + robj[ii].id(),F);
+					obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.show_noncats.err_showing_noncat', [robj[ii].id()]),F);
 				}
 			}
 
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('Error showing NonCat circulations',E);
+			obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.show_noncats.err_showing_circulations'),E);
 		}
 	},
 
@@ -225,10 +227,10 @@
 		try {
 			var obj = this; var list = obj.list;
 			if (list.on_all_fleshed != null) {
-				var r = window.confirm('This is list is busy retrieving/rendering rows for a prior action.  Abort the prior action and proceed?');
+				var r = window.confirm($("patronStrings").getString('staff.patron.items.items_renew_all.list_is_busy'));
 				if (!r) return;
 			}
-			var r = window.confirm('Renew all the items in this list?');
+			var r = window.confirm($("patronStrings").getString('staff.patron.items.items_renew_all.renew_items_in_list'));
 			if (!r) return;
 			function flesh_callback() {
 				try {
@@ -236,13 +238,13 @@
 					obj.items_renew(1,true);	
 					setTimeout(function(){list.on_all_fleshed = null; /* obj.retrieve();*/ },0);
 				} catch(E) {
-					obj.error.standard_unexpected_error_alert('2 All items were not likely renewed',E);
+					obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.items_renew_all.items_not_renewed', ['2']),E);
 				}
 			}
 			list.on_all_fleshed = flesh_callback;
 			list.full_retrieve();
 		} catch(E) {
-			this.error.standard_unexpected_error_alert('All items were not likely renewed',E);
+			this.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.items_renew_all.items_not_renewed', ['1']),E);
 		}
 	},
 
@@ -254,7 +256,12 @@
 			if (!retrieve_ids || retrieve_ids.length == 0) return;
 			JSAN.use('util.functional');
 			if (!skip_prompt) {
-				var msg = 'Are you sure you would like to renew item' + ( retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ') + '?';
+				var msg = '';
+				if(retrieve_ids.length > 1) {
+					msg += $("patronStrings").getFormattedString('staff.patron.items.items_renew.renew_item_plural',[util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ')]);
+				} else {
+					msg += $("patronStrings").getFormattedString('staff.patron.items.items_renew.renew_item_singular', [util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ')]);
+				}
 				var r = window.confirm(msg);
 				if (!r) { return; }
 			}
@@ -265,21 +272,21 @@
 				var x = document.getElementById('renew_msgs');
 				if (x) {
 					var l = document.createElement('label');
-					l.setAttribute('value','Renewing ' + bc);
+					l.setAttribute('value', $("patronStrings").getFormattedString('staff.patron.items.items_renew.renewing',[bc]));
 					x.appendChild(l);
 				}
 				var renew = circ.util.renew_via_barcode( barcode, obj.patron_id, 
 					function(r) {
                         try {
                             if ( (typeof r[0].ilsevent != 'undefined' && r[0].ilsevent == 0) ) {
-                                l.setAttribute('value', bc + ' renewed.');
+                                l.setAttribute('value', $("patronStrings").getFormattedString('staff.patron.items.items_renew.renewed',[bc]));
                                 obj.list_circ_map[ circ_id ].row.my.circ = r[0].payload.circ;
                                 obj.list_circ_map[ circ_id ].row.my.acp = r[0].payload.copy;
                                 obj.list_circ_map[ circ_id ].row.my.mvr = r[0].payload.record;
                                 // A renewed circ is a new circ, and has a new circ_id.
                                 obj.list_circ_map[ r[0].payload.circ.id() ] = obj.list_circ_map[ circ_id ];
                             } else {
-                                var msg = bc + ' not renewed.\n' + r[0].textcode + r[0].desc;
+                                var msg = $("patronStrings").getFormattedString('staff.patron.items.items_renew.not_renewed',[bc, r[0].textcode + r[0].desc]);
                                 l.setAttribute('value', msg);
                                 alert(msg);
                             }
@@ -290,7 +297,7 @@
                             }
                             obj.refresh(circ_id);
                         } catch(E) {
-   					       obj.error.standard_unexpected_error_alert('Error in renew_via_barcode callback\nRenew probably did not happen for barcode ' + barcode,E);
+   					       obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.items_renew.err_in_renew_via_barcode',[barcode]), E);
                         }
 					} 
 				);
@@ -303,11 +310,11 @@
 					var circ_id = retrieve_ids[i].circ_id;
 					gen_renew(barcode,circ_id);
 				} catch(E) {
-					obj.error.standard_unexpected_error_alert('Renew probably did not happen for barcode ' + barcode,E);
+					obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.items_renew.no_renew_for_barcode',[barcode]), E);
 				}
 			}
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('Renew probably did not happen.',E);
+			obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.items_renew.no_renew'),E);
 		}
 	},
 
@@ -320,10 +327,10 @@
 					JSAN.use('util.date');
 					try {
 						if (! util.date.check('YYYY-MM-DD',value) ) { 
-							throw('Invalid Date'); 
+							throw($("patronStrings").getString('staff.patron.items.items_edit.invalid_date')); 
 						}
 						if (util.date.check_past('YYYY-MM-DD',value) ) { 
-							throw('Due date needs to be after today.'); 
+							throw($("patronStrings").getString('staff.patron.items.items_edit.need_later_date')); 
 						}
 						/*
 						if ( util.date.formatted_date(new Date(),'%F') == value) { 
@@ -338,10 +345,14 @@
 				}
 
 				JSAN.use('util.functional');
-				var title = 'Edit Due Date' + (retrieve_ids.length > 1 ? 's' : '');
+				var title = '';
+				if (retrieve_ids.length > 1) {
+					title += $("patronStrings").getString('staff.patron.items.items_edit.edit_due_date.plural');
+				} else {
+					title += $("patronStrings").getString('staff.patron.items.items_edit.edit_due_date.singular');
+				}
 				var value = 'YYYY-MM-DD';
-				var text = 'Enter a new due date for these items: ' + 
-					util.functional.map_list(retrieve_ids,function(o){return o.barcode;}).join(', ');
+				var text = $("patronStrings").getFormattedString('staff.patron.items.items_edit.new_due_date', [util.functional.map_list(retrieve_ids,function(o){return o.barcode;}).join(', ')]);
 				var due_date; var invalid = true;
 				while(invalid) {
 					due_date = window.prompt(text,value,title);
@@ -362,7 +373,7 @@
 					obj.refresh(retrieve_ids[i].circ_id);
 				}
 			} catch(E) {
-				obj.error.standard_unexpected_error_alert('The due dates were not likely modified.',E);
+				obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.items_edit.dates_not_modified'),E);
 			}
 	},
 
@@ -373,12 +384,12 @@
 			if (!retrieve_ids || retrieve_ids.length == 0) return;
 			for (var i = 0; i < retrieve_ids.length; i++) {
 				var barcode = retrieve_ids[i].barcode;
-				dump('Mark barcode lost = ' + barcode);
+				dump($("patronStrings").getFormattedString('staff.patron.items.items_edit.mark_barcode_lost', [barcode]));
 				var robj = obj.network.simple_request( 'MARK_ITEM_LOST', [ ses(), { barcode: barcode } ]);
 				if (typeof robj.ilsevent != 'undefined') { 
                     switch(Number(robj.ilsevent)) {
                         case 7018 /* COPY_MARKED_LOST */ :
-                            alert( 'Item Barcode ' + barcode + '\n' + robj.desc );
+                            alert( $("patronStrings").getFormattedString('staff.patron.items.items_edit.item_barcode', [barcode, robj.desc]) );
                         break;
                         default: throw(robj);
                     }
@@ -387,7 +398,7 @@
                 }
 			}
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('The items were not likely marked lost.',E);
+			obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.items_edit.items_not_marked_lost'),E);
 		}
 	},
 
@@ -400,13 +411,13 @@
 			function check_date(value) {
 				try {
 					if (! util.date.check('YYYY-MM-DD',value) ) { 
-						throw('Invalid Date'); 
+						throw($("patronStrings").getString('staff.patron.items.items_edit.invalid_date')); 
 					}
 					if ( util.date.formatted_date(new Date(),'%F') == value) { 
 						return true;
 					}
 					if (! util.date.check_past('YYYY-MM-DD',value) ) { 
-						throw('Claims Returned Date cannot be in the future.'); 
+						throw($("patronStrings").getString('staff.patron.items.items_claimed_returned.date_cannot_be_in_future')); 
 					}
 					return true;
 				} catch(E) {
@@ -416,10 +427,10 @@
 			}
 
 			JSAN.use('util.functional');
-			var title = 'Claimed Returned';
+			var title = $("patronStrings").getString('staff.patron.items.items_claimed_returned.claimed_returned');
 			var value = 'YYYY-MM-DD';
-			var text = 'Enter a claimed returned date for these items: ' + 
-				util.functional.map_list(retrieve_ids,function(o){return o.barcode;}).join(', ');
+			var text = $("patronStrings").getFormattedString('staff.patron.items.items_claimed_returned.enter_returned_date',
+				[util.functional.map_list(retrieve_ids,function(o){return o.barcode;}).join(', ')]);
 			var backdate; var invalid = true;
 			while(invalid) {
 				backdate = window.prompt(text,value,title);
@@ -443,7 +454,7 @@
 			}
 			for (var i = 0; i < retrieve_ids.length; i++) obj.refresh(retrieve_ids[i].circ_id,true);
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('The items were not likely marked Claimed Returned.',E);
+			obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.items_claimed_returned.not_marked_claimed_returned'),E);
 		}
 	},
 
@@ -453,7 +464,14 @@
 			var retrieve_ids = ( which == 2 ? obj.retrieve_ids2 : obj.retrieve_ids );
 			if (!retrieve_ids || retrieve_ids.length == 0) return;
 			JSAN.use('util.functional');
-			var msg = 'Are you sure you would like to check in item' + ( retrieve_ids.length > 1 ? 's ' : ' ') + util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ') + '?';
+			var msg = '';
+			if (retrieve_ids.length > 1) {
+				msg += $("patronStrings").getFormattedString('staff.patron.items.items_checkin.confirm_item_check_in.plural',
+					[util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ')]);
+			} else {
+				msg += $("patronStrings").getFormattedString('staff.patron.items.items_checkin.confirm_item_check_in.singular'
+					[util.functional.map_list( retrieve_ids, function(o){return o.barcode;}).join(', ')]);
+			}
 			var r = window.confirm(msg);
 			if (!r) { return; }
 			JSAN.use('circ.util');
@@ -467,7 +485,7 @@
 			}
 			obj.retrieve();
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('Checkin probably did not happen.',E);
+			obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.items_checkin.no_checkin'),E);
 		}
 	},
 
@@ -479,18 +497,18 @@
 			for (var i = 0; i < retrieve_ids.length; i++) {
 				var doc_id = retrieve_ids[i].doc_id;
 				if (!doc_id) {
-					alert(retrieve_ids[i].barcode + ' is not cataloged');
+					alert($("patronStrings").getFormattedString('staff.patron.items.show_catalog.barcode_not_cataloged', [retrieve_ids[i].barcode]));
 					continue;
 				}
 				var opac_url = xulG.url_prefix( urls.opac_rdetail ) + '?r=' + doc_id;
 				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':'Retrieving title...'}, 
+					{'tab_name': $("patronStrings").getString('staff.patron.items.show_catalog.retrieving_title')}, 
 					content_params
 				);
 			}
@@ -533,7 +551,7 @@
 				'title' : { 'hidden' : false, 'flex' : '3' },
 				'due_date' : { 'hidden' : false },
 				'renewal_remaining' : { 'hidden' : false },
-				'stop_fines' : { 'hidden' : false },
+				'stop_fines' : { 'hidden' : false }
 			} 
 		);
 		var columns2 = circ.util.columns( 
@@ -543,7 +561,7 @@
 				'circ_lib' : { 'hidden' : false },
 				'title' : { 'hidden' : false, 'flex' : '3' },
 				'checkin_time' : { 'hidden' : false },
-				'stop_fines' : { 'hidden' : false },
+				'stop_fines' : { 'hidden' : false }
 			} 
 		);
 
@@ -590,7 +608,7 @@
     								params.on_retrieve(row);
     							}
     						} catch(E) {
-    							obj.error.standard_unexpected_error_alert('Error in callback for FM_CIRC_DETAILS.authoritative in patron/items.js',E);
+    							obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.retrieve_row.callback_error'), E);
     						}
     					}
     				);
@@ -614,7 +632,7 @@
     
     			return row;
             } catch(E) {
-                obj.error.standard_unexpected_error_alert('error in patron/items.js retrieve_row(): ',E);
+                obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.retrieve_row.error_in_retrieve_row'),E);
                 return params.row;
             }
 		}
@@ -642,7 +660,7 @@
 					} else {
 						obj.error.sdump('D_PATRON','patron.items: No external .on_select()\n');
 					}
-				},
+				}
 			}
 		);
 		
@@ -663,7 +681,7 @@
 					if (typeof obj.on_select2 == 'function') {
 						obj.on_select2(list);
 					}
-				},
+				}
 			}
 		);
 	},
@@ -679,16 +697,19 @@
             } else {
     			var which_list = nparams.which_list;
                 switch(which_list) {
-                    case 1: case '1':
-                        setTimeout(function(){try{obj.list2.refresh_row(nparams);}catch(E){obj.error.standard_unexpected_error_alert('2 Error refreshing row in list\ncirc_id = ' + circ_id + '\nnparams = ' + nparams,E);}},1000);
+                    case 1:
+					case '1':
+                        setTimeout(function(){try{obj.list2.refresh_row(nparams);}catch(E){
+													obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.refresh.error_refreshing_row2', [circ_id, nparams]),E);}},1000);
                         break;
                     default:
-                        setTimeout(function(){try{obj.list.refresh_row(nparams);}catch(E){obj.error.standard_unexpected_error_alert('2 Error refreshing row in list\ncirc_id = ' + circ_id + '\nnparams = ' + nparams,E);}},1000);
+                        setTimeout(function(){try{obj.list.refresh_row(nparams);}catch(E){
+													obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.refresh.error_refreshing_row2', [circ_id, nparams]),E);}},1000);
                         break;
                 }
             }
 		} catch(E) {
-			obj.error.standard_unexpected_error_alert('Error refreshing row in list\ncirc_id = ' + circ_id + '\nnparams = ' + nparams,E);
+			obj.error.standard_unexpected_error_alert($("patronStrings").getFormattedString('staff.patron.items.refresh.error_refreshing_row', [circ_id, nparams]),E);
 		}
 	},
 
@@ -704,7 +725,7 @@
 				[ ses(), obj.patron_id ]
 			);
 			if (typeof robj.ilsevent!='undefined') {
-				obj.error.standard_unexpected_error_alert('Error retrieving circulations.',E);
+				obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.retrieve.err_retrieving_circulations'),E);
 			} else {
 				obj.checkouts = obj.checkouts.concat( robj.overdue );
 				obj.checkouts = obj.checkouts.concat( robj.out );
@@ -717,7 +738,7 @@
 				[ ses(), obj.patron_id ]
 			);
 			if (typeof robj.ilsevent!='undefined') {
-				obj.error.standard_unexpected_error_alert('Error retrieving circulations.',E);
+				obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.retrieve.err_retrieving_circulations'),E);
 			} else {
 				obj.checkouts2 = obj.checkouts2.concat( robj.lost );
 				obj.checkouts2 = obj.checkouts2.concat( robj.claims_returned );
@@ -743,7 +764,7 @@
 						throw('typeof nparams = ' + typeof nparams);
 					}
 				} catch(E) {
-					obj.error.standard_unexpected_error_alert('patron/items.js: error in gen_list_append',E);
+					obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.items.gen_list_append.error'),E);
 				}
 			};
 		}
@@ -806,7 +827,7 @@
 		obj.controller.view.sel_mark_items_missing2.setAttribute('disabled','false');
 
 		this.retrieve_ids2 = list;
-	},
+	}
 
 }
 

Modified: trunk/Open-ILS/xul/staff_client/server/patron/items.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/items.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/items.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,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/');
 				JSAN.use('util.error'); g.error = new util.error();
@@ -53,8 +53,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:\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/items.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -65,7 +64,9 @@
 	]]>
 	</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="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<commandset id="items_cmds">
 		<command id="save_columns" />

Modified: trunk/Open-ILS/xul/staff_client/server/patron/search_form.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/search_form.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/search_form.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -23,7 +23,7 @@
 				control_map : {
 					'cmd_broken' : [
 						['command'],
-						function() { alert('Not Yet Implemented'); }
+						function() { alert($("commonStrings").getString('common.unimplemented')); }
 					],
 					'cmd_patron_search_submit' : [
 						['command'],

Modified: trunk/Open-ILS/xul/staff_client/server/patron/search_form.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/search_form.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/search_form.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -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();
@@ -62,8 +64,7 @@
 				}
 	
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" + 'patron/search_form.xul\n' + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/search_form.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -85,6 +86,9 @@
 
 	]]>
 	</script>
+	
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<commandset id="patron_search_form_cmds">
 	</commandset>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/search_form_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/search_form_overlay.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/search_form_overlay.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 
 <!DOCTYPE overlay PUBLIC "" ""[
-   <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+   <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 
@@ -31,11 +31,11 @@
 	</columns>
 	<rows id="psr">
 		<row>
-			<label control="inactive" accesskey="I" value="Include inactive patrons?"/>
+			<label control="inactive" accesskey="&staff.patron.search_form_overlay.inactive.accesskey;" value="&staff.patron.search_form_overlay.inactive.value;"/>
 			<checkbox id="inactive" />
         </row>
         <row>
-			<label control="search_range_menu" value="Limit results to patrons in"/>
+			<label control="search_range_menu" value="&staff.patron.search_form_overlay.search_range_menu.value;"/>
             <hbox id="search_depth" />
 		</row>
 		<row id="psr1">

Modified: trunk/Open-ILS/xul/staff_client/server/patron/search_result.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/search_result.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/search_result.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -1,5 +1,7 @@
 dump('entering patron/search_result.js\n');
 
+function $(id) { return document.getElementById(id); }
+
 if (typeof patron == 'undefined') patron = {};
 patron.search_result = function (params) {
 
@@ -31,12 +33,12 @@
 				'family_name' : { 'hidden' : 'false' },
 				'first_given_name' : { 'hidden' : 'false' },
 				'second_given_name' : { 'hidden' : 'false' },
-				'dob' : { 'hidden' : 'false' },
+				'dob' : { 'hidden' : 'false' }
 			},
 			{
 				'except_these' : [
 					'barcode',
-				],
+				]
 			}
 		);
 		obj.list.init(
@@ -54,7 +56,7 @@
 								if (typeof params.on_retrieve == 'function') {
 									params.on_retrieve(row);
 								} else {
-									alert('typeof params.on_retrieve == ' + typeof params.on_retrieve);
+									alert($("patronStrings").getFormattedString('staff.patron.search_result.init.typeof_params', [typeof params.on_retrieve]));
 								}
 							} catch(E) {
 								alert('error: ' + E);
@@ -88,7 +90,7 @@
 				control_map : {
 					'cmd_broken' : [
 						['command'],
-						function() { alert('Not Yet Implemented'); }
+						function() { alert($("commonStrings").getString('common.unimplemented')); }
 					],
 					'cmd_search_print' : [
 						['command'],
@@ -99,7 +101,7 @@
 								};
 								obj.list.print( p );
                             } catch(E) {
-								obj.error.standard_unexpected_error_alert('patron search print',E);
+								obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.search_result.init.search_print'),E);
                             }
 						}
 					],
@@ -109,7 +111,7 @@
 							try {
 								obj.list.clipboard();
 							} catch(E) {
-								obj.error.standard_unexpected_error_alert('patron search clipboard',E);
+								obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.search_result.init.search_clipboard'),E);
 							}
 						}
 					],
@@ -119,7 +121,7 @@
 							try {
 								obj.list.save_columns();
 							} catch(E) {
-								obj.error.standard_unexpected_error_alert('patron search saving columns',E);
+								obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.search_result.init.search_saving_columns'),E);
 							}
 						}
 					],
@@ -190,15 +192,15 @@
 				results = this.network.simple_request( 'FM_AU_IDS_RETRIEVE_VIA_HASH', params );
 				if ( (results == null) || (typeof results.ilsevent != 'undefined') ) throw(results);
 				if (results.length == 0) {
-					alert('No patrons found matching search criteria.');
+					alert($("patronStrings").getString('staff.patron.search_result.search.no_patrons_found'));
 					return;
 				}
 				if (results.length == obj.result_cap+1) {
 					results.pop();
-					alert('Results capped at ' + obj.result_cap + ' patrons.');
+					alert($("patronStrings").getFormattedString('staff.patron.search_result.search.capped_results', [obj.result_cap]));
 				}
 			} else {
-				alert('Please enter some search terms.');
+				alert($("patronStrings").getString('staff.patron.search_result.search.enter_search_terms'));
 				return;
 			}
 

Modified: trunk/Open-ILS/xul/staff_client/server/patron/search_result.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/search_result.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/search_result.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -26,16 +26,18 @@
 
 	<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 	<!-- BEHAVIOR -->
-        <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
-        <scripts id="openils_util_scripts"/>
+	<script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
+	<scripts id="openils_util_scripts"/>
 
 	<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();
@@ -57,8 +59,7 @@
 				g.search_result.init( { 'query' : query } );
 	
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/search_result.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -80,7 +81,8 @@
 		<command id="cmd_save_cols" />
 	</commandset>
 
-    <messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties"/>
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
 
 	<box id="patron_search_result_main" />
 

Modified: trunk/Open-ILS/xul/staff_client/server/patron/search_result_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/search_result_overlay.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/search_result_overlay.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -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="patron_search_result_overlay" 
 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
@@ -14,9 +14,9 @@
 			<tree id="patron_list" flex="1" enableColumnDrag="true" seltype="multiple"/>
 			<hbox>
 				<spacer flex="1"/>
-				<button label="Save Columns" command="cmd_save_cols"/>
-				<button label="Copy to Clipboard" command="cmd_sel_clip"/>
-				<button label="Print" command="cmd_search_print" />
+				<button label="&staff.patron.search_result_overlay.save_cols.label;" command="cmd_save_cols"/>
+				<button label="&staff.patron.search_result_overlay.copy_to_clipboard.label;" command="cmd_sel_clip"/>
+				<button label="&staff.patron.search_result_overlay.print.label;" command="cmd_search_print" />
 			</hbox>
 		</vbox>
 	</box>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/summary.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/summary.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/summary.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -1,5 +1,7 @@
 dump('entering patron.summary.js\n');
 
+function $(id) { return document.getElementById(id); }
+
 if (typeof patron == 'undefined') patron = {};
 patron.summary = function (params) {
 
@@ -31,7 +33,7 @@
 				control_map : {
 					'cmd_broken' : [
 						['command'],
-						function() { alert('Not Yet Implemented'); }
+						function() { alert($("commonStrings").getString('common.unimplemented')); }
 					],
 					'patron_alert' : [
 						['render'],
@@ -77,7 +79,7 @@
 						function(e) {
 							return function() { 
 								e.setAttribute('value',
-									'Internet: ' + 
+									$("patronStrings").getString('staff.patron.summary.patron_net_access') + 
 									obj.OpenILS.data.hash.cnal[
 										obj.patron.net_access_level()
 									].name()
@@ -133,7 +135,7 @@
 									function(req) {
 										JSAN.use('util.money');
 										var robj = req.getResultObject();
-										e.setAttribute('value', '$' + util.money.sanitize( robj.balance_owed() ));
+										e.setAttribute('value', $("patronStrings").getFormattedString('staff.patron.summary.patron_bill.money', [util.money.sanitize( robj.balance_owed() )]));
 									}
 								);
 								/*
@@ -301,7 +303,7 @@
 						function(e) {
 							return function() { 
 								e.setAttribute('value',
-									'Expires on ' + (
+									$("patronStrings").getString('staff.patron.summary.expires_on') + (
 										obj.patron.expire_date() ?
 										obj.patron.expire_date().substr(0,10) :
 										'<Unset>'
@@ -581,7 +583,7 @@
 								[ ses(), obj.id ]
 							);
 						} else {
-							throw('summary: No barcode or id');
+							throw($("patronStrings").getString('staff.patron.summary.retrieve.no_barcode'));
 						}
 						if (robj) {
 

Modified: trunk/Open-ILS/xul/staff_client/server/patron/summary.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/summary.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/summary.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -13,7 +13,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-	<!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -33,10 +33,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 @@
 				window.refresh = function () { g.summary.retrieve(); }
 
 			} catch(E) {
-				var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-					"system administrator or software developer the following:\n" + E + '\n';
+				var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/summary.xul', E]);
 				try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
 				alert(err_msg);
 			}
@@ -64,6 +65,9 @@
 
 	]]>
 	</script>
+	
+	<messagecatalog id="patronStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties"/>
+	<messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
 	<commandset id="patron_summary_cmds">
 	</commandset>

Modified: trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/summary_overlay.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -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="patron_summary_overlay" 
 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
@@ -16,11 +16,11 @@
 <vbox id="patron_info_sidebar" flex="1">
 	<label id="patron_name" hidden="true" class="patronNameLarge"/>
 	<groupbox id="PatronSummaryAlert_groupbox" flex="0" hidden="true" class="alert">
-		<caption id="psagbc" label="Alert" class="shrinkable_groupbox"/>
+		<caption id="psagbc" label="&staff.patron.summary_overlay.psagbc.alert.label;" class="shrinkable_groupbox"/>
 		<description id="patron_alert"/>
 	</groupbox>
 	<groupbox id="PatronSummaryStanding_groupbox" flex="0" hidden="true" class="standing">
-		<caption id="pssgbc" label="Standing" class="shrinkable_groupbox"/>
+		<caption id="pssgbc" label="&staff.patron.summary_overlay.pssgbc.standing.label;" class="shrinkable_groupbox"/>
 		<vbox id="patron_standing_penalties"/>
 	</groupbox>
 	<groupbox id="PatronSummaryStatus_groupbox" flex="0" class="status"/>
@@ -93,19 +93,19 @@
 			<label id="patron_overdue" class="items_overdue value" style="background: grey"/>
 		</row>
 		<row id="pdsgr5">
-			<label id="PatronSummaryStatus_long_overdue_label" value="Long Overdue:" class="text_right items_long_overdue label" style="background: grey"/>
+			<label id="PatronSummaryStatus_long_overdue_label" value="&staff.patron.summary_overlay.overdue.value;" class="text_right items_long_overdue label" style="background: grey"/>
 			<label id="patron_long_overdue" class="items_long_overdue value" style="background: grey"/>
 		</row>
 		<row id="pdsgr7">
-			<label id="PatronSummaryStatus_claimed_returned_label" value="Claimed Returned:" class="text_right items_long_overdue label" style="background: grey"/>
+			<label id="PatronSummaryStatus_claimed_returned_label" value="&staff.patron.summary_overlay.claimed_returned.value;" class="text_right items_long_overdue label" style="background: grey"/>
 			<label id="patron_claimed_returned" class="items_claimed_returned value" style="background: grey"/>
 		</row>
 		<row id="pdsgr6">
-			<label id="PatronSummaryStatus_lost_label" value="Lost:" class="text_left items_lost label"/>
+			<label id="PatronSummaryStatus_lost_label" value="&staff.patron.summary_overlay.lost_label.value;" class="text_left items_lost label"/>
 			<label id="patron_lost" class="items_lost value"/>
 		</row>
 		<row id="pdsgr6a">
-			<label id="PatronSummaryStatus_noncat_label" value="Non Cat:" class="text_left items_noncat label"/>
+			<label id="PatronSummaryStatus_noncat_label" value="&staff.patron.summary_overlay.noncat_label.value;" class="text_left items_noncat label"/>
 			<label id="patron_noncat" class="items_noncat value"/>
 		</row>
 	</rows>
@@ -115,7 +115,7 @@
 	<!--
 	<caption label="&staff.patron_display.contact.caption;"/>
 	-->
-	<caption id="PatronSummaryContact_caption" label="ID/Contact Info" class="shrinkable_groupbox" />
+	<caption id="PatronSummaryContact_caption" label="&staff.patron.summary_overlay.summary_contact.label;" class="shrinkable_groupbox" />
 	<hbox id="pdcgbhb1">
 		<grid id="PatronSummaryContact_grid" />
 		<spacer id="pdcgbhbs1" flex="1"/>
@@ -187,7 +187,7 @@
 		<row id="pdsgpr4"><label id="pdsgpr4l" value=" "/></row>
 		<row id="pdsgpr4a">
 			<label id="PatronSummaryContact_usrname_label" class="text_left usrname label"
-				value="OPAC Login:" />
+				value="&staff.patron.summary_overlay.opac_login.value;" />
 			<label id="patron_usrname" class="usrname value"/>
 		</row>
 		<row id="pdcgpr5">

Modified: trunk/Open-ILS/xul/staff_client/server/patron/ue.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/ue.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/ue.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -12,6 +12,7 @@
 var netLevelsCache			= {};
 var guardianNote				= null;	
 
+function $(id) { return document.getElementById(id); }
 
 /* fetch the necessary data to start off */
 function uEditInit() {
@@ -25,7 +26,7 @@
 	clone		= cgi.param('clone'); 
 	if (xulG) if (xulG.clone) clone = xulG.clone;
 	if (xulG) if (xulG.params) if (xulG.params.clone) clone = xulG.params.clone;
-	if(!session) throw "User session is not defined";
+	if(!session) throw $("patronStrings").getString('staff.patron.ue.uEditInit.session_no_defined');
 
 	fetchUser(session);
 	$('uedit_user').appendChild(text(USER.usrname()));
@@ -486,8 +487,7 @@
 			req.send(true);
 			var resp = req.result();
 			if( checkILSEvent(resp) ) {
-				alertILSEvent(resp, 
-					"Error creating patron guardian/parent note");
+				alertILSEvent(resp, $("patronStrings").getString('staff.patron.ue.uEditSaveuser.error_creating_note'));
 				return;
 			}
 		}
@@ -607,9 +607,11 @@
 
 function uEditShowSearch(link,type) {
 	if(!type) type = link.getAttribute('type');
-	if(window.xulG)
+	if(window.xulG) {
 		window.xulG.spawn_search(uEditDupHashes[type]);	
-	else alert('Search would be:\n' + js2JSON(uEditDupHashes[type]));
+	} else {
+		alert($("patronStrings").getFormattedString('staff.patron.ue.uEditShowSearch.search', [js2JSON(uEditDupHashes[type])]));
+	}
 }
 
 function uEditMarkCardLost() {

Modified: trunk/Open-ILS/xul/staff_client/server/patron/user_buckets.xul
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/user_buckets.xul	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/user_buckets.xul	2008-07-06 16:06:30 UTC (rev 9970)
@@ -11,7 +11,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();
@@ -53,7 +55,7 @@
 	]]>
 	</script>
 
-	<label value="Just a stub, Not Yet Implemented"/>
+	<label value="&staff.patron.user_buckets.stub_not_implemented;"/>
 
 </window>
 

Modified: trunk/Open-ILS/xul/staff_client/server/patron/user_edit.js
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/user_edit.js	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/user_edit.js	2008-07-06 16:06:30 UTC (rev 9970)
@@ -10,6 +10,8 @@
 var user_work_ous = [];
 var work_ou_list = [];
 
+function $(id) { return document.getElementById(id); }
+
 function set_work_ou(row) {
         var wid = findNodeByName(row,'a.id').getAttribute('workou_id');
         var wapply = findNodeByName(row,'a.id').checked;
@@ -103,7 +105,7 @@
 						break;
 					}
 				}
-				throw "Depth is required on the " + p.code() + " permission.";
+				throw $("patronStrings").getFormattedString('staff.patron.user_edit.save_user.depth_required', [p.code()]);
 			}
 
 			save_perms.push( user_perms[i] );
@@ -128,9 +130,7 @@
 		if (pok.ilsevent) throw pok;
 
 		if (pok || wok) {
-			alert(	'User ' + user.usrname() +
-				' [' + user.card().barcode() + '] ' +
-				' successfully modified.\n' + pok + ' permissions and ' + wok + ' work locations updated.');
+			alert($("patronStrings").getFormattedString('staff.patron.user_edit.save_user.user_modified_successfully', [user.usrname(), user.card().barcode(), pok, wok]));
 		}
 
 		init_editor();
@@ -373,7 +373,7 @@
 		(up ? up.depth() : findOrgDepth(user.home_ou())),
 		{ label_field		: 'name',
 		  value_field		: 'depth',
-		  empty_label		: '-- Select One --',
+		  empty_label		: $("patronStrings").getString('staff.patron.user_edit.display_perm.select_one'),
 		  empty_value		: '',
 		  clear			: true }
 	);

Modified: trunk/Open-ILS/xul/staff_client/server/patron/user_edit.xml
===================================================================
--- trunk/Open-ILS/xul/staff_client/server/patron/user_edit.xml	2008-07-06 16:01:49 UTC (rev 9969)
+++ trunk/Open-ILS/xul/staff_client/server/patron/user_edit.xml	2008-07-06 16:06:30 UTC (rev 9970)
@@ -1,4 +1,11 @@
 <?xml version='1.0'?>
+
+<!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
+<!-- LOCALIZATION -->
+<!DOCTYPE window PUBLIC "" ""[
+	<!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
+]>
+
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude">
 
         <head>
@@ -65,9 +72,9 @@
 
 		<table width="100%">
 			<tr>
-				<td class="label">User Name:</td>
+				<td class="label">&staff.patron.user_edit.user_name.label;</td>
 				<td class="value"><input disabled="true" type="text" name="user.usrname" id="user.usrname"/></td>
-				<td class="label">Barcode:</td>
+				<td class="label">&staff.patron.user_edit.barcode.label;</td>
 				<td class="value"><input type="text" name="user.card.barcode" id="user.card.barcode" disabled="true"/></td>
 			</tr>
 			<tr>



More information about the open-ils-commits mailing list