Apply Craig Ricciuto's patch to bring i18n to a number of patron interfaces
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 17 Jun 2008 18:07:45 +0000 (18:07 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 17 Jun 2008 18:07:45 +0000 (18:07 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@9844 dcc99617-32d9-48b4-a31d-7c20da2025e4

16 files changed:
Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/xul/staff_client/server/locale/en-US/patron.properties [new file with mode: 0644]
Open-ILS/xul/staff_client/server/patron/barcode_entry.xul
Open-ILS/xul/staff_client/server/patron/bill_cc_info.xul
Open-ILS/xul/staff_client/server/patron/bill_check_info.xul
Open-ILS/xul/staff_client/server/patron/bill_details.xul
Open-ILS/xul/staff_client/server/patron/bill_history.xul
Open-ILS/xul/staff_client/server/patron/bill_summary_overlay.xul
Open-ILS/xul/staff_client/server/patron/bill_wizard.xul
Open-ILS/xul/staff_client/server/patron/bills.js
Open-ILS/xul/staff_client/server/patron/bills.xul
Open-ILS/xul/staff_client/server/patron/bills_overlay.xul
Open-ILS/xul/staff_client/server/patron/display.js
Open-ILS/xul/staff_client/server/patron/display.xul
Open-ILS/xul/staff_client/server/patron/display_overlay.xul
Open-ILS/xul/staff_client/server/patron/hold_notices.xul

index 4af79ef..08e1554 100644 (file)
 <!ENTITY staff.cat.z3950.marc_import_overlay.accesskey "O">
 <!ENTITY staff.cat.z3950.marc_import.label "MARC Editor for Import">
 <!ENTITY staff.cat.z3950.marc_import.accesskey "I">
+<!ENTITY staff.pat.barcode_entry.retrieve_patron.label "Retrieve Patron">
+<!ENTITY staff.pat.barcode_entry.barcode.label "Barcode:">
+<!ENTITY staff.pat.barcode_entry.barcode.accesskey "B">
+<!ENTITY staff.pat.barcode_entry.submit_btn.label "Submit">
+<!ENTITY staff.pat.barcode_entry.submit_btn.accesskey "S">
+<!ENTITY staff.pat.barcode_entry.retrieving.label "Retrieving...">
+<!ENTITY staff.patron.bill_cc_info.visa.label "Visa">
+<!ENTITY staff.patron.bill_cc_info.mastercard.label "Mastercard">
+<!ENTITY staff.patron.bill_cc_info.american_express.label "American Express">
+<!ENTITY staff.patron.bill_cc_info.discover.label "Discover">
+<!ENTITY staff.patron.bill_cc_info.other.label "Other">
+<!ENTITY staff.patron.bill_cc_info.cc_number.value "CC Number">
+<!ENTITY staff.patron.bill_cc_info.month_expire.value "Expire Month">
+<!ENTITY staff.patron.bill_cc_info.year_expire.value "Expire Year">
+<!ENTITY staff.patron.bill_cc_info.approval_code.value "Approval Code">
+<!ENTITY staff.patron.bill_cc_info.note.value "Note">
+<!ENTITY staff.patron.bill_cc_info.cancel.label "Cancel">
+<!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_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">
+<!ENTITY staff.patron.bill_check_info.cancel.label "Cancel">
+<!ENTITY staff.patron.bill_check_info.cancel.accesskey "C">
+<!ENTITY staff.patron.bill_check_info.submit.label "Submit this Info">
+<!ENTITY staff.patron.bill_check_info.submit.accesskey "S">
+<!ENTITY staff.patron.bill_details.bills.label "Bills">
+<!ENTITY staff.patron.bill_details.save_columns.label "Save Columns">
+<!ENTITY staff.patron.bill_details.copy_to_clipboard.label "Copy to Clipboard">
+<!ENTITY staff.patron.bill_details.print_export.label "Print Export">
+<!ENTITY staff.patron.bill_details.void_selection.label "Void selected billings">
+<!ENTITY staff.patron.bill_details.payments.label "Payments">
+<!ENTITY staff.patron.bill_details.show_in_catalog.label "Show in Catalog">
+<!ENTITY staff.patron.bill_details.show_in_catalog.accesskey "S">
+<!ENTITY staff.patron.bill_details.close_window.label "Close Window">
+<!ENTITY staff.patron.bill_details.close_window.accesskey "c">
+<!ENTITY staff.patron.bill_history.caption.label "Bill History">
+<!ENTITY staff.patron.bill_history.add_billing.label "Add Billing">
+<!ENTITY staff.patron.bill_history.full_details.label "Full Details">
+<!ENTITY staff.patron.bill_history.full_details.accesskey "D">
+<!ENTITY staff.patron.bill_history.show_in_catalog.label "Show in Catalog">
+<!ENTITY staff.patron.bill_history.show_in_catalog.accesskey "S">
+<!ENTITY staff.patron.bill_history.print.label "Print">
+<!ENTITY staff.patron.bill_history.print.accesskey "P">
+<!ENTITY staff.patron.bill_history.close_window.label "Close Window">
+<!ENTITY staff.patron.bill_history.close_window.accesskey "c">
+<!ENTITY staff.patron.bills_overlay.still_checked_out.label "Red Items are still Checked Out">
+<!ENTITY staff.patron.bills_overlay.uncheck_all.label "Uncheck All">
+<!ENTITY staff.patron.bills_overlay.check_all.label "Check All">
+<!ENTITY staff.patron.bills_overlay.print_bills.label "Print Bills" >
+<!ENTITY staff.patron.bills_overlay.alternate_view.label "Alternate View">
+<!ENTITY staff.patron.bills_overlay.alternate_view.accesskey "V">
+<!ENTITY staff.patron.bills_overlay.summary.label "Summary">
+<!ENTITY staff.patron.bills_overlay.net_balance.value "Net Balance">
+<!ENTITY staff.patron.bills_overlay.payment_applied.value "- Payment applied">
+<!ENTITY staff.patron.bills_overlay.new_balance.value "= New Balance">
+<!ENTITY staff.patron.bills_overlay.pay_bill.label "Pay Bill">
+<!ENTITY staff.patron.bills_overlay.payment_type.value "Payment Type">
+<!ENTITY staff.patron.bills_overlay.payment_type.accesskey "t">
+<!ENTITY staff.patron.bills_overlay.cash.label "Cash">
+<!ENTITY staff.patron.bills_overlay.check.label "Check">
+<!ENTITY staff.patron.bills_overlay.credit_card.label "Credit Card">
+<!ENTITY staff.patron.bills_overlay.word.label "Work">
+<!ENTITY staff.patron.bills_overlay.forgive.label "Forgive">
+<!ENTITY staff.patron.bills_overlay.goods.label "Goods">
+<!ENTITY staff.patron.bills_overlay.payment_received.value "Payment received">
+<!ENTITY staff.patron.bills_overlay.payment_received.accesskey "a">
+<!ENTITY staff.patron.bills_overlay.payment_applied.value "- Payment applied">
+<!ENTITY staff.patron.bills_overlay.change.value "= Change">
+<!ENTITY staff.patron.bills_overlay.patron_credit.value "or Patron Credit">
+<!ENTITY staff.patron.bills_overlay.bill_patron.label "Bill Patron">
+<!ENTITY staff.patron.bills_overlay.bill_patron.accesskey "B">
+<!ENTITY staff.patron.bills_overlay.history.label "History">
+<!ENTITY staff.patron.bills_overlay.history.accesskey "H">
+<!ENTITY staff.patron.bills_overlay.annotate_payment.label "Annotate Payment">
+<!ENTITY staff.patron.bills_overlay.convert_change_to_credit.label "Convert Change to Patron Credit">
+<!ENTITY staff.patron.bills_overlay.apply_payment.label "Apply Payment!">
+<!ENTITY staff.patron.bills_overlay.apply_payment.accesskey "P">
+<!ENTITY staff.patron.bill_summary_overlay.bill_number.value "Bill #">
+<!ENTITY staff.patron.bill_summary_overlay.total_billed.value "Total Billed">
+<!ENTITY staff.patron.bill_summary_overlay.title.value "Title">
+<!ENTITY staff.patron.bill_summary_overlay.type.value "Type">
+<!ENTITY staff.patron.bill_summary_overlay.total_paid.value "Total Paid">
+<!ENTITY staff.patron.bill_summary_overlay.checked_out.value "Checked Out">
+<!ENTITY staff.patron.bill_summary_overlay.start.value "Start">
+<!ENTITY staff.patron.bill_summary_overlay.balance_owed.value "Balance Owed">
+<!ENTITY staff.patron.bill_summary_overlay.due_date.value "Due Date">
+<!ENTITY staff.patron.bill_summary_overlay.finish.value "Finish">
+<!ENTITY staff.patron.bill_summary_overlay.renewal.value "Renewal?">
+<!ENTITY staff.patron.bill_summary_overlay.checked_in.value "Checked In">
+<!ENTITY staff.patron.bill_wizard.create_bill.label "Create Bill">
+<!ENTITY staff.patron.bill_wizard.location.value "Location">
+<!ENTITY staff.patron.bill_wizard.transaction_type.value "Transaction Type">
+<!ENTITY staff.patron.bill_wizard.grocery.label "Grocery">
+<!ENTITY staff.patron.bill_wizard.circulation.label "Circulation">
+<!ENTITY staff.patron.bill_wizard.billing_type.label "Billing Type">
+<!ENTITY staff.patron.bill_wizard.amount.value "Amount">
+<!ENTITY staff.patron.bill_wizard.note.value "Note">
+<!ENTITY staff.patron.bill_wizard.cancel.label "Cancel">
+<!ENTITY staff.patron.bill_wizard.cancel.accesskey "C">
+<!ENTITY staff.patron.bill_wizard.submit.label "Submit this Bill">
+<!ENTITY staff.patron.bill_wizard.submit.accesskey "S">
+<!ENTITY staff.patron.display_overlay.none_selected.value "No Patron Selected">
+<!ENTITY staff.patron.display_overlay.barred.value "(Barred)">
+<!ENTITY staff.patron.display_overlay.expired.value "(Expired)">
+<!ENTITY staff.patron.display_overlay.inactive.value "(In-Active)">
+<!ENTITY staff.patron.display_overlay.juvenile.value "(Juvenile)">
+<!ENTITY staff.patron.display_overlay.alert.value "(Alert)">
+<!ENTITY staff.patron.display_overlay.see_notes.value "(See Notes)">
+<!ENTITY staff.patron.display_overlay.max_bills.value "(Max Bills)">
+<!ENTITY staff.patron.display_overlay.max_overdues.value "(Max Overdues)">
+<!ENTITY staff.patron.display_overlay.has_bills.value "(Has Bills)">
+<!ENTITY staff.patron.display_overlay.has_overdues.value "(Has Overdues)">
+<!ENTITY staff.patron.display_overlay.invalid_dob.value "(Invalid DOB)">
+<!ENTITY staff.patron.display_overlay.invalid_address.value "(Invalid Address)">
+<!ENTITY staff.patron.display_overlay.exit.label "Exit">
+<!ENTITY staff.patron.display_overlay.exit.accesskey "x">
+<!ENTITY staff.patron.display_overlay.search_form.label "Search Form">
+<!ENTITY staff.patron.display_overlay.search_form.accesskey "F">
+<!ENTITY staff.patron.display_overlay.retrieve_patron.label "Retrieve Patron">
+<!ENTITY staff.patron.display_overlay.retrieve_patron.accesskey "R">
+<!ENTITY staff.patron.hold_notices.add_record_notification.label "Add Record of Notification">
+<!ENTITY staff.patron.hold_notices.add_record_notification.accesskey "A">
+<!ENTITY staff.patron.hold_notices.close_window.label "Close">
+<!ENTITY staff.patron.hold_notices.close_window.accesskey "C">
diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties b/Open-ILS/xul/staff_client/server/locale/en-US/patron.properties
new file mode 100644 (file)
index 0000000..6bce7f5
--- /dev/null
@@ -0,0 +1,74 @@
+staff.patron.barcode_entry.user_permission_editor=User Permission Editor
+staff.patron.barcode_entry.check_out=Check Out
+staff.patron.barcode_entry.no_barcode=No barcode entered.
+staff.patron.barcode_entry.barcode_retrieval_problem=Problem retrieving %1$s.  Please report this message: \n%2$s
+staff.patron.barcode_entry.barcode_not_found=Barcode %1$s not found.
+staff.patron.barcode_entry.consent_from_patron=Does patron %1$s, %2$s from %3$s (%4$s) consent to having their personal information shared with your library?
+staff.patron.barcode_entry.patron_consent_title=Patron/Library Opt-In Confirmation
+staff.patron.barcode_entry.patron_consent_accept=Accept
+staff.patron.barcode_entry.patron_consent_deny=Deny
+staff.patron.barcode_entry.patron_consent_confirm=Check here to confirm this message
+staff.patron.barcode_entry.patron_display_error=spawning patron display
+staff.patron.barcode_entry.user_perm_display_error=spawning user perm editor
+staff.patron.bill_details.my_init.error=bill_details.xul, my_init:
+staff.patron.bill_details.handle_void.voided_billings.alert=All selected billings have already voided.
+staff.patron.bill_details.handle_void.confirm_void_billing=Are you sure you would like to void $%1$s worth of line-item billings?
+staff.patron.bill_details.handle_void.confirm_void_billing_title=Voiding Bills
+staff.patron.bill_details.handle_void.confirm_void_billing_yes=Yes
+staff.patron.bill_details.handle_void.confirm_void_billing_no=No
+staff.patron.bill_details.handle_void.confirm_void_billing_confirm_message=Check here to confirm this message
+staff.patron.bill_details.handle_void.voiding_error=Error voiding bills.
+staff.patron.bill_details.handle_void.billings_voided=Billings voided.
+staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again=Please close this window and try again.
+staff.patron.bill_history.my_init.current_bills=Current Bills
+staff.patron.bill_history.my_init.bill_history=Bill History
+staff.patron.bill_history.handle_add.message_plural=Are you sure you would like to add a billing to bills %1$s?
+staff.patron.bill_history.handle_add.message_singular=Are you sure you would like to add a billing to bill %1$s?
+staff.patron.bill_history.handle_add.title=Bill Patron
+staff.patron.bill_history.handle_add.btn_yes=Yes
+staff.patron.bill_history.handle_add.btn_no=No
+staff.patron.bill_history.handle_add.confirm_message=Check here to confirm this message
+staff.patron.bill_history.print_bills.print_error=printing bills
+staff.patron.bills.bill_payment_amount.credit_amount=Patron only has %1$s in credit.
+staff.patron.bills.bill_change_amount.greedy=Someone wanted more money than they deserved\n
+staff.patron.bills.apply_payment.nothing_applied=No payments or patron credit applied.
+staff.patron.bills.pay.annotate_payment=Please annotate this payment:
+staff.patron.bills.pay.annotate_payment.title=Annotate Payment
+staff.patron.bills.pay.refund_exceeds_desk_payment=%1$s\n\nAnother way to "zero" this transaction is to use Add Billing and add a misc bill to counter the negative balance.
+staff.patron.bills.pay.payment_failed=Bill payment likely failed
+staff.patron.bills.info_box.label_value.title=Title
+staff.patron.bills.info_box.label_value.type=Type
+staff.patron.bills.info_box.label_value.last_billing=Last Billing:
+staff.patron.bills.info_box.label_value.add_billing=Add Billing
+staff.patron.bills.info_box.label_value.refund=Refund
+staff.patron.bills.info_box.label_value.void_all_billings=Void All Billings
+staff.patron.bills.void_all_billings.all_voided=All billings already voided on this bill.
+staff.patron.bills.void_all_billings.void.message=Are you sure you would like to void $%1$s worth of line-item billings?
+staff.patron.bills.void_all_billings.void.title=Voiding Bills
+staff.patron.bills.void_all_billings.void.yes=Yes
+staff.patron.bills.void_all_billings.void.no=No
+staff.patron.bills.void_all_billings.void.confirm_message=Check here to confirm this message
+staff.patron.bills.void_all_billings.error_voiding_bills=Error voiding bills.
+staff.patron.bills.void_all_billings.billings_voided=Billings voided.
+staff.patron.bill_wizard.patron_bill_finish.billing_added=Billing added.
+staff.patron.display.cmd_patron_edit.edit_search=Editor would like to search for: %1$s
+staff.patron.display.spawn_editor.editing_related_patron=Editing Related Patron
+staff.patron.display.init.retrieving=Retrieving...
+staff.patron.display.init.network_request.alert_message=Alert message: "%1$s"<br/><br/>\n
+staff.patron.display.init.network_request.inactive_card=Patron account retrieved with an INACTIVE card.<br/><br/>\n
+staff.patron.display.init.network_request.account_barred=Patron account is BARRED.<br/><br/>\n
+staff.patron.display.init.network_request.account_inactive=Patron account is INACTIVE.<br/><br/>\n
+staff.patron.display.init.network_request.accoutn_expired=Patron account is EXPIRED.<br/><br/>\n
+staff.patron.display.init.network_request.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.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
+staff.patron.hold_notices.note=Note
+staff.patron.hold_notices.cancel=Cancel
+staff.patron.hold_notices.cancel_accesskey=C
+staff.patron.hold_notices.add_notif_record=Add Notification Record
+staff.patron.hold_notices.add_notif_record_accesskey=A
+staff.patron.hold_notices.new_notification.not_created=The notification was not likely created.
index 1ba13b2..ca68dfb 100644 (file)
@@ -11,7 +11,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
        <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
        <script>
        <![CDATA[
+               function $(id) { return document.getElementById(id); }
+               
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                   if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
@@ -59,9 +61,9 @@
        
                                if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
                     if (xul_param('perm_editor')) {
-                                           try { window.xulG.set_tab_name('User Permission Editor'); } catch(E) { alert(E); }
+                                           try { window.xulG.set_tab_name($(patronStrings).getString('staff.patron.barcode_entry.user_permission_editor')); } catch(E) { alert(E); }
                     } else {
-                                       try { window.xulG.set_tab_name('Check Out'); } catch(E) { alert(E); }
+                                       try { window.xulG.set_tab_name($(patronStrings).getString('staff.patron.barcode_entry.check_out')); } catch(E) { alert(E); }
                     }
                                }
 
@@ -73,6 +75,7 @@
                        } 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);
                        }
@@ -87,7 +90,7 @@
 
                                barcode = String( barcode ).replace( /\s+/g, '' );
 
-                               if (!barcode) { sound.bad(); add_msg('No barcode entered.'); tb.select(); tb.focus(); return; }
+                               if (!barcode) { sound.bad(); add_msg($(patronStrings).getString('staff.patron.barcode_entry.no_barcode')); tb.select(); tb.focus(); return; }
 
                                JSAN.use('util.network'); var net = new util.network();
 
                                                var robj = req.getResultObject();
                                                if (typeof robj.ilsevent != 'undefined') {
                                                        sound.bad();
-                                                       add_msg('Problem retrieving ' + barcode + '.  Please report this message: \n' + js2JSON(robj));
+                                                       add_msg($(patronStrings).getFormattedString('staff.patron.barcode_entry.barcode_retrieval_problem', [barcode, js2JSON(robj)]));
                                                        return;
                                                } else if (robj == 0) {
                                                        sound.bad(); 
-                                                       add_msg('Barcode ' + barcode + ' not found.');
+                                                       add_msg($(patronStrings).getFormattedString('staff.patron.barcode_entry.barcode_not_found', [barcode]));
                                                        return;
                                                }
 
-                        if (g.data.user_org_unit_opt_in_enabled) {
-                            var r = net.simple_request('USER_ORG_UNIT_OPT_IN_CHECK',[ ses(), robj ]);
-                            if (typeof r.ilsevent != 'undefined') {
-                                throw(r);
-                            } else {
-    
-                                if (r == 0) {
-                                
-                                    JSAN.use('patron.util');
-                                    var parts = patron.util.retrieve_name_via_id( ses(), robj );
+                                               if (g.data.user_org_unit_opt_in_enabled) {
+                                                       var r = net.simple_request('USER_ORG_UNIT_OPT_IN_CHECK',[ ses(), robj ]);
+                                                       if (typeof r.ilsevent != 'undefined') {
+                                                               throw(r);
+                                                       } else {
+
+                                                               if (r == 0) {
+
+                                                                       JSAN.use('patron.util');
+                                                                       var parts = patron.util.retrieve_name_via_id( ses(), robj );
     
-                                    if (0 != g.error.yns_alert(
-                                        'Does patron ' + parts[0] + ', ' + parts[1] + (parts[2] ? ' ' + parts[2] : '') + ' from ' + g.data.hash.aou[ parts[3] ].name() + ' (' + g.data.hash.aou[ parts[3] ].shortname() + ') consent to having their personal information shared with your library?',
-                                        'Patron/Library Opt-In Confirmation',
-                                        'Accept', 'Deny', null, 'Check here to confirm this message'
-                                        )
-                                    ) {
-                                        tb.select(); tb.focus();
-                                        return;
-                                    } else {
-                                        var c = net.simple_request('USER_ORG_UNIT_OPT_IN_CREATE',[ ses(), robj ]);
-                                        if (typeof c.ilsevent != 'undefined') throw(r);
-                                    }
-                                }
+                                                                       if (0 != g.error.yns_alert(
+                                                                                       $(patronStrings).getFormattedString('staff.patron.barcode_entry.consent_from_patron',
+                                                                                               [parts[0], parts[1] + (parts[2] ? ' ' + parts[2] : ''), g.data.hash.aou[ parts[3] ].name(), g.data.hash.aou[ parts[3] ].shortname()]),
+                                                                                       $(patronStrings).getString('staff.patron.barcode_entry.patron_consent_title'),
+                                                                                       $(patronStrings).getString('staff.patron.barcode_entry.patron_consent_accept'),
+                                                                                       $(patronStrings).getString('staff.patron.barcode_entry.patron_consent_deny'), null,
+                                                                                       $(patronStrings).getString('staff.patron.barcode_entry.patron_consent_confirm')
+                                                                               )
+                                                                       ) {
+                                                                               tb.select(); tb.focus();
+                                                                               return;
+                                                                       } else {
+                                                                               var c = net.simple_request('USER_ORG_UNIT_OPT_IN_CREATE',[ ses(), robj ]);
+                                                                               if (typeof c.ilsevent != 'undefined') throw(r);
+                                                                       }
+                                                               }
     
                                                    sound.good();
                                                    spawn(barcode);
                                        location.href = loc + '?barcode=' + window.escape(barcode);
                                }
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('spawning patron display',E);
+                               g.error.standard_unexpected_error_alert($(patronStrings).getString('staff.patron.barcode_entry.patron_display_error'),E);
                        }
                }
 
                                        location.href = loc;
                                }
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('spawning user perm editor',E);
+                               g.error.standard_unexpected_error_alert($(patronStrings).getString('staff.patron.barcode_entry.user_perm_display_error'),E);
                        }
                }
 
                function default_focus() { try { setTimeout( function() { document.getElementById('barcode_tb').focus(); }, 0); } catch(E) {} }
        ]]>
        </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" />
 
        <vbox flex="1" class="my_overflow">
                <groupbox orient="vertical" flex="1">
-                       <caption label="Retrieve Patron" />
+                       <caption label="&staff.pat.barcode_entry.retrieve_patron.label;" />
                        <hbox>
-                               <label value="Barcode:" accesskey="B" control="barcode_tb"/>
+                               <label value="&staff.pat.barcode_entry.barcode.label;" accesskey="&staff.pat.barcode_entry.barcode.accesskey;" control="barcode_tb"/>
                                <textbox id="barcode_tb" />
-                               <button label="Submit" accesskey="S" oncommand="submit();"/>
+                               <button label="&staff.pat.barcode_entry.submit_btn.label;" accesskey="&staff.pat.barcode_entry.submit_btn.accesskey;" oncommand="submit();"/>
                        </hbox>
-                       <label value="Retrieving..." style="color: green" id="progress" hidden="true"/>
+                       <label value="&staff.pat.barcode_entry.retrieving.label;" style="color: green" id="progress" hidden="true"/>
                        <vbox id="status">
                        </vbox>
                </groupbox>
index a59e864..6ab8182 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 
        <script>
        <![CDATA[
+               function $(id) { return document.getElementById(id); }
 
                function info_init() {
                        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();
@@ -60,6 +61,8 @@
        ]]>
        </script>
 
+       <messagecatalog id="catStrings" 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"/>
                                        <label value="CC Type"/>
                                        <menulist id="cc_type" oncommand="g.payment_blob.cc_type = this.value;">
                                                <menupopup>
-                                                       <menuitem label="Visa" value="Visa"/>
-                                                       <menuitem label="Mastercard" value="Mastercard"/>
-                                                       <menuitem label="American Express" value="American Express"/>
-                                                       <menuitem label="Discover" value="Discover"/>
-                                                       <menuitem label="Other" value="Other"/>
+                                                       <menuitem label="&staff.patron.bill_cc_info.visa.label;" value="Visa"/>
+                                                       <menuitem label="&staff.patron.bill_cc_info.mastercard.label;" value="Mastercard"/>
+                                                       <menuitem label="&staff.patron.bill_cc_info.american_express.label;" value="American Express"/>
+                                                       <menuitem label="&staff.patron.bill_cc_info.discover.label;" value="Discover"/>
+                                                       <menuitem label="&staff.patron.bill_cc_info.other.label;" value="Other"/>
                                                </menupopup>
                                        </menulist>
                                </row>
                                <row>
-                                       <label value="CC Number"/>
+                                       <label value="&staff.patron.bill_cc_info.cc_number.value;"/>
                                        <textbox id="cc_number" onchange="g.payment_blob.cc_number = event.target.value"/>
                                </row>
                                <row>
-                                       <label value="Expire Month"/>
+                                       <label value="&staff.patron.bill_cc_info.month_expire.value;"/>
                                        <textbox id="expire_month" onchange="g.payment_blob.expire_month = event.target.value"/>
                                </row>
                                <row>
-                                       <label value="Expire Year"/>
+                                       <label value="&staff.patron.bill_cc_info.year_expire.value;"/>
                                        <textbox id="expire_year" onchange="g.payment_blob.expire_year = event.target.value"/>
                                </row>
                                <row>
-                                       <label value="Approval Code"/>
+                                       <label value="&staff.patron.bill_cc_info.approval_code.value;"/>
                                        <textbox id="approval_code" onchange="g.payment_blob.approval_code = event.target.value"/>
                                </row>
                                <row>
-                                       <label value="Note"/>
+                                       <label value="&staff.patron.bill_cc_info.note.value;"/>
                                        <textbox id="note" onchange="g.payment_blob.note = event.target.value" multiline="true"/>
                                </row>
                        </rows>
                </grid>
                <hbox>
                        <spacer flex="1"/>
-                       <button label="Cancel" oncommand="window.close()" accesskey="C"/>
-                       <button label="Submit this Info" oncommand="info_finish(); window.close();" accesskey="S"/>
+                       <button label="&staff.patron.bill_cc_info.cancel.label;" oncommand="window.close()" accesskey="&staff.patron.bill_cc_info.cancel.accesskey;"/>
+                       <button label="&staff.patron.bill_cc_info.submit.label;" oncommand="info_finish(); window.close();" accesskey="&staff.patron.bill_cc_info.submit.accesskey;"/>
                </hbox>
        </groupbox>
 
index caadcdd..e4458cd 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 
        <script>
        <![CDATA[
+               function $(id) { return document.getElementById(id); }
 
                function info_init() {
                        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();
        ]]>
        </script>
 
+       <messagecatalog id="catStrings" src="/xul/server/locale/<!--#echo var='locale'-->/patron.properties" />
+       <messagecatalog id="commonStrings" src="/xul/server/locale/<!--#echo var='locale'-->/common.properties" />
 
        <groupbox>
-               <caption label="Check Info"/>
+               <caption label="&staff.patron.bill_check_info.check_info.label;"/>
                <grid>
                        <columns> <column flex="0" /> <column flex="0" /> </columns>
                        <rows>
                                <row>
-                                       <label value="Check Number"/>
+                                       <label value="&staff.patron.bill_check_info.check_number.value;"/>
                                        <textbox id="check_number" onchange="g.payment_blob.check_number = event.target.value"/>
                                </row>
                                <row>
-                                       <label value="Note"/>
+                                       <label value="&staff.patron.bill_check_info.note.value;"/>
                                        <textbox id="note" onchange="g.payment_blob.note = event.target.value" multiline="true"/>
                                </row>
                        </rows>
                </grid>
                <hbox>
                        <spacer flex="1"/>
-                       <button label="Cancel" oncommand="window.close()" accesskey="C"/>
-                       <button label="Submit this Info" oncommand="info_finish(); window.close();" accesskey="S"/>
+                       <button label="&staff.patron.bill_check_info.cancel.label;" oncommand="window.close()" accesskey="&staff.patron.bill_check_info.cancel.accesskey;"/>
+                       <button label="&staff.patron.bill_check_info.submit.label;" oncommand="info_finish(); window.close();" accesskey="&staff.patron.bill_check_info.submit.accesskey;"/>
                </hbox>
        </groupbox>
 
index 6e97a26..5aba6cb 100644 (file)
@@ -13,7 +13,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
                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/');
 
                                );
 
                        } catch(E) {
-                               try { g.error.standard_unexpected_error_alert('bill_details.xul, my_init:',E); } catch(F) { alert(E); }
+                               try { g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_details.my_init.error'),E); } catch(F) { alert(E); }
                        }
                }
 
                                var mb_list = util.functional.map_list(g.bill_list_selection, function(o){return g.mb_list[o];}); 
                                mb_list = util.functional.filter_list( mb_list, function(o) { return ! get_bool( o.voided() ) });
 
-                               if (mb_list.length == 0) { alert('All selected billings have already voided.'); return; }
+                               if (mb_list.length == 0) { alert($("patronStrings").getString('staff.patron.bill_details.handle_void.voided_billings.alert')); return; }
 
                                var sum = 0;
                                for (var i = 0; i < mb_list.length; i++) sum += util.money.dollars_float_to_cents_integer( mb_list[i].amount() );
                                sum = util.money.cents_as_dollars( sum );
 
-                               var msg = 'Are you sure you would like to void $' + sum + ' worth of line-item billings?';
-                               var r = g.error.yns_alert(msg,'Voiding Bills','Yes','No',null,'Check here to confirm this message');
+                               var msg = $("patronStrings").getFormattedString('staff.patron.bill_details.handle_void.confirm_void_billing', sum);
+                               var r = g.error.yns_alert(msg,
+                                       $("patronStrings").getString('staff.patron.bill_details.handle_void.confirm_void_billing_title'),
+                                       $("patronStrings").getString('staff.patron.bill_details.handle_void.confirm_void_billing_yes'),
+                                       $("patronStrings").getString('staff.patron.bill_details.handle_void.confirm_void_billing_no'),null,
+                                       $("patronStrings").getString('staff.patron.bill_details.handle_void.confirm_void_billing_confirm_message'));
                                if (r == 0) {
                                        var robj = g.network.simple_request('FM_MB_VOID',[ses()].concat(util.functional.map_list(mb_list,function(o){return o.id();})));
                                        if (robj.ilsevent) {
                                                switch(Number(robj.ilsevent)) {
                                                        default: 
-                                                               g.error.standard_unexpected_error_alert('Error voiding bills.',robj); 
+                                                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_details.handle_void.voiding_error'),robj); 
                                                                retrieve_mbts();
                                                                g.bill_list.clear();
                                                                retrieve_mb();
                                                        g.data.voided_billings.push( mb_list[i] );
                                        }
                                        g.data.stash('voided_billings');
-                                       alert('Billings voided.');
+                                       alert($("patronStrings").getString('staff.patron.bill_details.handle_void.billings_voided'));
                                        retrieve_mbts();
                                        g.bill_list.clear();
                                        retrieve_mb();
        ]]>
        </script>
 
-    <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"/>
 
        <vbox flex="1" class="my_overflow">
                <label id="patron_name" class="patronNameLarge"/>
                <splitter><grippy/></splitter>
 
                        <groupbox orient="vertical" flex="2">
-                               <caption label="Bills" style="color: red"/>
+                               <caption label="&staff.patron.bill_details.bills.label;" style="color: red"/>
                                <tree id="bill_tree" flex="1" enableColumnDrag="true"/>
                                <hbox>
-                                       <button label="Save Columns" oncommand="g.bill_list.save_columns();"/>
-                                       <button label="Copy to Clipboard" oncommand="g.bill_list.clipboard();"/>
-                                       <button label="Print Export" oncommand="try { g.bill_list.on_all_fleshed = function() { JSAN.use('util.print'); var p = new util.print(); p.simple( g.bill_list.dump_csv(), { 'content_type' : 'text/plain' } ); setTimeout( function() { g.bill_list.on_all_fleshed = null; }, 0); }; g.bill_list.full_retrieve(); } catch(E) { alert(E); }"/>
+                                       <button label="&staff.patron.bill_details.save_columns.label;" oncommand="g.bill_list.save_columns();"/>
+                                       <button label="&staff.patron.bill_details.copy_to_clipboard.label;" oncommand="g.bill_list.clipboard();"/>
+                                       <button label="&staff.patron.bill_details.print_export.label;" oncommand="try { g.bill_list.on_all_fleshed = function() { JSAN.use('util.print'); var p = new util.print(); p.simple( g.bill_list.dump_csv(), { 'content_type' : 'text/plain' } ); setTimeout( function() { g.bill_list.on_all_fleshed = null; }, 0); }; g.bill_list.full_retrieve(); } catch(E) { alert(E); }"/>
                                        <spacer flex="1"/>
-                                       <button id="void" label="Void selected billings" disabled="true"/>
+                                       <button id="void" label="&staff.patron.bill_details.void_selection.label;" disabled="true"/>
                                </hbox>
                        </groupbox>
 
                        <splitter><grippy/></splitter>
 
                        <groupbox orient="vertical" flex="2">
-                               <caption label="Payments" style="color: green"/>
+                               <caption label="&staff.patron.bill_details.payments.label;" style="color: green"/>
                                <tree id="payment_tree" flex="1" enableColumnDrag="true"/>
                                <hbox>
-                                       <button label="Save Columns" oncommand="g.payment_list.save_columns();"/>
-                                       <button label="Copy to Clipboard" oncommand="g.payment_list.clipboard();"/>
-                                       <button label="Print Export" oncommand="try { g.payment_list.on_all_fleshed = function() { JSAN.use('util.print'); var p = new util.print(); p.simple( g.payment_list.dump_csv(), { 'content_type' : 'text/plain' } ); setTimeout( function() { g.payment_list.on_all_fleshed = null; }, 0); }; g.payment_list.full_retrieve(); } catch(E) { alert(E); }"/>
+                                       <button label="&staff.patron.bill_details.save_columns.label;" oncommand="g.payment_list.save_columns();"/>
+                                       <button label="&staff.patron.bill_details.copy_to_clipboard.label;" oncommand="g.payment_list.clipboard();"/>
+                                       <button label="&staff.patron.bill_details.print_export.label;" oncommand="try { g.payment_list.on_all_fleshed = function() { JSAN.use('util.print'); var p = new util.print(); p.simple( g.payment_list.dump_csv(), { 'content_type' : 'text/plain' } ); setTimeout( function() { g.payment_list.on_all_fleshed = null; }, 0); }; g.payment_list.full_retrieve(); } catch(E) { alert(E); }"/>
                                        <spacer flex="1"/>
                                </hbox>
                        </groupbox>
 
                <hbox>
-                       <button id="opac" label="Show in Catalog" accesskey="S" hidden="true"/>
+                       <button id="opac" label="&staff.patron.bill_details.show_in_catalog.label;" accesskey="&staff.patron.bill_details.show_in_catalog.accesskey;" hidden="true"/>
                        <spacer flex="1"/>
-                       <button label="Close Window" oncommand="window.close()" accesskey="c"/>
+                       <button label="&staff.patron.bill_details.close_window.label;" oncommand="window.close()" accesskey="&staff.patron.bill_details.close_window.accesskey;"/>
                </hbox>
        </vbox>
 
index 05066d4..5824f9f 100644 (file)
@@ -13,7 +13,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
                        g.mbts_ids = g.network.simple_request(method,[ses(),g.patron_id]);
                        if (g.mbts_ids.ilsevent) {
                                switch(Number(g.mbts_ids.ilsevent)) {
-                                       case -1: g.error.standard_network_error_alert('Please close this window and try again.'); break;
-                                       default: g.error.standard_unexpected_error_alert('Please close this window and try again.',g.mbts_ids); break;
+                                       case -1: g.error.standard_network_error_alert($("patronStrings").getString('staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again')); break;
+                                       default: g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again'),g.mbts_ids); break;
                                }
                        } else if (g.mbts_ids == null) {
-                               g.error.standard_unexpected_error_alert('Please close this window and try again.',null);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_history.retrieve_mbts_for_list.close_win_try_again'),null);
                        } else {
                                //g.mbts_ids.reverse();
                                var funcs = [];
                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/');
 
                                );
 
                                if (xul_param('current')) {
-                                       $('caption').setAttribute('label','Current Bills');
+                                       $('caption').setAttribute('label',$("patronStrings").getString('staff.patron.bill_history.my_init.current_bills'));
                                        document.title = 'Current Bills';
                                } else {
-                                       $('caption').setAttribute('label','Bill History');
+                                       $('caption').setAttribute('label',$("patronStrings").getString('staff.patron.bill_history.my_init.bill_history'));
                                        document.title = 'Bill History';
                                }
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\nbill_history.xul\n" + E + '\n';
+                               var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/bill_history.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
                }
 
                function handle_add() {
-                       var msg = 'Are you sure you would like to add a billing to bill' + ( g.bill_list_selection.length > 1 ? 's ' : ' ') + g.bill_list_selection + '?';
-                       var r = g.error.yns_alert(msg,'Bill Patron','Yes','No',null,'Check here to confirm this message');
+                       if(g.bill_list_selection.length > 1)
+                               var msg = $("patronStrings").getFormattedString('staff.patron.bill_history.handle_add.message_plural', [g.bill_list_selection]);
+                       else
+                               var msg = $("patronStrings").getFormattedString('staff.patron.bill_history.handle_add.message_singular', [g.bill_list_selection]);
+                               
+                       var r = g.error.yns_alert(msg,
+                               $("patronStrings").getString('staff.patron.bill_history.handle_add.title'),
+                               $("patronStrings").getString('staff.patron.bill_history.handle_add.btn_yes'),
+                               $("patronStrings").getString('staff.patron.bill_history.handle_add.btn_no'),null,
+                               $("patronStrings").getString('staff.patron.bill_history.handle_add.confirm_message'));
                        if (r == 0) {
                                JSAN.use('util.window');
                                var win = new util.window();
                 };
                                g.bill_list.print(params);
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('printing bills', E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bill_history.print_bills.print_error'), E);
                        }
                }
 
        ]]>
        </script>
 
-    <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"/>
 
        <vbox flex="1" class="my_overflow">
         <vbox id="v1" persist="height" flex="1">
 
         <vbox id="v3" persist="height" flex="3">
             <groupbox orient="vertical" flex="1">
-                <caption id="caption" label="Bill History"/>
+                <caption id="caption" label="&staff.patron.bill_history.caption.label;"/>
                 <tree id="bill_tree" flex="1" enableColumnDrag="true" seltype="single"/>
                 <hbox>
                     <spacer flex="1"/>
-                    <button id="add" label="Add Billing" disabled="true"/>
-                    <button id="details" label="Full Details" disabled="true" accesskey="D"/>
+                    <button id="add" label="&staff.patron.bill_history.add_billing.label;" disabled="true"/>
+                    <button id="details" label="&staff.patron.bill_history.full_details.label;" disabled="true" accesskey="&staff.patron.bill_history.full_details.accesskey;"/>
                 </hbox>
             </groupbox>
 
             <hbox flex="0">
-                <button id="opac" label="Show in Catalog" accesskey="S" hidden="true" oncommand="alert('Not Yet Implemented');"/>
-                <button id="print" label="Print" accesskey="P" hidden="false" oncommand="print_bills();"/>
+                <button id="opac" label="&staff.patron.bill_history.show_in_catalog.label;" accesskey="&staff.patron.bill_history.show_in_catalog.accesskey;" hidden="true" oncommand="alert('Not Yet Implemented');"/>
+                <button id="print" label="&staff.patron.bill_history.print.label;" accesskey="&staff.patron.bill_history.print.accesskey;" hidden="false" oncommand="print_bills();"/>
                 <spacer flex="1"/>
-                <button label="Close Window" oncommand="window.close()" accesskey="c"/>
+                <button label="&staff.patron.bill_history.close_window.label;" oncommand="window.close()" accesskey="&staff.patron.bill_history.close_window.accesskey;"/>
             </hbox>
         </vbox>
        </vbox>
index 2c66659..dbb6da2 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE overlay PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 <overlay id="bills_overlay" 
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
                                        </columns>
                                        <rows>
                                                <row>
-                                                       <label class="header" value="Bill #"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.bill_number.value;"/>
                                                        <label id="mbts_id" />
-                                                       <label class="header" value="Total Billed"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.total_billed.value;"/>
                                                        <label id="mbts_total_owed" />
-                                                       <label class="header" id="title_label" value="Title" hidden="true"/>
+                                                       <label class="header" id="title_label" value="&staff.patron.bill_summary_overlay.title.value;" hidden="true"/>
                                                        <description id="title"/>
                                                </row>
                                                <row>
-                                                       <label class="header" value="Type"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.type.value;"/>
                                                        <label id="mbts_xact_type"/>
-                                                       <label class="header" value="Total Paid"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.total_paid.value;"/>
                                                        <label id="mbts_total_paid" />
-                                                       <label class="header" id="checked_out_label" value="Checked Out" hidden="true"/>
+                                                       <label class="header" id="checked_out_label" value="&staff.patron.bill_summary_overlay.checked_out.value;" hidden="true"/>
                                                        <label id="checked_out"/>
                                                </row>
                                                <row>
-                                                       <label class="header" value="Start"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.start.value;"/>
                                                        <label id="mbts_xact_start"/>
-                                                       <label class="header" value="Balance Owed"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.balance_owed.value;"/>
                                                        <label id="mbts_balance_owed" />
-                                                       <label class="header" id="due_label" value="Due Date" hidden="true"/>
+                                                       <label class="header" id="due_label" value="&staff.patron.bill_summary_overlay.due_date.value;" hidden="true"/>
                                                        <label id="due"/>
                                                </row>
                                                <row>
-                                                       <label class="header" value="Finish"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.finish.value;"/>
                                                        <label id="mbts_xact_finish"/>
-                                                       <label class="header" value="Renewal?"/>
+                                                       <label class="header" value="&staff.patron.bill_summary_overlay.renewal.value;"/>
                                                        <label id="renewal"/>
-                                                       <label class="header" id="checked_in_label" value="Checked In" hidden="true"/>
+                                                       <label class="header" id="checked_in_label" value="&staff.patron.bill_summary_overlay.checked_in.value;" hidden="true"/>
                                                        <label id="checked_in"/>
                                                </row>
                                        </rows>
index 0161d97..444f418 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
                function patron_bill_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();
                                }
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\n" 
-                                       + 'patron/bill_wizard.xul\n' + E + '\n';
+                               var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/bill_wizard.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
                                                [ ses(), billing ]
                                        );
                                        if (typeof mb_id.ilsevent != 'undefined') throw(mb_id);
-                                       alert('Billing added.');
+                                       alert($('patronStrings').getString('staff.patron.bill_wizard.patron_bill_finish.billing_added'));
                                } else {
                                        throw(xact_id);
                                }
 
        ]]>
        </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"/>
 
        <vbox flex="1">
 
                        <groupbox orient="vertical" flex="1" id="summary" hidden="true"/>
 
                        <groupbox flex="1">
-                               <caption label="Create Bill"/>
+                               <caption label="&staff.patron.bill_wizard.create_bill.label;"/>
                                <grid>
                                        <columns> <column flex="0" /> <column flex="0" /> </columns>
                                        <rows id="page1_rows">
-                                               <row><label value="Location"/><textbox id="billing_location" disabled="true" /></row>
-                                               <row><label value="Transaction Type"/>
+                                               <row><label value="&staff.patron.bill_wizard.location.value;"/><textbox id="billing_location" disabled="true" /></row>
+                                               <row><label value="&staff.patron.bill_wizard.transaction_type.value;"/>
                                                        <menulist id="xact_type">
                                                                <menupopup>
-                                                                       <menuitem label="Grocery" value="grocery" selected="true"/>
-                                                                       <menuitem label="Circulation" value="circulation" disabled="true"/>
+                                                                       <menuitem label="&staff.patron.bill_wizard.grocery.label;" value="grocery" selected="true"/>
+                                                                       <menuitem label="&staff.patron.bill_wizard.circulation.label;" value="circulation" disabled="true"/>
                                                                </menupopup>
                                                        </menulist>
                                                </row>
-                                               <row><label value="Billing Type"/>
+                                               <row><label value="&staff.patron.bill_wizard.billing_type.label;"/>
                                                        <hbox id="menu_placeholder"/>
                                                </row>
-                                               <row><label value="Amount"/><textbox id="bill_amount" /></row>
-                                               <row><label value="Note"/><textbox id="bill_note" multiline="true" rows="5" /></row>
+                                               <row><label value="&staff.patron.bill_wizard.amount.value;"/><textbox id="bill_amount" /></row>
+                                               <row><label value="&staff.patron.bill_wizard.note.value;"/><textbox id="bill_note" multiline="true" rows="5" /></row>
                                        </rows>
                                </grid>
                                <spacer flex="1"/>
                                <hbox>
                                        <spacer flex="1"/>
-                                       <button label="Cancel" oncommand="window.close()" accesskey="C"/>
-                                       <button label="Submit this Bill" oncommand="patron_bill_finish(); window.close();" accesskey="S"/>
+                                       <button label="&staff.patron.bill_wizard.cancel.label;" oncommand="window.close()" accesskey="&staff.patron.bill_wizard.cancel.accesskey;"/>
+                                       <button label="&staff.patron.bill_wizard.submit.label;" oncommand="patron_bill_finish(); window.close();" accesskey="&staff.patron.bill_wizard.submit.accesskey;"/>
                                </hbox>
                        </groupbox>
        </vbox>
index 74bfee7..d0aa614 100644 (file)
@@ -1,5 +1,7 @@
 dump('entering patron.bills.js\n');
 
+function $(id) { return document.getElementById(id); }
+
 if (typeof patron == 'undefined') patron = {};
 patron.bills = function (params) {
 
@@ -103,7 +105,7 @@ patron.bills.prototype = {
                                        var bo = obj.bills[i].transaction.balance_owed();
                                        total_owed += util.money.dollars_float_to_cents_integer( bo );
                                        var id = obj.bills[i].transaction.id();
-                                       obj.current_payments.push( { 'mobts_id' : id, 'balance_owed' : bo, 'checkbox' : cb, 'textbox' : tb, } );
+                                       obj.current_payments.push( { 'mobts_id' : id, 'balance_owed' : bo, 'checkbox' : cb, 'textbox' : tb } );
                                }
                                obj.controller.view.bill_total_owed.value = util.money.cents_as_dollars( total_owed );
                                obj.controller.view.bill_total_owed.setAttribute('value',obj.controller.view.bill_total_owed.value);
@@ -149,7 +151,7 @@ patron.bills.prototype = {
                                                                        'render' : 'obj.payment_box()'
                                                                }
                                                ],
-                                               'map_row_to_column' : obj.gen_map_row_to_column(),
+                                               'map_row_to_column' : obj.gen_map_row_to_column()
                                        }
                                );
 
@@ -159,7 +161,7 @@ patron.bills.prototype = {
                                                'control_map' : {
                                                        'cmd_broken' : [
                                                                ['command'],
-                                                               function() { alert('Not Yet Implemented'); }
+                                                               function() { alert($("commonStrings").getString('common.unimplemented')); }
                                                        ],
                                                        'cmd_bill_wizard' : [
                                                                ['command'],
@@ -219,7 +221,7 @@ patron.bills.prototype = {
                                                                                        {
                                                                                                'current' : 1,
                                                                                                'patron_id' : obj.patron_id,
-                                                                                               'refresh' : function() { obj.refresh(); },
+                                                                                               'refresh' : function() { obj.refresh(); }
                                                                                        }
                                                                                );
                                                                        } catch(E) {
@@ -313,7 +315,7 @@ patron.bills.prototype = {
                                                                                                var proposed = util.money.dollars_float_to_cents_integer(ev.target.value);
                                                                                                var available = util.money.dollars_float_to_cents_integer(au_obj.credit_forward_balance());
                                                                                                if (proposed > available) {
-                                                                                                       alert('Patron only has ' + au_obj.credit_forward_balance() + ' in credit.');
+                                                                                                       alert($("patronStrings").getFormattedString('staff.patron.bills.bill_payment_amount.credit_amount', [au_obj.credit_forward_balance()]));
                                                                                                        ev.target.value = util.money.cents_as_dollars( available );
                                                                                                        ev.target.setAttribute('value',ev.target.value);
                                                                                                }
@@ -341,7 +343,7 @@ patron.bills.prototype = {
                                                                                        obj.update_payment_applied();
                                                                                        var real_change = util.money.dollars_float_to_cents_integer( tb.value );
                                                                                        if ( proposed_change > real_change ) {
-                                                                                               obj.error.sdump('D_ERROR','Someone wanted more money than they deserved\n');
+                                                                                               obj.error.sdump('D_ERROR',$("patronStrings").getString('staff.patron.bills.bill_change_amount.greedy'));
                                                                                                proposed_change = real_change;
                                                                                        } else if ( real_change > proposed_change ) {
                                                                                                proposed_credit = real_change - proposed_change;
@@ -365,7 +367,7 @@ patron.bills.prototype = {
                                                        'bill_new_balance' : [
                                                                ['render'],
                                                                function(e) { return function() {}; }
-                                                       ],
+                                                       ]
                                                }
                                        }
                                );
@@ -510,7 +512,7 @@ patron.bills.prototype = {
                                        }
                                }
                 if ( payment_blob.payments.length == 0 && payment_blob.patron_credit == '0.00' ) {
-                    alert('No payments or patron credit applied.');
+                    alert($("patronStrings").getString('staff.patron.bills.apply_payment.nothing_applied'));
                     return;
                 }
                                if ( obj.pay( payment_blob ) ) {
@@ -539,11 +541,11 @@ patron.bills.prototype = {
                                                                                'last_billing_type' : obj.bill_map[ o[0] ].transaction.last_billing_type(),
                                                                                'last_billing_note' : obj.bill_map[ o[0] ].transaction.last_billing_note(),
                                                                                'title' : typeof obj.bill_map[ o[0] ].title != 'undefined' ? obj.bill_map[ o[0] ].title : '', 
-                                                                               'barcode' : typeof obj.bill_map[ o[0] ].barcode != 'undefined' ? obj.bill_map[ o[0] ].barcode : ''
+                                                                               'barcode' : typeof obj.bill_map[ o[0] ].barcode != 'undefined' ? obj.bill_map[ o[0] ].barcode : ''
                                                                        };
                                                                }
                                                        ),
-                                                       'data' : obj.previous_summary,
+                                                       'data' : obj.previous_summary
                                                };
                                                obj.error.sdump('D_DEBUG',js2JSON(params));
                                                if (document.getElementById('auto_print').checked) params.no_prompt = true;
@@ -563,7 +565,7 @@ patron.bills.prototype = {
                try {
             var x = document.getElementById('annotate_payment');
             if (x && x.checked && (! payment_blob.note)) {
-                payment_blob.note = window.prompt('Please annotate this payment:','','Annotate Payment');
+                payment_blob.note = window.prompt($("patronStrings").getString('staff.patron.bills.pay.annotate_payment'),'', $("patronStrings").getString('staff.patron.bills.pay.annotate_payment.title'));
             }
                        obj.previous_summary = {
                                original_balance : obj.controller.view.bill_total_owed.value,
@@ -574,7 +576,7 @@ patron.bills.prototype = {
                                credit_given : obj.controller.view.bill_credit_amount.value,
                                new_balance : obj.controller.view.bill_new_balance.value,
                                payment_type : obj.controller.view.payment_type.getAttribute('label'),
-                               note : payment_blob.note,
+                               note : payment_blob.note
                        }
                        var robj = obj.network.request(
                                api.BILL_PAY.app,       
@@ -585,12 +587,12 @@ patron.bills.prototype = {
                        if (typeof robj.ilsevent != 'undefined') {
                                switch(Number(robj.ilsevent)) {
                                        case 0 /* SUCCESS */ : return true; break;
-                                       case 1226 /* REFUND_EXCEEDS_DESK_PAYMENTS */ : alert(robj.desc + '\n\nAnother way to "zero" this transaction is to use Add Billing and add a misc bill to counter the negative balance.'); return false; break;
+                                       case 1226 /* REFUND_EXCEEDS_DESK_PAYMENTS */ : alert($("patronStrings").getFormattedString('staff.patron.bills.pay.refund_exceeds_desk_payment', [robj.desc])); return false; break;
                                        default: throw(robj); break;
                                }
                        }
                } catch(E) {
-                       obj.error.standard_unexpected_error_alert('Bill payment likely failed',E);
+                       obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bills.pay.payment_failed'),E);
                        return false;
                }
        },
@@ -642,7 +644,7 @@ patron.bills.prototype = {
                                obj.update_payment_applied();
                                var real_change = util.money.dollars_float_to_cents_integer( tb.value );
                                if ( proposed_change > real_change ) {
-                                       obj.error.sdump('D_ERROR','Someone wanted more money than they deserved\n');
+                                       obj.error.sdump('D_ERROR',$("patronStrings").getString('staff.patron.bills.bill_change_amount.greedy'));
                                        proposed_change = real_change;
                                } else if ( real_change > proposed_change ) {
                                        proposed_credit = real_change - proposed_change;
@@ -703,7 +705,7 @@ patron.bills.prototype = {
                         var id = o.transaction.id();
                         var hash = {
                             'title' : typeof obj.bill_map[ id ].title != 'undefined' ? obj.bill_map[ id ].title : '', 
-                            'barcode' : typeof obj.bill_map[ id ].barcode != 'undefined' ? obj.bill_map[ id ].barcode : ''
+                            'barcode' : typeof obj.bill_map[ id ].barcode != 'undefined' ? obj.bill_map[ id ].barcode : ''
                         };
                         for (var i = 0; i < columns.length; i++) {
                             var v = columns[i].render( { 'mbts' : o.transaction } );
@@ -913,7 +915,8 @@ patron.bills.prototype = {
                                                        );
                                                break;
                                                default:
-                                                               xt_label.setAttribute( 'value', my.mvr ? 'Title' : 'Type' );
+                                                               xt_label.setAttribute( 'value',
+                                                                       my.mvr ? $("patronStrings").getString('staff.patron.bills.info_box.label_value.title') : $("patronStrings").getString('staff.patron.bills.info_box.label_value.type') );
                                                                xt_value.appendChild( document.createTextNode( my.mvr ? my.mvr.title() : my.mobts.xact_type() ) );
                                                break;
                                        }
@@ -924,7 +927,7 @@ patron.bills.prototype = {
 
                                                var lb_label = document.createElement('label');
                                                        last_billing.appendChild( lb_label );
-                                                       lb_label.setAttribute( 'value', 'Last Billing:' );
+                                                       lb_label.setAttribute( 'value', $("patronStrings").getString('staff.patron.bills.info_box.label_value.last_billing') );
 
                                                var lb_value = document.createElement('label');
                                                        last_billing.appendChild( lb_value );
@@ -971,7 +974,7 @@ patron.bills.prototype = {
                                                                );
                                                        var btn2 = document.createElement('button');
                                                                btn_box.appendChild( btn2 );
-                                                               btn2.setAttribute( 'label', 'Add Billing' );
+                                                               btn2.setAttribute( 'label', $("patronStrings").getString('staff.patron.bills.info_box.label_value.add_billing') );
                                                                btn2.setAttribute( 'mobts_id', my.mobts.id() ); 
                                                                btn2.addEventListener(
                                                                        'command',
@@ -996,7 +999,7 @@ patron.bills.prototype = {
                                if (my.mobts.balance_owed() < 0) {
                                        var btn3 = document.createElement('button');
                                        btn_box.appendChild( btn3 );
-                                       btn3.setAttribute( 'label', 'Refund' );
+                                       btn3.setAttribute( 'label', $("patronStrings").getString('staff.patron.bills.info_box.label_value.refund') );
                                        btn3.setAttribute( 'mobts_id', my.mobts.id() ); 
                                        btn3.addEventListener(
                                                'command',
@@ -1011,7 +1014,7 @@ patron.bills.prototype = {
 
                                var btn4 = document.createElement('button');
                                btn_box.appendChild( btn4 );
-                               btn4.setAttribute( 'label', 'Void All Billings' );
+                               btn4.setAttribute( 'label', $("patronStrings").getString('staff.patron.bills.info_box.label_value.void_all_billings') );
                                btn4.setAttribute( 'mobts_id', my.mobts.id() );
                                btn4.addEventListener(
                                        'command',
@@ -1049,20 +1052,24 @@ patron.bills.prototype = {
 
                        mb_list = util.functional.filter_list( mb_list, function(o) { return ! get_bool( o.voided() ) });
 
-                       if (mb_list.length == 0) { alert('All billings already voided on this bill.'); return; }
+                       if (mb_list.length == 0) { alert($("patronStrings").getString('staff.patron.bills.void_all_billings.all_voided')); return; }
 
                        var sum = 0;
                        for (var i = 0; i < mb_list.length; i++) sum += util.money.dollars_float_to_cents_integer( mb_list[i].amount() );
                        sum = util.money.cents_as_dollars( sum );
 
-                       var msg = 'Are you sure you would like to void $' + sum + ' worth of line-item billings?';
-                       var r = obj.error.yns_alert(msg,'Voiding Bills','Yes','No',null,'Check here to confirm this message');
+                       var msg = $("patronStrings").getFormattedString('staff.patron.bills.void_all_billings.void.message', [sum]);
+                       var r = obj.error.yns_alert(msg,
+                               $("patronStrings").getString('staff.patron.bills.void_all_billings.void.title'),
+                               $("patronStrings").getString('staff.patron.bills.void_all_billings.void.yes'),
+                               $("patronStrings").getString('staff.patron.bills.void_all_billings.void.no'), null,
+                               $("patronStrings").getString('staff.patron.bills.void_all_billings.void.confirm_message'));
                        if (r == 0) {
                                var robj = obj.network.simple_request('FM_MB_VOID',[ses()].concat(util.functional.map_list(mb_list,function(o){return o.id();})));
                                if (robj.ilsevent) {
                                        switch(Number(robj.ilsevent)) {
                                                default: 
-                                                       obj.error.standard_unexpected_error_alert('Error voiding bills.',robj); 
+                                                       obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.bills.void_all_billings.error_voiding_bills'),robj); 
                                                        obj.refresh(); return; 
                                                break;
                                        }
@@ -1073,7 +1080,7 @@ patron.bills.prototype = {
                                                obj.data.voided_billings.push( mb_list[i] );
                                }
                                obj.data.stash('voided_billings');
-                               alert('Billings voided.');
+                               alert($("patronStrings").getString('staff.patron.bills.void_all_billings.billings_voided'));
                                obj.refresh();
                        }
                } catch(E) {
index 42da10e..a8b7202 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
        <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
        <script>
        <![CDATA[
+               function $(id) { return document.getElementById(id); }
+               
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
@@ -52,8 +54,7 @@
                                document.getElementById('bill_payment_amount').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/bills.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
@@ -79,8 +80,9 @@
                <command id="cmd_print_bills" />
                <command id="cmd_alternate_view" />
        </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="bills_main" />
 
index 459faca..c823839 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE overlay PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 <overlay id="bills_overlay" 
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
                <label style="font-weight: bold;" value="Un-Selected:"/><label id="unselected_balance"/>
                <label style="font-weight: bold;" value="Voided:"/><label id="voided_balance"/>
                <spacer flex="1"/>
-               <label id="circulating_hint" hidden="true" style="background: red; color: white" value="Red Items are still Checked Out"/>
+               <label id="circulating_hint" hidden="true" style="background: red; color: white" value="&staff.patron.bills_overlay.still_checked_out.label;"/>
        </hbox>
        <listbox id="bill_list" flex="1"/>
        <hbox>
-               <button command="cmd_uncheck_all" label="Uncheck All"/>
-               <button command="cmd_check_all" label="Check All"/>
+               <button command="cmd_uncheck_all" label="&staff.patron.bills_overlay.uncheck_all.label;"/>
+               <button command="cmd_check_all" label="&staff.patron.bills_overlay.check_all.label;"/>
                <spacer flex="1"/>
-               <button command="cmd_print_bills" label="Print Bills" />
-               <button command="cmd_alternate_view" label="Alternate View" accesskey="V"/>
+               <button command="cmd_print_bills" label="&staff.patron.bills_overlay.print_bills.label;"/>
+               <button command="cmd_alternate_view" label="&staff.patron.bills_overlay.alternate_view.label;" accesskey="&staff.patron.bills_overlay.alternate_view.accesskey;"/>
        </hbox>
 </box>
 
 <vbox id="bills_top_ui">
        <hbox>
                <groupbox>
-                       <caption label="Summary"/>
+                       <caption label="&staff.patron.bills_overlay.summary.label;"/>
                        <grid>
                                <columns><column /><column /></columns>                                 
                                <rows>
                                        <row>
-                                               <label value="Net Balance" />
+                                               <label value="&staff.patron.bills_overlay.net_balance.value;"/>
        
                                                <textbox id="bill_total_owed" value="" readonly="true" />
                                        </row>
                                        <row>
-                                               <label value="- Payment applied" />
+                                               <label value="&staff.patron.bills_overlay.payment_applied.value;"/>
                        
                                                <textbox id="bill_payment_applied" readonly="true"/>
                                        </row>
                                        <row>
-                                               <label value="= New Balance
+                                               <label value="&staff.patron.bills_overlay.new_balance.value;
                                                        style="font-family: bold" />
        
                                                <textbox id="bill_new_balance" readonly="true"/>
                </groupbox>
                <spacer flex="2"/>
                <groupbox>
-                       <caption label="Pay Bill"/>
+                       <caption label="&staff.patron.bills_overlay.pay_bill.label;"/>
                        <grid>
                                <columns><column /><column /></columns>                                 
                                <rows>
                                        <row>
-                                               <label value="Payment Type
-                                                       accesskey="t" control="payment_type" />
+                                               <label value="&staff.patron.bills_overlay.payment_type.value;
+                                                       accesskey="&staff.patron.bills_overlay.payment_type.accesskey;" control="payment_type" />
                                                <menulist id="payment_type">
                                                        <menupopup id="payment_type_menupopup">
-                                                               <menuitem id="payment_type_menuitem1" label="Cash" value="cash_payment"/>
-                                                               <menuitem id="payment_type_menuitem2" label="Check" value="check_payment"/>
-                                                               <menuitem id="payment_type_menuitem3" label="Credit Card" value="credit_card_payment"/>
+                                                               <menuitem id="payment_type_menuitem1" label="&staff.patron.bills_overlay.cash.label;" value="cash_payment"/>
+                                                               <menuitem id="payment_type_menuitem2" label="&staff.patron.bills_overlay.check.label;" value="check_payment"/>
+                                                               <menuitem id="payment_type_menuitem3" label="&staff.patron.bills_overlay.credit_card.label;" value="credit_card_payment"/>
                                                                <!--
                                                                <menuitem id="payment_type_menuitem4" label="Patron Credit" value="credit_payment" />
                                                                -->
-                                                               <menuitem id="payment_type_menuitem5" label="Work" value="work_payment"/>
-                                                               <menuitem id="payment_type_menuitem6" label="Forgive" value="forgive_payment"/>
-                                                               <menuitem id="payment_type_menuitem7" label="Goods" value="goods_payment"/>
+                                                               <menuitem id="payment_type_menuitem5" label="&staff.patron.bills_overlay.word.label;" value="work_payment"/>
+                                                               <menuitem id="payment_type_menuitem6" label="&staff.patron.bills_overlay.forgive.label;" value="forgive_payment"/>
+                                                               <menuitem id="payment_type_menuitem7" label="&staff.patron.bills_overlay.goods.label;" value="goods_payment"/>
                                                        </menupopup>
                                                </menulist>
                                        </row>
                                        <row>
-                                               <label value="Payment received" style="font-weight: bold"
-                                                       accesskey="a" control="bill_payment_amount" />
+                                               <label value="&staff.patron.bills_overlay.payment_received.value;" style="font-weight: bold"
+                                                       accesskey="&staff.patron.bills_overlay.payment_received.accesskey;" control="bill_payment_amount" />
                        
                                                <textbox id="bill_payment_amount" style="border: solid thick black"/>
                                        </row>
                                        <row>
-                                               <label value="- Payment applied" />
+                                               <label value="&staff.patron.bills_overlay.payment_applied.value;"/>
                        
                                                <textbox id="bpato" observes="bill_payment_applied" />
                                        </row>
                                        <row>
-                                               <label value="= Change" control="bill_change_amount" style="font-weight: bold" />
+                                               <label value="&staff.patron.bills_overlay.change.value;" control="bill_change_amount" style="font-weight: bold" />
        
                                                <hbox>
                                                        <textbox id="bill_change_amount" readonly="true"/>
                                                </hbox>
                                        </row>
                                        <row class="hide_patron_credit" hidden="true">
-                                               <label value="or Patron Credit
+                                               <label value="&staff.patron.bills_overlay.patron_credit.value;
                                                        style="font-family: bold" />
        
                                                <textbox id="bill_credit_amount" readonly="true"/>
                </groupbox>
        </hbox>
        <hbox>
-               <button id="bill_wizard" label="Bill Patron" accesskey="B" command="cmd_bill_wizard"/>
-               <button id="bill_history" label="History" accesskey="H" command="cmd_bill_history"/>
+               <button id="bill_wizard" label="&staff.patron.bills_overlay.bill_patron.label;" accesskey="&staff.patron.bills_overlay.bill_patron.accesskey;" command="cmd_bill_wizard"/>
+               <button id="bill_history" label="&staff.patron.bills_overlay.history.label;" accesskey="&staff.patron.bills_overlay.history.accesskey;" command="cmd_bill_history"/>
                <spacer flex="2"/>
-               <checkbox id="annotate_payment" label="Annotate Payment" persist="checked" checked="false" />
+               <checkbox id="annotate_payment" label="&staff.patron.bills_overlay.annotate_payment.label;" persist="checked" checked="false" />
                <checkbox id="auto_print" label="Auto-Print" persist="checked" checked="true" />
-               <button class="hide_patron_credit" hidden="true" disabled="true" id="change_to_credit" label="Convert Change to Patron Credit" command="cmd_change_to_credit"/>
-               <button id="bill_apply_payment" label="Apply Payment!" accesskey="P" command="cmd_bill_apply_payment"/>
+               <button class="hide_patron_credit" hidden="true" disabled="true" id="change_to_credit" label="&staff.patron.bills_overlay.convert_change_to_credit.label;" command="cmd_change_to_credit"/>
+               <button id="bill_apply_payment" label="&staff.patron.bills_overlay.apply_payment.label;" accesskey="&staff.patron.bills_overlay.apply_payment.accesskey;" command="cmd_bill_apply_payment"/>
        </hbox>
        <label value=" "/>
 </vbox>
index c17acfc..8edb1f0 100644 (file)
@@ -1,5 +1,7 @@
 dump('entering patron/display.js\n');
 
+function $(id) { return document.getElementById(id); }
+
 if (typeof patron == 'undefined') patron = {};
 patron.display = function (params) {
 
@@ -57,7 +59,7 @@ patron.display.prototype = {
                                                                {
                                                                        'row' : {
                                                                                'my' : {
-                                                                                       'circ_id' : checkout.circ.id(),
+                                                                                       'circ_id' : checkout.circ.id()
                                                                                }
                                                                        }
                                                                }
@@ -76,7 +78,7 @@ patron.display.prototype = {
                                control_map : {
                                        'cmd_broken' : [
                                                ['command'],
-                                               function() { alert('Not Yet Implemented'); }
+                                               function() { alert($("commonStrings").getString('common.unimplemented')); }
                                        ],
                                        'cmd_patron_retrieve' : [
                                                ['command'],
@@ -163,7 +165,7 @@ patron.display.prototype = {
                                                                                obj.bill_window.g.bills.refresh(true);
                                                                        },
                                                                        'url_prefix' : xulG.url_prefix,
-                                                                       'new_tab' : xulG.new_tab,
+                                                                       'new_tab' : xulG.new_tab
                                                                }
                                                        );
                                                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
@@ -176,7 +178,7 @@ patron.display.prototype = {
                                                                obj.reset_nav_styling('cmd_patron_edit');
 
                                                                function spawn_search(s) {
-                                                                       obj.error.sdump('D_TRACE', 'Editor would like to search for: ' + js2JSON(s) ); 
+                                                                       obj.error.sdump('D_TRACE', $("commonStrings").getFormattedString('staff.patron.display.cmd_patron_edit.edit_search', [js2JSON(s)]) ); 
                                                                        obj.data.stash_retrieve();
                                                                        var loc = xulG.url_prefix(urls.XUL_PATRON_DISPLAY);
                                                                        //loc += '?doit=1&query=' + window.escape(js2JSON(s));
@@ -197,13 +199,13 @@ patron.display.prototype = {
                                                                                { 
                                                                                        'url' : url,
                                                                                        'show_print_button' : true , 
-                                                                                       'tab_name' : 'Editing Related Patron' ,
+                                                                                       'tab_name' : $("patronStrings").getString('staff.patron.display.spawn_editor.editing_related_patron'),
                                                                                        'passthru_content_params' : {
                                                                                                'spawn_search' : spawn_search,
                                                                                                'spawn_editor' : spawn_editor,
                                                                                                'url_prefix' : xulG.url_prefix,
                                                                                                'new_tab' : xulG.new_tab,
-                                                                                               'params' : p,
+                                                                                               'params' : p
                                                                                        }
                                                                                }
                                                                        );
@@ -223,7 +225,7 @@ patron.display.prototype = {
                                                                                'params' : {
                                                                                        'ses' : ses(),
                                                                                        'usr' : obj.patron.id(),
-                                                                               },
+                                                                               }
                                                                                'on_save' : function(p) {
                                                                                        try {
                                                                                                if (obj.barcode) obj.barcode = p.card().barcode();
@@ -237,7 +239,7 @@ patron.display.prototype = {
                                                                                'spawn_search' : spawn_search,
                                                                                'spawn_editor' : spawn_editor,
                                                                                'url_prefix' : xulG.url_prefix,
-                                                                               'new_tab' : xulG.new_tab,
+                                                                               'new_tab' : xulG.new_tab
                                                                        }
                                                                }
                                                        );
@@ -253,7 +255,7 @@ patron.display.prototype = {
                                                                {
                                                                        'patron_id' : obj.patron.id(),
                                                                        'url_prefix' : xulG.url_prefix,
-                                                                       'new_tab' : xulG.new_tab,
+                                                                       'new_tab' : xulG.new_tab
                                                                }
                                                        );
                                                }
@@ -281,7 +283,7 @@ patron.display.prototype = {
                                                                                obj.refresh_all();
                                                                        },
                                                                        'url_prefix' : xulG.url_prefix,
-                                                                       'new_tab' : xulG.new_tab,
+                                                                       'new_tab' : xulG.new_tab
                                                                }
                                                        );
                                                }
@@ -330,7 +332,7 @@ patron.display.prototype = {
                                                function(e) {
                                                        return function() {}
                                                }
-                                       ],
+                                       ]
                                }
                        }
                );
@@ -355,7 +357,7 @@ patron.display.prototype = {
                        obj.controller.view.cmd_patron_bills.setAttribute('disabled','true');
                        obj.controller.view.cmd_patron_edit.setAttribute('disabled','true');
                        obj.controller.view.cmd_patron_info.setAttribute('disabled','true');
-                       obj.controller.view.patron_name.setAttribute('value','Retrieving...');
+                       obj.controller.view.patron_name.setAttribute('value', $("patronStrings").getString('staff.patron.display.init.retrieving'));
                        document.documentElement.setAttribute('class','');
                        var frame = obj.left_deck.set_iframe(
                                urls.XUL_PATRON_SUMMARY,
@@ -397,23 +399,24 @@ patron.display.prototype = {
                                                        function(req) {
                                                                try {
                                                                        var msg = ''; obj.stop_checkouts = false;
-                                                                       if (patron.alert_message()) msg += 'Alert message: "' + patron.alert_message() + '"<br/><br/>\n';
+                                                                       if (patron.alert_message())
+                                                                               msg += $("patronStrings").getFormattedString('staff.patron.display.init.network_request.alert_message', [patron.alert_message()]);
                                                                        //alert('obj.barcode = ' + obj.barcode);
                                                                        if (obj.barcode) {
                                                                                if (patron.cards()) for (var i = 0; i < patron.cards().length; i++) {
                                                                                        //alert('card #'+i+' == ' + js2JSON(patron.cards()[i]));
                                                                                        if ( (patron.cards()[i].barcode()==obj.barcode) && ( ! get_bool(patron.cards()[i].active()) ) ) {
-                                                                                               msg += 'Patron account retrieved with an INACTIVE card.<br/><br/>\n';
+                                                                                               msg += $("patronStrings").getString('staff.patron.display.init.network_request.inactive_card');
                                                                                                obj.stop_checkouts = true;
                                                                                        }
                                                                                }
                                                                        }
                                                                        if (get_bool(patron.barred())) {
-                                                                               msg += 'Patron account is BARRED.<br/><br/>\n';
+                                                                               msg += $("patronStrings").getString('staff.patron.display.init.network_request.account_barred');
                                                                                obj.stop_checkouts = true;
                                                                        }
                                                                        if (!get_bool(patron.active())) {
-                                                                               msg += 'Patron account is INACTIVE.<br/><br/>\n';
+                                                                               msg += $("patronStrings").getString('staff.patron.display.init.network_request.account_inactive');
                                                                                obj.stop_checkouts = true;
                                                                        }
                                                                        if (patron.expire_date()) {
@@ -428,7 +431,7 @@ patron.display.prototype = {
                                                                                expire = expire.getTime()/1000
 
                                                                                if (expire < now) {
-                                                                                       msg += 'Patron account is EXPIRED.<br/><br/>\n';
+                                                                                       msg += $("patronStrings").getString('staff.patron.display.init.network_request.accoutn_expired');
                                                                                obj.stop_checkouts = true;
                                                                                }
                                                                        }
@@ -438,11 +441,13 @@ patron.display.prototype = {
                                                                                if (msg != obj.old_msg) {
                                                                                        //obj.error.yns_alert(msg,'Alert Message','OK',null,null,'Check here to confirm this message.');
                                                                                        document.documentElement.firstChild.focus();
-                                                                                       var data_url = window.escape("<img src='" + xulG.url_prefix('/xul/server/skin/media/images/stop_sign.png') + "'/>" + '<h1>Alert</h1><blockquote><p>' + msg + '</p>\r\n\r\n<pre>Press a navigation button above (e.g. Check Out) to clear this alert.</pre></blockquote>');
+                                                                                       var data_url = window.escape("<img src='" + xulG.url_prefix('/xul/server/skin/media/images/stop_sign.png') + "'/>" + '<h1>'
+                                                                                               + $("patronStrings").getString('staff.patron.display.init.network_request.window_title') + '</h1><blockquote><p>' + msg + '</p>\r\n\r\n<pre>'
+                                                                                               + $("patronStrings").getString('staff.patron.display.init.network_request.window_message') + '</pre></blockquote>');
                                                                                        obj.right_deck.set_iframe('data:text/html,'+data_url,{},{});
                                                                                        obj.old_msg = msg;
                                                                                } else {
-                                                                                       obj.error.sdump('D_TRACE','Not re-displaying this alert message: ' + msg);
+                                                                                       obj.error.sdump('D_TRACE',$("patronStrings").getFormattedString('staff.patron.display.init.network_request.dump_error_message', [msg]));
                                                                                }
                                                                        }
                                                                        if (obj.stop_checkouts && obj.checkout_window) {
@@ -454,7 +459,7 @@ patron.display.prototype = {
                                                                                }, 1000);
                                                                        }
                                                                } catch(E) {
-                                                                       obj.error.standard_unexpected_error_alert('Error showing patron alert and holds availability.',E);
+                                                                       obj.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.display.init.network_request.error_showing_alert'),E);
                                                                }
                                                        }
                                                );
@@ -518,7 +523,7 @@ patron.display.prototype = {
                                                                obj.controller.view.cmd_patron_retrieve.setAttribute('disabled','false');
                                                                obj.controller.view.cmd_search_form.setAttribute('disabled','false');
                                                                obj.retrieve_ids = list;
-                                                               obj.controller.view.patron_name.setAttribute('value','Retrieving...');
+                                                               obj.controller.view.patron_name.setAttribute('value',$("patronStrings").getString('staff.patron.display.init.retrieving'));
                                                                document.documentElement.setAttribute('class','');
                                                                setTimeout(
                                                                        function() {
@@ -589,9 +594,7 @@ patron.display.prototype = {
        
        'refresh_all' : function() {
                var obj = this;
-               obj.controller.view.patron_name.setAttribute(
-                       'value','Retrieving...'
-               );
+               obj.controller.view.patron_name.setAttribute('value', $("patronStrings").getString('staff.patron.display.init.retrieving'));
                document.documentElement.setAttribute('class','');
                try { obj.summary_window.refresh(); } catch(E) { obj.error.sdump('D_ERROR', E + '\n'); }
                try { obj.refresh_deck(); } catch(E) { obj.error.sdump('D_ERROR', E + '\n'); }
index ddb75de..34e9d7a 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
        <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
        <script>
        <![CDATA[
+               function $(id) { return document.getElementById(id); }
+       
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
@@ -54,9 +56,7 @@
                        //document.documentElement.style.setProperty('font-size-adjust','1','important');
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\n" 
-                                       + 'patron/display.xul\n' + E + '\n';
+                               var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/display.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
@@ -86,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_display_cmds">
                <command id="cmd_patron_refresh" />
                <command id="cmd_patron_checkout" />
index dbe0e15..7cde34c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE overlay PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 <overlay id="patron_display_overlay" 
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <vbox id="pdm2" flex="1">
        <hbox id="pdm2hb1">
                <hbox>
-                       <label id="patron_name" class="patronNameLarge" tooltiptext="&staff.patron_display.name.label;" value="No Patron Selected" flex="1"/>
+                       <label id="patron_name" class="patronNameLarge" tooltiptext="&staff.patron_display.name.label;" value="&staff.patron.display_overlay.none_selected.value;" flex="1"/>
                </hbox>
                <deck id="PatronNavBar" flex="1" class="my_overflow" />
        </hbox>
        <hbox id="pdm2hb1a">
-               <label class="hideme barred_indicator" value="(Barred)"/>
-               <label class="hideme expired_indicator" value="(Expired)"/>
-               <label class="hideme inactive_indicator" value="(In-Active)"/>
-               <label class="hideme juvenile_indicator" value="(Juvenile)"/>
-               <label class="hideme alert_indicator" value="(Alert)"/>
-               <label class="hideme note_indicator" value="(See Notes)"/>
-               <label class="hideme max_bills_indicator" value="(Max Bills)"/>
-               <label class="hideme max_overdues_indicator" value="(Max Overdues)"/>
-               <label class="hideme bills_indicator" value="(Has Bills)"/>
-               <label class="hideme overdues_indicator" value="(Has Overdues)"/>
-               <label class="hideme invalid_dob_indicator" value="(Invalid DOB)"/>
-               <label class="hideme invalid_address_indicator" value="(Invalid Address)"/>
+               <label class="hideme barred_indicator" value="&staff.patron.display_overlay.barred.value;"/>
+               <label class="hideme expired_indicator" value="&staff.patron.display_overlay.expired.value;"/>
+               <label class="hideme inactive_indicator" value="&staff.patron.display_overlay.inactive.value;"/>
+               <label class="hideme juvenile_indicator" value="&staff.patron.display_overlay.juvenile.value;"/>
+               <label class="hideme alert_indicator" value="&staff.patron.display_overlay.alert.value;"/>
+               <label class="hideme note_indicator" value="&staff.patron.display_overlay.see_notes.value;"/>
+               <label class="hideme max_bills_indicator" value="&staff.patron.display_overlay.max_bills.value;"/>
+               <label class="hideme max_overdues_indicator" value="&staff.patron.display_overlay.max_overdues.value;"/>
+               <label class="hideme bills_indicator" value="&staff.patron.display_overlay.has_bills.value;"/>
+               <label class="hideme overdues_indicator" value="&staff.patron.display_overlay.has_overdues.value;"/>
+               <label class="hideme invalid_dob_indicator" value="&staff.patron.display_overlay.invalid_dob.value;"/>
+               <label class="hideme invalid_address_indicator" value="&staff.patron.display_overlay.invalid_address.value;"/>
        </hbox>
        <hbox id="PatronNotNavBar" flex="1" class="my_bg">
                <vbox id="pdm3" flex="1" persist="width">
        <button id="PatronNavBar_info" command="cmd_patron_info" class="nav"
                label="&staff.patron_navbar.info;" accesskey="&staff.patron_navbar.info.accesskey;"/>
        <button id="PatronNavBar_exit" command="cmd_patron_exit" class="nav"
-               label="Exit" accesskey="x"/>
+               label="&staff.patron.display_overlay.exit.label;" accesskey="&staff.patron.display_overlay.exit.accesskey;"/>
 </hbox>
 
 <hbox id="PatronNavBar0">
        <spacer flex="1"/>
-       <button id="pnb1b0" label="Search Form" accesskey="F" command="cmd_search_form"/>
-       <button id="pnb1b1" label="Retrieve Patron" accesskey="R" command="cmd_patron_retrieve"/>
+       <button id="pnb1b0" label="&staff.patron.display_overlay.search_form.label;" accesskey="&staff.patron.display_overlay.search_form.accesskey;" command="cmd_search_form"/>
+       <button id="pnb1b1" label="&staff.patron.display_overlay.retrieve_patron.label;" accesskey="&staff.patron.display_overlay.retrieve_patron.accesskey;" command="cmd_patron_retrieve"/>
 </hbox>
 
 </overlay>
index 4a9361a..2f394b0 100644 (file)
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -37,7 +37,7 @@
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
 
                                /* template */
                                var node = $('notification_template').cloneNode(true); np.appendChild(node); node.hidden = false;
                                util.widgets.apply(node,'name','notify_time',
-                                       function(n){n.setAttribute("tooltiptext","ID: " + g.notifications[i].id() + " Hold ID: " + g.notifications[i].hold() + " Notifying Staff ID: " + g.notifications[i].notify_staff());}
+                                       function(n){n.setAttribute("tooltiptext", $("patronStrings").getFormattedString('staff.patron.hold_notices.tooltiptext',[g.notifications[i].id(), g.notifications[i].hold(), g.notifications[i].notify_staff()]));
                                );
                                apply(node,'method',g.notifications[i].method ? g.notifications[i].method() : '');
                                apply(node,'note',g.notifications[i].note() ? g.notifications[i].note() : '');
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserWrite");
                                var xml = '<groupbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1">';
-                               xml += '<caption label="New Notification Record"/><grid flex="1"><columns><column/><column flex="1"/></columns><rows>';
-                               xml += '<row><label value="Method"/><textbox id="method" name="fancy_data"/></row>';
-                               xml += '<row><label value="Note"/><textbox multiline="true" id="note" name="fancy_data"/></row>';
-                               xml += '<row><spacer/><hbox><button label="Cancel" name="fancy_cancel" accesskey="C"/>';
-                               xml += '<button label="Add Notification Record" accesskey="A" name="fancy_submit"/></hbox></row></rows></grid></groupbox>';
+                               xml += '<caption label="' + $("patronStrings").getString('staff.patron.hold_notices.new_notification_record') + '"/><grid flex="1"><columns><column/><column flex="1"/></columns><rows>';
+                               xml += '<row><label value="' + $("patronStrings").getString('staff.patron.hold_notices.method') + '"/><textbox id="method" name="fancy_data"/></row>';
+                               xml += '<row><label value="' + $("patronStrings").getString('staff.patron.hold_notices.note') + '"/><textbox multiline="true" id="note" name="fancy_data"/></row>';
+                               xml += '<row><spacer/><hbox><button label="' + $("patronStrings").getString('staff.patron.hold_notices.cancel') + '" name="fancy_cancel"';
+                               xml += 'accesskey="' + $("patronStrings").getString('staff.patron.hold_notices.cancel_accesskey') + '"/>';
+                               xml += '<button label="' + $("patronStrings").getString('staff.patron.hold_notices.add_notif_record') + '";'
+                               xml += 'accesskey="' + $("patronStrings").getString('staff.patron.hold_notices.add_notif_record_accesskey') + '" name="fancy_submit"/></hbox></row></rows></grid></groupbox>';
                                //g.data.init({'via':'stash'});
                                //g.data.temp_notification_xml = xml; g.data.stash('temp_notification_xml');
                                JSAN.use('util.window'); var win = new util.window();
                                        //+ '&focus=' + window.escape('method')
                                        //+ '&title=' + window.escape('Add Notification Record'),
                                        'fancy_prompt', 'chrome,resizable,modal,width=700,height=500',
-                                       { 'xml' : xml, 'focus' : 'method', 'title' : 'Add Notification Record' }
+                                       { 'xml' : xml, 'focus' : 'method', 'title' : $("patronStrings").getString('staff.patron.hold_notices.add_notif_record') }
                                );
                                if (fancy_prompt_data.fancy_status == 'complete') {
                                        var notification = new ahn();
                                        setTimeout(function(){refresh();},0);
                                }
                        } catch(E) {
-                               g.error.standard_unexpected_error_alert('The notification was not likely created.',E);
+                               g.error.standard_unexpected_error_alert($("patronStrings").getString('staff.patron.hold_notices.new_notification.not_created'),E);
                                setTimeout(function(){refresh();},0);
                        }
                }
        ]]>
        </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" />      
 
        <stack hidden="true" id="notification_template" flex="1">
                <groupbox flex="1" style="background-color: black;"/>
             <tree id="holds_list" flex="1" enableColumnDrag="true" style=""/>
         </vbox>
         <hbox>
-            <button label="Add Record of Notification" accesskey="A" oncommand="new_notification()"/>
+            <button label="&staff.patron.hold_notices.add_record_notification.label;" accesskey="&staff.patron.hold_notices.add_record_notification.accesskey;" oncommand="new_notification()"/>
             <spacer flex="1"/>
-            <button label="Close" accesskey="C" oncommand="window.close()"/>
+            <button label="&staff.patron.hold_notices.close_window.label;" accesskey="&staff.patron.hold_notices.close_window.accesskey;" oncommand="window.close()"/>
         </hbox>
        </vbox>