diff --git a/code/LeftAndMain.php b/code/LeftAndMain.php index e47e3c7b..dd159faf 100644 --- a/code/LeftAndMain.php +++ b/code/LeftAndMain.php @@ -126,6 +126,7 @@ class LeftAndMain extends Controller { Requirements::javascript(THIRDPARTY_DIR . '/loader.js'); Requirements::javascript(THIRDPARTY_DIR . '/hover.js'); Requirements::javascript(THIRDPARTY_DIR . '/layout_helpers.js'); + Requirements::javascript(SAPPHIRE_DIR . "/javascript/i18n.js"); Requirements::javascript(MCE_ROOT . 'tiny_mce_src.js'); Requirements::javascript(CMS_DIR . '/javascript/ImageEditor/Activator.js'); @@ -584,7 +585,7 @@ JS; */ public function getActionUpdateJS($record) { // Get the new action buttons - + $tempForm = $this->getEditForm($record->ID); $actionList = ''; foreach($tempForm->Actions() as $action) { diff --git a/javascript/CMSMain_left.js b/javascript/CMSMain_left.js index 301cffd5..db982921 100755 --- a/javascript/CMSMain_left.js +++ b/javascript/CMSMain_left.js @@ -71,10 +71,10 @@ addpage.prototype = { var parentID = st.getIdxOf(st.firstSelected()); // TODO: Remove 'new-' code http://open.silverstripe.com/ticket/875 if(parentID && parentID.substr(0,3) == 'new') { - alert("You have to save a page before adding children underneath it"); + alert(ss.i18n._t('CMSMAIN.WARNINGSAVEPAGESBEFOREADDING')); } else if( Element.hasClassName( st.firstSelected(), "nochildren" ) ) { - alert("You can't add children to the selected node" ); + alert(ss.i18n._t('CMSMAIN.CANTADDCHILDREN') ); } else { $(_HANDLER_FORMS.addpage).elements.ParentID.value = parentID ? parentID : 0; @@ -93,7 +93,7 @@ addpage.prototype = { }, showAddPageError: function(response) { - errorMessage('Error adding page', response); + errorMessage(ss.i18n._t('CMSMAIN.ERRORADDINGPAGE'), response); } } @@ -180,10 +180,13 @@ showonlydrafts.prototype = { Behaviour.apply(); $('SiteTreeIsFiltered').value = 1; $('batchactions').multiselectTransform(); - statusMessage('Filtered tree to only show changed pages','good'); + statusMessage(ss.i18n._t('CMSMAIN.FILTEREDTREE'),'good'); }, onFailure : function(response) { - errorMessage('Could not filter tree to only show changed pages
' + response.responseText); + errorMessage(ss.i18n.printf( + ss.i18n._t('CMSMAIN.ERRORFILTERPAGES'), + response.responseText + )); } }); } else { @@ -270,10 +273,13 @@ batchActionGlobals = { Behaviour.apply(); $('SiteTreeIsFiltered').value = 0; $('batchactions').multiselectTransform(); - statusMessage('Unfiltered tree','good'); + statusMessage(ss.i18n._t('CMSMAIN.SUCCESSUNFILTER'),'good'); }, onFailure : function(response) { - errorMessage('Could not unfilter site tree
' + response.responseText); + errorMessage(ss.i18n.printf( + ss.i18n._t('CMSMAIN.ERRORUNFILTER'), + response.responseText + )); } }); } @@ -291,7 +297,7 @@ publishpage.prototype = { if(csvIDs) { this.elements.csvIDs.value = csvIDs; - statusMessage('Publishing pages...'); + statusMessage(ss.i18n._t('CMSMAIN.PUBLISHINGPAGES')); // Put an AJAXY loading icon on the button $('action_publish_selected').className = 'loading'; @@ -302,11 +308,11 @@ publishpage.prototype = { treeactions.closeSelection($('batchactions')); }, onFailure : function(response) { - errorMessage('Error publishing pages', response); + errorMessage(ss.i18n._t('CMSMAIN.ERRORPUBLISHING'), response); } }); } else { - alert("Please select at least 1 page."); + alert(ss.i18n._t('CMSMAIN.SELECTONEPAGE')); } return false; @@ -325,10 +331,13 @@ deletepage.prototype = { if(csvIDs || batchActionGlobals.newNodes.length > 0) { batchActionGlobals.count += batchActionGlobals.newNodes.length; - if(confirm("Do you really want to delete the " + batchActionGlobals.count + " marked pages?")) { + if(confirm(ss.i18n.printf( + ss.i18n._t('CMSMAIN.REALLYDELETEPAGES'), + batchActionGlobals.count + ))) { this.elements.csvIDs.value = csvIDs; - statusMessage('Deleting pages...'); + statusMessage(ss.i18n._t('CMSMAIN.DELETINGPAGES')); // TODO: Remove 'new-' code http://open.silverstripe.com/ticket/875 for( var idx = 0; idx < batchActionGlobals.newNodes.length; idx++ ) { var newNode = $('sitetree').getTreeNodeByIdx( batchActionGlobals.newNodes[idx] ); @@ -351,13 +360,13 @@ deletepage.prototype = { treeactions.closeSelection($('batchactions')); }, onFailure : function(response) { - errorMessage('Error deleting pages', response); + errorMessage(ss.i18n._t('CMSMAIN.ERRORDELETINGPAGES'), response); } }); } } else { - alert("Please select at least 1 page."); + alert(ss.i18n._t('CMSMAIN.SELECTONEPAGE')); } return false; diff --git a/javascript/CMSMain_right.js b/javascript/CMSMain_right.js index 5cd89dfe..6318d328 100755 --- a/javascript/CMSMain_right.js +++ b/javascript/CMSMain_right.js @@ -1,16 +1,16 @@ function action_publish_right() { - $('Form_EditForm_action_publish').value = 'Publishing...'; + $('Form_EditForm_action_publish').value = ss.i18n._t('CMSMAIN.PUBLISHING'); $('Form_EditForm_action_publish').className = 'action loading'; var publish = true; $('Form_EditForm').save(false, null, 'save', publish); } function action_revert_right() { - $('Form_EditForm_action_revert').value = 'Restoring...'; + $('Form_EditForm_action_revert').value = ss.i18n._t('CMSMAIN.RESTORING'); $('Form_EditForm_action_revert').className = 'action loading'; Ajax.SubmitForm('Form_EditForm', 'action_revert', { onSuccess : Ajax.Evaluator, onFailure : function(response) { - errorMessage('Error reverting to live content', response); + errorMessage(ss.i18n._t('CMSMAIN.ERRORREVERTING'), response); } }); } diff --git a/javascript/LeftAndMain.js b/javascript/LeftAndMain.js index 5c426bd8..3259b6ed 100644 --- a/javascript/LeftAndMain.js +++ b/javascript/LeftAndMain.js @@ -279,7 +279,7 @@ function prepareAjaxActions(actions, formName, tabName) { if(window[this.name + '_' + tabName]) { window[this.name + '_' + tabName](e); } else { - statusMessage(ingize(this.value)); + statusMessage('...'); Ajax.SubmitForm(this.ownerForm, this.name, { onSuccess: Ajax.Evaluator, onFailure: ajaxErrorHandler @@ -291,6 +291,9 @@ function prepareAjaxActions(actions, formName, tabName) { } } +/** + * @deprecated 2.3 Please use ss.i18n + */ function ingize(val) { var ingWord, suffix; if(!val) val = "process"; diff --git a/javascript/LeftAndMain_left.js b/javascript/LeftAndMain_left.js index 2d5707de..3e5a3b0a 100755 --- a/javascript/LeftAndMain_left.js +++ b/javascript/LeftAndMain_left.js @@ -336,7 +336,7 @@ SiteTreeNode.prototype = { var currentlyOpenPageID = 0; if($('Form_EditForm').elements.ID) currentlyOpenPageID = $('Form_EditForm').elements.ID.value; - statusMessage('saving...', '', true); + statusMessage(ss.i18n._t('CMSMAIN.SAVING'), '', true); new Ajax.Request(SiteTreeHandlers.parentChanged_url, { method : 'post', postBody : 'ID=' + node.getIdx() + '&ParentID=' + newParent.getIdx() + '&CurrentlyOpenPageID=' + currentlyOpenPageID, @@ -355,7 +355,7 @@ SiteTreeNode.prototype = { * movedNode is the node that actually got moved to trigger this resorting */ onOrderChanged : function(nodeList, movedNode) { - statusMessage('saving...', '', true); + statusMessage(ss.i18n._t('CMSMAIN.SAVING'), '', true); var i, parts = Array(); sort = 0; diff --git a/javascript/LeftAndMain_right.js b/javascript/LeftAndMain_right.js index 0019e9a3..a252b7bf 100755 --- a/javascript/LeftAndMain_right.js +++ b/javascript/LeftAndMain_right.js @@ -184,7 +184,7 @@ CMSForm.prototype = { data += '&publish=1'; } - statusMessage("Saving...", null, true); + statusMessage(ss.i18n._t('CMSMAIN.SAVING'), null, true); new Ajax.Request(this.action, { method : this.method, postBody: data, @@ -311,7 +311,7 @@ CMSRightForm.applyTo('#Form_EditForm', 'right'); function action_save_right() { _AJAX_LOADING = true; - $('Form_EditForm_action_save').value = 'Saving...'; + $('Form_EditForm_action_save').value = ss.i18n._t('CMSMAIN.SAVING'); $('Form_EditForm_action_save').className = 'action loading'; $('Form_EditForm').save(false); } @@ -411,7 +411,7 @@ function autoSave(confirmation, callAfter) { // save is still used if confirmation = false var options = { save: function() { - statusMessage('saving...', '', true); + statusMessage(ss.i18n._t('CMSMAIN.SAVING'), '', true); var i; for(i=0;i<__forms.length;i++) { if(__forms[i].isChanged && __forms[i].isChanged()) { diff --git a/javascript/lang/de_DE.js b/javascript/lang/de_DE.js new file mode 100644 index 00000000..11fc53d2 --- /dev/null +++ b/javascript/lang/de_DE.js @@ -0,0 +1,23 @@ +if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') { + console.error('Class ss.i18n not defined'); +} else { + ss.i18n.addDictionary('de_DE', { + 'CMSMAIN.WARNINGSAVEPAGESBEFOREADDING' : "Sie müssen diese Seite speichern bevor Unterseiten hingefügt werden können", + 'CMSMAIN.CANTADDCHILDREN' : "Unterseiten nicht erlaubt", + 'CMSMAIN.ERRORADDINGPAGE' : 'Fehler beim Hinzufügen der Seite', + 'CMSMAIN.FILTEREDTREE' : 'Gefilterter Seitenbaum zeigt nur Änderungen', + 'CMSMAIN.ERRORFILTERPAGES' : 'Konnte Seitenbaum nicht filtern
%s', + 'CMSMAIN.ERRORUNFILTER' : 'Konnte Filterung des Seitenbaumes nicht aufheben
%s', + 'CMSMAIN.ERRORUNFILTER' : 'Filterung des Seitenbaumes zurückgesetzt', + 'CMSMAIN.PUBLISHINGPAGES' : 'Publiziere Seiten...', + 'CMSMAIN.SELECTONEPAGE' : "Bitte mindestens eine Seite auswählen", + 'CMSMAIN.ERRORPUBLISHING' : 'Fehler beim Veröffentlichen der Seiten', + 'CMSMAIN.REALLYDELETEPAGE' : "Wollen Sie wirklich %s Seiten löschen?", + 'CMSMAIN.DELETINGPAGES' : 'Lösche Seiten...', + 'CMSMAIN.ERRORDELETINGPAGES': 'Fehler beim Löschen der Seiten', + 'CMSMAIN.PUBLISHING' : 'Veröffentliche...', + 'CMSMAIN.RESTORING': 'Wiederherstellen...', + 'CMSMAIN.ERRORREVERTING': 'Fehler beim Wiederherstellen des Live-Inhaltes', + 'CMSMAIN.SAVING' : 'Sichern...' + }); +} \ No newline at end of file diff --git a/javascript/lang/en_US.js b/javascript/lang/en_US.js new file mode 100644 index 00000000..ab98426b --- /dev/null +++ b/javascript/lang/en_US.js @@ -0,0 +1,25 @@ +if(typeof(ss) == 'undefined' || typeof(ss.i18n) == 'undefined') { + console.error('Class ss.i18n not defined'); +} else { + ss.i18n.addDictionary('en_US', { + 'CMSMAIN.WARNINGSAVEPAGESBEFOREADDING' : "You have to save a page before adding children underneath it", + 'CMSMAIN.CANTADDCHILDREN' : "You can't add children to the selected node", + 'CMSMAIN.ERRORADDINGPAGE' : 'Error adding page', + 'CMSMAIN.FILTEREDTREE' : 'Filtered tree to only show changed pages', + 'CMSMAIN.ERRORFILTERPAGES' : 'Could not filter tree to only show changed pages
%s', + 'CMSMAIN.ERRORUNFILTER' : 'Could not unfilter site tree
%s', + 'CMSMAIN.ERRORUNFILTER' : 'Unfiltered tree', + 'CMSMAIN.PUBLISHINGPAGES' : 'Publishing pages...', + 'CMSMAIN.SELECTONEPAGE' : "Please select at least 1 page.", + 'CMSMAIN.ERRORPUBLISHING' : 'Error publishing pages', + 'CMSMAIN.REALLYDELETEPAGE' : "Do you really want to delete the %s marked pages?", + 'CMSMAIN.DELETINGPAGES' : 'Deleting pages...', + 'CMSMAIN.ERRORDELETINGPAGES': 'Error deleting pages', + 'CMSMAIN.PUBLISHING' : 'Publishing...', + 'CMSMAIN.RESTORING': 'Restoring...', + 'CMSMAIN.ERRORREVERTING': 'Error reverting to live content', + 'CMSMAIN.SAVING' : 'saving...', + + + }); +} \ No newline at end of file