diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
index afb5b43d79487fb9d8cacfa924304c5223d2ab38..84c0454d14804438e771cb490c18fad0d9ec5e29 100644
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,18 @@
+Update as of 7/26/2012
+=====================
+* Implemented Magento Validator library in order to have clear solid mechanism and formal rules of input data validation
+* Moved translations to module directories, so that it is much more convenient to manage module resources
+* Updated inline translation mechanism to support locales inheritance
+* Implemented ability to navigate through pending reviews with Prev/Next buttons, no need to switch to grid and back
+* Fixed issues:
+  * Unable to use shell-installer after changes in Backend area routing process
+  * Incorrect redirect after entering wrong captcha on the "Forgot your user name or password?" backend page
+  * Translation is absent for several strings in Sales module `guest/form.phtml` template
+  * Exception during installation process, when `var` directory is not empty
+  * Node `modules` is merged to all modules' config XML-files, although it must be merged to `config.xml` only
+* GitHub requests:
+  * [#39](https://github.com/magento/magento2/pull/39) -- added `composer.json`, which was announced at previous update, but mistakenly omitted from publishing
+
 Update as of 7/19/2012
 =====================
 * Implemented inheritance of locales. Inheritance is declared in `app/locale/<locale_name>/config.xml`
@@ -25,7 +40,7 @@ Update as of 7/19/2012
   * Other small fixes
 * GitHub requests:
   * [#37](https://github.com/magento/magento2/pull/37) -- fixed particular case of "HEADERS ALREADY SENT" error in WYSIWYG thumbnail
-  * [#39](https://github.com/magento/magento2/pull/39) -- added `composer.json`
+  * [#39](https://github.com/magento/magento2/pull/39) -- added `composer.json` (actually, doesn't come with this update due to a mistake in publishing process)
   * [#40](https://github.com/magento/magento2/pull/40) -- fixed generation of "secret key" in backend URLs to honor `_forward` in controllers
 
 Update as of 7/3/2012
diff --git a/app/locale/de_DE/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/de_DE/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/de_DE/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/de_DE/Phoenix_Moneybookers.csv
diff --git a/app/locale/en_US/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/en_US/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/en_US/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/en_US/Phoenix_Moneybookers.csv
diff --git a/app/locale/es_ES/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/es_ES/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/es_ES/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/es_ES/Phoenix_Moneybookers.csv
diff --git a/app/locale/fr_FR/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/fr_FR/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/fr_FR/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/fr_FR/Phoenix_Moneybookers.csv
diff --git a/app/locale/nl_NL/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/nl_NL/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/nl_NL/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/nl_NL/Phoenix_Moneybookers.csv
diff --git a/app/locale/pt_BR/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/pt_BR/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/pt_BR/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/pt_BR/Phoenix_Moneybookers.csv
diff --git a/app/locale/zh_CN/Phoenix_Moneybookers.csv b/app/code/community/Phoenix/Moneybookers/locale/zh_CN/Phoenix_Moneybookers.csv
similarity index 100%
rename from app/locale/zh_CN/Phoenix_Moneybookers.csv
rename to app/code/community/Phoenix/Moneybookers/locale/zh_CN/Phoenix_Moneybookers.csv
diff --git a/app/locale/de_DE/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/de_DE/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/de_DE/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/de_DE/Mage_AdminNotification.csv
diff --git a/app/locale/en_US/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/en_US/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/en_US/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/en_US/Mage_AdminNotification.csv
diff --git a/app/locale/es_ES/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/es_ES/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/es_ES/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/es_ES/Mage_AdminNotification.csv
diff --git a/app/locale/fr_FR/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/fr_FR/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/fr_FR/Mage_AdminNotification.csv
diff --git a/app/locale/nl_NL/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/nl_NL/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/nl_NL/Mage_AdminNotification.csv
diff --git a/app/locale/pt_BR/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/pt_BR/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/pt_BR/Mage_AdminNotification.csv
diff --git a/app/locale/zh_CN/Mage_AdminNotification.csv b/app/code/core/Mage/AdminNotification/locale/zh_CN/Mage_AdminNotification.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_AdminNotification.csv
rename to app/code/core/Mage/AdminNotification/locale/zh_CN/Mage_AdminNotification.csv
diff --git a/app/code/core/Mage/Adminhtml/Block/Review/Edit.php b/app/code/core/Mage/Adminhtml/Block/Review/Edit.php
index 5bb41c2dcdba8deced7b6589e6b622620b5ddfd5..1fcad0b9f0e94f7f4ad618aea1c3c863affe5257 100644
--- a/app/code/core/Mage/Adminhtml/Block/Review/Edit.php
+++ b/app/code/core/Mage/Adminhtml/Block/Review/Edit.php
@@ -41,6 +41,37 @@ class Mage_Adminhtml_Block_Review_Edit extends Mage_Adminhtml_Block_Widget_Form_
         $this->_objectId = 'id';
         $this->_controller = 'review';
 
+        /** @var $actionPager Mage_Review_Helper_Action_Pager */
+        $actionPager = Mage::helper('Mage_Review_Helper_Action_Pager');
+        $actionPager->setStorageId('reviews');
+
+        $reviewId = $this->getRequest()->getParam('id');
+        $prevId = $actionPager->getPreviousItemId($reviewId);
+        $nextId = $actionPager->getNextItemId($reviewId);
+        if ($prevId !== false) {
+            $this->addButton('previous', array(
+                'label' => Mage::helper('Mage_Review_Helper_Data')->__('Previous'),
+                'onclick' => 'setLocation(\'' . $this->getUrl('*/*/*', array('id' => $prevId)) . '\')'
+            ), 3, 10);
+
+            $this->addButton('save_and_previous', array(
+                'label'   => Mage::helper('Mage_Review_Helper_Data')->__('Save and Previous'),
+                'onclick' => 'submitAndGo(\'' . $prevId . '\')',
+                'class'   => 'save'
+            ), 3, 11);
+        }
+        if ($nextId !== false) {
+            $this->addButton('save_and_next', array(
+                'label'   => Mage::helper('Mage_Review_Helper_Data')->__('Save and Next'),
+                'onclick' => 'submitAndGo(\'' . $nextId . '\')',
+                'class'   => 'save'
+            ), 3, 100);
+
+            $this->addButton('next', array(
+                'label' => Mage::helper('Mage_Review_Helper_Data')->__('Next'),
+                'onclick' => 'setLocation(\'' . $this->getUrl('*/*/*', array('id' => $nextId)) . '\')'
+            ), 3, 105);
+        }
         $this->_updateButton('save', 'label', Mage::helper('Mage_Review_Helper_Data')->__('Save Review'));
         $this->_updateButton('save', 'id', 'save_button');
         $this->_updateButton('delete', 'label', Mage::helper('Mage_Review_Helper_Data')->__('Delete Review'));
@@ -97,6 +128,16 @@ class Mage_Adminhtml_Block_Review_Edit extends Mage_Adminhtml_Block_Widget_Form_
         }
 
         $this->_formInitScripts[] = '
+            function submitAndGo(id)
+            {
+                var nextIdElement = document.createElement("input");
+                nextIdElement.name = "next_item";
+                nextIdElement.type = "text";
+                nextIdElement.value = id;
+                document.getElementById("edit_form").appendChild(nextIdElement);
+                editForm.submit();
+            }
+
             var review = {
                 updateRating: function() {
                         elements = [
diff --git a/app/code/core/Mage/Adminhtml/Block/Review/Grid.php b/app/code/core/Mage/Adminhtml/Block/Review/Grid.php
index e88595faa595265c0868ae079f0cd668e7c0bb6c..d6dcf463fb8349cf1e78eb859da81ed995db5f16 100644
--- a/app/code/core/Mage/Adminhtml/Block/Review/Grid.php
+++ b/app/code/core/Mage/Adminhtml/Block/Review/Grid.php
@@ -27,13 +27,21 @@
 /**
  * Adminhtml reviews grid
  *
+ * @method int getProductId() getProductId()
+ * @method Mage_Adminhtml_Block_Review_Grid setProductId() setProductId(int $productId)
+ * @method int getCustomerId() getCustomerId()
+ * @method Mage_Adminhtml_Block_Review_Grid setCustomerId() setCustomerId(int $customerId)
+ * @method Mage_Adminhtml_Block_Review_Grid setMassactionIdFieldOnlyIndexValue() setMassactionIdFieldOnlyIndexValue(bool $onlyIndex)
+ *
  * @category   Mage
  * @package    Mage_Adminhtml
  * @author      Magento Core Team <core@magentocommerce.com>
  */
-class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
+class Mage_Adminhtml_Block_Review_Grid extends Mage_Backend_Block_Widget_Grid
 {
-
+    /**
+     * Initialize grid
+     */
     public function __construct()
     {
         parent::__construct();
@@ -41,9 +49,31 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         $this->setDefaultSort('created_at');
     }
 
+    /**
+     * Save search results
+     *
+     * @return Mage_Backend_Block_Widget_Grid
+     */
+    protected function _afterLoadCollection()
+    {
+        /** @var $actionPager Mage_Review_Helper_Action_Pager */
+        $actionPager = Mage::helper('Mage_Review_Helper_Action_Pager');
+        $actionPager->setStorageId('reviews');
+        $actionPager->setItems($this->getCollection()->getResultingIds());
+
+        return parent::_afterLoadCollection();
+    }
+
+    /**
+     * Prepare collection
+     *
+     * @return Mage_Adminhtml_Block_Review_Grid
+     */
     protected function _prepareCollection()
     {
+        /** @var $model Mage_Review_Model_Review */
         $model = Mage::getModel('Mage_Review_Model_Review');
+        /** @var $collection Mage_Review_Model_Resource_Review_Product_Collection */
         $collection = $model->getProductCollection();
 
         if ($this->getProductId() || $this->getRequest()->getParam('productId', false)) {
@@ -74,10 +104,17 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         return parent::_prepareCollection();
     }
 
+    /**
+     * Prepare grid columns
+     *
+     * @return Mage_Backend_Block_Widget_Grid
+     */
     protected function _prepareColumns()
     {
+        /** @var $helper Mage_Review_Helper_Data */
+        $helper = Mage::helper('Mage_Review_Helper_Data');
         $this->addColumn('review_id', array(
-            'header'        => Mage::helper('Mage_Review_Helper_Data')->__('ID'),
+            'header'        => $helper->__('ID'),
             'align'         => 'right',
             'width'         => '50px',
             'filter_index'  => 'rt.review_id',
@@ -85,7 +122,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         ));
 
         $this->addColumn('created_at', array(
-            'header'        => Mage::helper('Mage_Review_Helper_Data')->__('Created On'),
+            'header'        => $helper->__('Created On'),
             'align'         => 'left',
             'type'          => 'datetime',
             'width'         => '100px',
@@ -95,10 +132,10 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
 
         if( !Mage::registry('usePendingFilter') ) {
             $this->addColumn('status', array(
-                'header'        => Mage::helper('Mage_Review_Helper_Data')->__('Status'),
+                'header'        => $helper->__('Status'),
                 'align'         => 'left',
                 'type'          => 'options',
-                'options'       => Mage::helper('Mage_Review_Helper_Data')->getReviewStatuses(),
+                'options'       => $helper->getReviewStatuses(),
                 'width'         => '100px',
                 'filter_index'  => 'rt.status_id',
                 'index'         => 'status_id',
@@ -106,7 +143,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         }
 
         $this->addColumn('title', array(
-            'header'        => Mage::helper('Mage_Review_Helper_Data')->__('Title'),
+            'header'        => $helper->__('Title'),
             'align'         => 'left',
             'width'         => '100px',
             'filter_index'  => 'rdt.title',
@@ -117,7 +154,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         ));
 
         $this->addColumn('nickname', array(
-            'header'        => Mage::helper('Mage_Review_Helper_Data')->__('Nickname'),
+            'header'        => $helper->__('Nickname'),
             'align'         => 'left',
             'width'         => '100px',
             'filter_index'  => 'rdt.nickname',
@@ -128,7 +165,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         ));
 
         $this->addColumn('detail', array(
-            'header'        => Mage::helper('Mage_Review_Helper_Data')->__('Review'),
+            'header'        => $helper->__('Review'),
             'align'         => 'left',
             'index'         => 'detail',
             'filter_index'  => 'rdt.detail',
@@ -143,7 +180,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
          */
         if (!Mage::app()->isSingleStoreMode()) {
             $this->addColumn('visible_in', array(
-                'header'    => Mage::helper('Mage_Review_Helper_Data')->__('Visible In'),
+                'header'    => $helper->__('Visible In'),
                 'index'     => 'stores',
                 'type'      => 'store',
                 'store_view' => true,
@@ -151,7 +188,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         }
 
         $this->addColumn('type', array(
-            'header'    => Mage::helper('Mage_Review_Helper_Data')->__('Type'),
+            'header'    => $helper->__('Type'),
             'type'      => 'select',
             'index'     => 'type',
             'filter'    => 'Mage_Adminhtml_Block_Review_Grid_Filter_Type',
@@ -159,7 +196,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         ));
 
         $this->addColumn('name', array(
-            'header'    => Mage::helper('Mage_Review_Helper_Data')->__('Product Name'),
+            'header'    => $helper->__('Product Name'),
             'align'     =>'left',
             'type'      => 'text',
             'index'     => 'name',
@@ -167,7 +204,7 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         ));
 
         $this->addColumn('sku', array(
-            'header'    => Mage::helper('Mage_Review_Helper_Data')->__('Product SKU'),
+            'header'    => $helper->__('Product SKU'),
             'align'     => 'right',
             'type'      => 'text',
             'width'     => '50px',
@@ -204,8 +241,16 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         return parent::_prepareColumns();
     }
 
+    /**
+     * Prepare grid mass actions
+     *
+     * @return Mage_Backend_Block_Widget_Grid|void
+     */
     protected function _prepareMassaction()
     {
+        /** @var $helper Mage_Review_Helper_Data */
+        $helper = Mage::helper('Mage_Review_Helper_Data');
+
         $this->setMassactionIdField('review_id');
         $this->setMassactionIdFilter('rt.review_id');
         $this->setMassactionIdFieldOnlyIndexValue(true);
@@ -220,10 +265,10 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
             'confirm' => Mage::helper('Mage_Review_Helper_Data')->__('Are you sure?')
         ));
 
-        $statuses = Mage::helper('Mage_Review_Helper_Data')->getReviewStatusesOptionArray();
+        $statuses = $helper->getReviewStatusesOptionArray();
         array_unshift($statuses, array('label'=>'', 'value'=>''));
         $this->getMassactionBlock()->addItem('update_status', array(
-            'label'         => Mage::helper('Mage_Review_Helper_Data')->__('Update Status'),
+            'label'         => $helper->__('Update Status'),
             'url'           => $this->getUrl(
                 '*/*/massUpdateStatus',
                 array('ret' => Mage::registry('usePendingFilter') ? 'pending' : 'index')
@@ -233,13 +278,19 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
                     'name'      => 'status',
                     'type'      => 'select',
                     'class'     => 'required-entry',
-                    'label'     => Mage::helper('Mage_Review_Helper_Data')->__('Status'),
+                    'label'     => $helper->__('Status'),
                     'values'    => $statuses
                 )
             )
         ));
     }
 
+    /**
+     * Get row url
+     *
+     * @param Mage_Review_Model_Review|Varien_Object $row
+     * @return string
+     */
     public function getRowUrl($row)
     {
         return $this->getUrl('*/catalog_product_review/edit', array(
@@ -250,6 +301,11 @@ class Mage_Adminhtml_Block_Review_Grid extends Mage_Adminhtml_Block_Widget_Grid
         ));
     }
 
+    /**
+     * Get grid url
+     *
+     * @return string
+     */
     public function getGridUrl()
     {
         if( $this->getProductId() || $this->getCustomerId() ) {
diff --git a/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php b/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php
index 31ae0ca6ec47d81d29acc99c04d50641b1e91eb3..9829f7a5fd8bf2eb954d47fe474aefa5af14c766 100644
--- a/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php
+++ b/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/ReviewController.php
@@ -160,7 +160,12 @@ class Mage_Adminhtml_Catalog_Product_ReviewController extends Mage_Adminhtml_Con
                 }
             }
 
-            return $this->getResponse()->setRedirect($this->getUrl($this->getRequest()->getParam('ret') == 'pending' ? '*/*/pending' : '*/*/'));
+            $nextId = (int) $this->getRequest()->getParam('next_item');
+            $url = $this->getUrl($this->getRequest()->getParam('ret') == 'pending' ? '*/*/pending' : '*/*/');
+            if ($nextId) {
+                $url = $this->getUrl('*/*/edit', array('id' => $nextId));
+            }
+            return $this->getResponse()->setRedirect($url);
         }
         $this->_redirect('*/*/');
     }
diff --git a/app/locale/de_DE/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/de_DE/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/de_DE/Mage_Adminhtml.csv
diff --git a/app/locale/en_US/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/en_US/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/en_US/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/en_US/Mage_Adminhtml.csv
diff --git a/app/locale/es_ES/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/es_ES/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/es_ES/Mage_Adminhtml.csv
diff --git a/app/locale/fr_FR/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/fr_FR/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/fr_FR/Mage_Adminhtml.csv
diff --git a/app/locale/nl_NL/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/nl_NL/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/nl_NL/Mage_Adminhtml.csv
diff --git a/app/locale/pt_BR/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/pt_BR/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/pt_BR/Mage_Adminhtml.csv
diff --git a/app/locale/zh_CN/Mage_Adminhtml.csv b/app/code/core/Mage/Adminhtml/locale/zh_CN/Mage_Adminhtml.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Adminhtml.csv
rename to app/code/core/Mage/Adminhtml/locale/zh_CN/Mage_Adminhtml.csv
diff --git a/app/locale/de_DE/Mage_Api.csv b/app/code/core/Mage/Api/locale/de_DE/Mage_Api.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/de_DE/Mage_Api.csv
diff --git a/app/locale/en_US/Mage_Api.csv b/app/code/core/Mage/Api/locale/en_US/Mage_Api.csv
similarity index 100%
rename from app/locale/en_US/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/en_US/Mage_Api.csv
diff --git a/app/locale/es_ES/Mage_Api.csv b/app/code/core/Mage/Api/locale/es_ES/Mage_Api.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/es_ES/Mage_Api.csv
diff --git a/app/locale/fr_FR/Mage_Api.csv b/app/code/core/Mage/Api/locale/fr_FR/Mage_Api.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/fr_FR/Mage_Api.csv
diff --git a/app/locale/nl_NL/Mage_Api.csv b/app/code/core/Mage/Api/locale/nl_NL/Mage_Api.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/nl_NL/Mage_Api.csv
diff --git a/app/locale/pt_BR/Mage_Api.csv b/app/code/core/Mage/Api/locale/pt_BR/Mage_Api.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/pt_BR/Mage_Api.csv
diff --git a/app/locale/zh_CN/Mage_Api.csv b/app/code/core/Mage/Api/locale/zh_CN/Mage_Api.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Api.csv
rename to app/code/core/Mage/Api/locale/zh_CN/Mage_Api.csv
diff --git a/app/locale/de_DE/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/de_DE/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/de_DE/Mage_Authorizenet.csv
diff --git a/app/locale/en_US/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/en_US/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/en_US/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/en_US/Mage_Authorizenet.csv
diff --git a/app/locale/es_ES/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/es_ES/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/es_ES/Mage_Authorizenet.csv
diff --git a/app/locale/fr_FR/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/fr_FR/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/fr_FR/Mage_Authorizenet.csv
diff --git a/app/locale/nl_NL/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/nl_NL/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/nl_NL/Mage_Authorizenet.csv
diff --git a/app/locale/pt_BR/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/pt_BR/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/pt_BR/Mage_Authorizenet.csv
diff --git a/app/locale/zh_CN/Mage_Authorizenet.csv b/app/code/core/Mage/Authorizenet/locale/zh_CN/Mage_Authorizenet.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Authorizenet.csv
rename to app/code/core/Mage/Authorizenet/locale/zh_CN/Mage_Authorizenet.csv
diff --git a/app/locale/de_DE/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/de_DE/Mage_Backup.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/de_DE/Mage_Backup.csv
diff --git a/app/locale/en_US/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/en_US/Mage_Backup.csv
similarity index 100%
rename from app/locale/en_US/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/en_US/Mage_Backup.csv
diff --git a/app/locale/es_ES/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/es_ES/Mage_Backup.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/es_ES/Mage_Backup.csv
diff --git a/app/locale/fr_FR/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/fr_FR/Mage_Backup.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/fr_FR/Mage_Backup.csv
diff --git a/app/locale/nl_NL/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/nl_NL/Mage_Backup.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/nl_NL/Mage_Backup.csv
diff --git a/app/locale/pt_BR/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/pt_BR/Mage_Backup.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/pt_BR/Mage_Backup.csv
diff --git a/app/locale/zh_CN/Mage_Backup.csv b/app/code/core/Mage/Backup/locale/zh_CN/Mage_Backup.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Backup.csv
rename to app/code/core/Mage/Backup/locale/zh_CN/Mage_Backup.csv
diff --git a/app/locale/de_DE/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/de_DE/Mage_Bundle.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/de_DE/Mage_Bundle.csv
diff --git a/app/locale/en_US/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/en_US/Mage_Bundle.csv
similarity index 100%
rename from app/locale/en_US/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/en_US/Mage_Bundle.csv
diff --git a/app/locale/es_ES/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/es_ES/Mage_Bundle.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/es_ES/Mage_Bundle.csv
diff --git a/app/locale/fr_FR/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/fr_FR/Mage_Bundle.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/fr_FR/Mage_Bundle.csv
diff --git a/app/locale/nl_NL/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/nl_NL/Mage_Bundle.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/nl_NL/Mage_Bundle.csv
diff --git a/app/locale/pt_BR/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/pt_BR/Mage_Bundle.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/pt_BR/Mage_Bundle.csv
diff --git a/app/locale/zh_CN/Mage_Bundle.csv b/app/code/core/Mage/Bundle/locale/zh_CN/Mage_Bundle.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Bundle.csv
rename to app/code/core/Mage/Bundle/locale/zh_CN/Mage_Bundle.csv
diff --git a/app/code/core/Mage/Captcha/Model/Observer.php b/app/code/core/Mage/Captcha/Model/Observer.php
index dc1aedf7161d3f66877e45d1edacabdf124be65e..d2564301ff3657d4546339b40af55154ff981743 100755
--- a/app/code/core/Mage/Captcha/Model/Observer.php
+++ b/app/code/core/Mage/Captcha/Model/Observer.php
@@ -205,7 +205,7 @@ class Mage_Captcha_Model_Observer
                     $this->_getBackendSession()->setEmail((string) $controller->getRequest()->getPost('email'));
                     $controller->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);
                     $this->_getBackendSession()->addError(Mage::helper('Mage_Captcha_Helper_Data')->__('Incorrect CAPTCHA.'));
-                    $controller->getResponse()->setRedirect(Mage::getUrl('*/*/forgotpassword'));
+                    $controller->getResponse()->setRedirect($controller->getUrl('*/*/forgotpassword', array('_nosecret' => true)));
                 }
             }
         }
diff --git a/app/code/core/Mage/Captcha/etc/config.xml b/app/code/core/Mage/Captcha/etc/config.xml
index 73601fe24a84a7516ae6a3265eae4b3651b28e47..e8cbbc299c1224783db89bf76783e97e9b4e4b0d 100755
--- a/app/code/core/Mage/Captcha/etc/config.xml
+++ b/app/code/core/Mage/Captcha/etc/config.xml
@@ -71,14 +71,6 @@
                     </captcha>
                 </observers>
             </controller_action_predispatch_customer_account_createpost>
-            <controller_action_predispatch_adminhtml_auth_forgotpassword>
-                <observers>
-                    <captcha>
-                        <class>Mage_Captcha_Model_Observer</class>
-                        <method>checkUserForgotPasswordBackend</method>
-                    </captcha>
-                </observers>
-            </controller_action_predispatch_adminhtml_auth_forgotpassword>
             <admin_user_authenticate_before>
                 <observers>
                     <captcha>
@@ -154,6 +146,16 @@
                 </captcha>
             </updates>
         </layout>
+        <events>
+            <controller_action_predispatch_adminhtml_auth_forgotpassword>
+                <observers>
+                    <captcha>
+                        <class>Mage_Captcha_Model_Observer</class>
+                        <method>checkUserForgotPasswordBackend</method>
+                    </captcha>
+                </observers>
+            </controller_action_predispatch_adminhtml_auth_forgotpassword>
+        </events>
     </adminhtml>
     <default>
         <system>
diff --git a/app/locale/de_DE/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/de_DE/Mage_Captcha.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/de_DE/Mage_Captcha.csv
diff --git a/app/locale/en_US/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/en_US/Mage_Captcha.csv
similarity index 100%
rename from app/locale/en_US/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/en_US/Mage_Captcha.csv
diff --git a/app/locale/es_ES/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/es_ES/Mage_Captcha.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/es_ES/Mage_Captcha.csv
diff --git a/app/locale/fr_FR/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/fr_FR/Mage_Captcha.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/fr_FR/Mage_Captcha.csv
diff --git a/app/locale/nl_NL/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/nl_NL/Mage_Captcha.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/nl_NL/Mage_Captcha.csv
diff --git a/app/locale/pt_BR/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/pt_BR/Mage_Captcha.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/pt_BR/Mage_Captcha.csv
diff --git a/app/locale/zh_CN/Mage_Captcha.csv b/app/code/core/Mage/Captcha/locale/zh_CN/Mage_Captcha.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Captcha.csv
rename to app/code/core/Mage/Captcha/locale/zh_CN/Mage_Captcha.csv
diff --git a/app/locale/de_DE/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/de_DE/Mage_Catalog.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/de_DE/Mage_Catalog.csv
diff --git a/app/locale/en_US/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/en_US/Mage_Catalog.csv
similarity index 100%
rename from app/locale/en_US/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/en_US/Mage_Catalog.csv
diff --git a/app/locale/es_ES/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/es_ES/Mage_Catalog.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/es_ES/Mage_Catalog.csv
diff --git a/app/locale/fr_FR/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/fr_FR/Mage_Catalog.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/fr_FR/Mage_Catalog.csv
diff --git a/app/locale/nl_NL/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/nl_NL/Mage_Catalog.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/nl_NL/Mage_Catalog.csv
diff --git a/app/locale/pt_BR/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/pt_BR/Mage_Catalog.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/pt_BR/Mage_Catalog.csv
diff --git a/app/locale/zh_CN/Mage_Catalog.csv b/app/code/core/Mage/Catalog/locale/zh_CN/Mage_Catalog.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Catalog.csv
rename to app/code/core/Mage/Catalog/locale/zh_CN/Mage_Catalog.csv
diff --git a/app/locale/de_DE/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/de_DE/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/de_DE/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/de_DE/Mage_CatalogInventory.csv
diff --git a/app/locale/en_US/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/en_US/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/en_US/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/en_US/Mage_CatalogInventory.csv
diff --git a/app/locale/es_ES/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/es_ES/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/es_ES/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/es_ES/Mage_CatalogInventory.csv
diff --git a/app/locale/fr_FR/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/fr_FR/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/fr_FR/Mage_CatalogInventory.csv
diff --git a/app/locale/nl_NL/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/nl_NL/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/nl_NL/Mage_CatalogInventory.csv
diff --git a/app/locale/pt_BR/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/pt_BR/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/pt_BR/Mage_CatalogInventory.csv
diff --git a/app/locale/zh_CN/Mage_CatalogInventory.csv b/app/code/core/Mage/CatalogInventory/locale/zh_CN/Mage_CatalogInventory.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_CatalogInventory.csv
rename to app/code/core/Mage/CatalogInventory/locale/zh_CN/Mage_CatalogInventory.csv
diff --git a/app/locale/de_DE/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/de_DE/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/de_DE/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/de_DE/Mage_CatalogRule.csv
diff --git a/app/locale/en_US/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/en_US/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/en_US/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/en_US/Mage_CatalogRule.csv
diff --git a/app/locale/es_ES/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/es_ES/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/es_ES/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/es_ES/Mage_CatalogRule.csv
diff --git a/app/locale/fr_FR/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/fr_FR/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/fr_FR/Mage_CatalogRule.csv
diff --git a/app/locale/nl_NL/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/nl_NL/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/nl_NL/Mage_CatalogRule.csv
diff --git a/app/locale/pt_BR/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/pt_BR/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/pt_BR/Mage_CatalogRule.csv
diff --git a/app/locale/zh_CN/Mage_CatalogRule.csv b/app/code/core/Mage/CatalogRule/locale/zh_CN/Mage_CatalogRule.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_CatalogRule.csv
rename to app/code/core/Mage/CatalogRule/locale/zh_CN/Mage_CatalogRule.csv
diff --git a/app/locale/de_DE/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/de_DE/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/de_DE/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/de_DE/Mage_CatalogSearch.csv
diff --git a/app/locale/en_US/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/en_US/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/en_US/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/en_US/Mage_CatalogSearch.csv
diff --git a/app/locale/es_ES/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/es_ES/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/es_ES/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/es_ES/Mage_CatalogSearch.csv
diff --git a/app/locale/fr_FR/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/fr_FR/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/fr_FR/Mage_CatalogSearch.csv
diff --git a/app/locale/nl_NL/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/nl_NL/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/nl_NL/Mage_CatalogSearch.csv
diff --git a/app/locale/pt_BR/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/pt_BR/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/pt_BR/Mage_CatalogSearch.csv
diff --git a/app/locale/zh_CN/Mage_CatalogSearch.csv b/app/code/core/Mage/CatalogSearch/locale/zh_CN/Mage_CatalogSearch.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_CatalogSearch.csv
rename to app/code/core/Mage/CatalogSearch/locale/zh_CN/Mage_CatalogSearch.csv
diff --git a/app/locale/de_DE/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/de_DE/Mage_Centinel.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/de_DE/Mage_Centinel.csv
diff --git a/app/locale/en_US/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/en_US/Mage_Centinel.csv
similarity index 100%
rename from app/locale/en_US/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/en_US/Mage_Centinel.csv
diff --git a/app/locale/es_ES/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/es_ES/Mage_Centinel.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/es_ES/Mage_Centinel.csv
diff --git a/app/locale/fr_FR/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/fr_FR/Mage_Centinel.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/fr_FR/Mage_Centinel.csv
diff --git a/app/locale/nl_NL/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/nl_NL/Mage_Centinel.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/nl_NL/Mage_Centinel.csv
diff --git a/app/locale/pt_BR/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/pt_BR/Mage_Centinel.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/pt_BR/Mage_Centinel.csv
diff --git a/app/locale/zh_CN/Mage_Centinel.csv b/app/code/core/Mage/Centinel/locale/zh_CN/Mage_Centinel.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Centinel.csv
rename to app/code/core/Mage/Centinel/locale/zh_CN/Mage_Centinel.csv
diff --git a/app/locale/de_DE/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/de_DE/Mage_Checkout.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/de_DE/Mage_Checkout.csv
diff --git a/app/locale/en_US/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/en_US/Mage_Checkout.csv
similarity index 100%
rename from app/locale/en_US/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/en_US/Mage_Checkout.csv
diff --git a/app/locale/es_ES/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/es_ES/Mage_Checkout.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/es_ES/Mage_Checkout.csv
diff --git a/app/locale/fr_FR/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/fr_FR/Mage_Checkout.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/fr_FR/Mage_Checkout.csv
diff --git a/app/locale/nl_NL/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/nl_NL/Mage_Checkout.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/nl_NL/Mage_Checkout.csv
diff --git a/app/locale/pt_BR/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/pt_BR/Mage_Checkout.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/pt_BR/Mage_Checkout.csv
diff --git a/app/locale/zh_CN/Mage_Checkout.csv b/app/code/core/Mage/Checkout/locale/zh_CN/Mage_Checkout.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Checkout.csv
rename to app/code/core/Mage/Checkout/locale/zh_CN/Mage_Checkout.csv
diff --git a/app/locale/de_DE/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/de_DE/Mage_Cms.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/de_DE/Mage_Cms.csv
diff --git a/app/locale/en_US/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/en_US/Mage_Cms.csv
similarity index 100%
rename from app/locale/en_US/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/en_US/Mage_Cms.csv
diff --git a/app/locale/es_ES/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/es_ES/Mage_Cms.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/es_ES/Mage_Cms.csv
diff --git a/app/locale/fr_FR/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/fr_FR/Mage_Cms.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/fr_FR/Mage_Cms.csv
diff --git a/app/locale/nl_NL/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/nl_NL/Mage_Cms.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/nl_NL/Mage_Cms.csv
diff --git a/app/locale/pt_BR/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/pt_BR/Mage_Cms.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/pt_BR/Mage_Cms.csv
diff --git a/app/locale/zh_CN/Mage_Cms.csv b/app/code/core/Mage/Cms/locale/zh_CN/Mage_Cms.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Cms.csv
rename to app/code/core/Mage/Cms/locale/zh_CN/Mage_Cms.csv
diff --git a/app/locale/de_DE/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/de_DE/Mage_Connect.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/de_DE/Mage_Connect.csv
diff --git a/app/locale/en_US/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/en_US/Mage_Connect.csv
similarity index 100%
rename from app/locale/en_US/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/en_US/Mage_Connect.csv
diff --git a/app/locale/es_ES/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/es_ES/Mage_Connect.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/es_ES/Mage_Connect.csv
diff --git a/app/locale/fr_FR/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/fr_FR/Mage_Connect.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/fr_FR/Mage_Connect.csv
diff --git a/app/locale/nl_NL/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/nl_NL/Mage_Connect.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/nl_NL/Mage_Connect.csv
diff --git a/app/locale/pt_BR/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/pt_BR/Mage_Connect.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/pt_BR/Mage_Connect.csv
diff --git a/app/locale/zh_CN/Mage_Connect.csv b/app/code/core/Mage/Connect/locale/zh_CN/Mage_Connect.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Connect.csv
rename to app/code/core/Mage/Connect/locale/zh_CN/Mage_Connect.csv
diff --git a/app/locale/de_DE/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/de_DE/Mage_Contacts.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/de_DE/Mage_Contacts.csv
diff --git a/app/locale/en_US/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/en_US/Mage_Contacts.csv
similarity index 100%
rename from app/locale/en_US/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/en_US/Mage_Contacts.csv
diff --git a/app/locale/es_ES/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/es_ES/Mage_Contacts.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/es_ES/Mage_Contacts.csv
diff --git a/app/locale/fr_FR/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/fr_FR/Mage_Contacts.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/fr_FR/Mage_Contacts.csv
diff --git a/app/locale/nl_NL/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/nl_NL/Mage_Contacts.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/nl_NL/Mage_Contacts.csv
diff --git a/app/locale/pt_BR/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/pt_BR/Mage_Contacts.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/pt_BR/Mage_Contacts.csv
diff --git a/app/locale/zh_CN/Mage_Contacts.csv b/app/code/core/Mage/Contacts/locale/zh_CN/Mage_Contacts.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Contacts.csv
rename to app/code/core/Mage/Contacts/locale/zh_CN/Mage_Contacts.csv
diff --git a/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php b/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
index 962c54605bfe9600fde00793a74838b85ac6668a..0735e9078a136fda5686d35edcbb1b39b730a27a 100644
--- a/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
+++ b/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php
@@ -33,7 +33,7 @@ class Mage_Core_Controller_Varien_Router_Standard extends Mage_Core_Controller_V
     /**
      * @param array $options
      *
-     * @@SuppressWarnings(PHPMD.UnusedFormalParameter)
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
     public function __construct(array $options = array())
     {
diff --git a/app/code/core/Mage/Core/Model/Config.php b/app/code/core/Mage/Core/Model/Config.php
index 8de3da847ecc54f7a784873db9abe93503e08ba4..e424cfca3b3d00e7dbed58f855ce5a3da6982adc 100644
--- a/app/code/core/Mage/Core/Model/Config.php
+++ b/app/code/core/Mage/Core/Model/Config.php
@@ -188,6 +188,13 @@ class Mage_Core_Model_Config extends Mage_Core_Model_Config_Base
      */
     protected $_allowedAreas = null;
 
+    /**
+     * Paths to module's directories (etc, sql, locale etc)
+     *
+     * @var array
+     */
+    protected $_moduleDirs = array();
+
     /**
      * Class construct
      *
@@ -884,9 +891,12 @@ class Mage_Core_Model_Config extends Mage_Core_Model_Config_Base
                 }
 
                 foreach ($fileName as $configFile) {
-                    $configFile = $this->getModuleDir('etc', $modName).DS.$configFile;
-                    if ($mergeModel->loadFile($configFile)) {
+                    $configFilePath = $this->getModuleDir('etc', $modName).DS.$configFile;
+                    if ($mergeModel->loadFile($configFilePath)) {
                         $mergeToObject->extend($mergeModel, true);
+                        if ($configFile !== 'config.xml') {
+                            continue;
+                        }
                         //Prevent overriding <active> node of module if it was redefined in etc/modules
                         $mergeToObject->extend(new Mage_Core_Model_Config_Base(
                             "<config><modules><{$modName}><active>true</active></{$modName}></modules></config>"),
@@ -1053,8 +1063,12 @@ class Mage_Core_Model_Config extends Mage_Core_Model_Config_Base
      */
     public function getModuleDir($type, $moduleName)
     {
+        if (isset($this->_moduleDirs[$moduleName][$type])) {
+            return $this->_moduleDirs[$moduleName][$type];
+        }
+
         $codePool = (string)$this->getModuleConfig($moduleName)->codePool;
-        $dir = $this->getOptions()->getCodeDir().DS.$codePool.DS.uc_words($moduleName, DS);
+        $dir = $this->getOptions()->getCodeDir() . DS . $codePool . DS . uc_words($moduleName, DS);
 
         switch ($type) {
             case 'etc':
@@ -1071,6 +1085,23 @@ class Mage_Core_Model_Config extends Mage_Core_Model_Config_Base
         return $dir;
     }
 
+    /**
+     * Set path to the corresponding module directory
+     *
+     * @param string $moduleName
+     * @param string $type directory type (etc, controllers, locale etc)
+     * @param string $path
+     * @return Mage_Core_Model_Config
+     */
+    public function setModuleDir($moduleName, $type, $path)
+    {
+        if (!isset($this->_moduleDirs[$moduleName])) {
+            $this->_moduleDirs[$moduleName] = array();
+        }
+        $this->_moduleDirs[$moduleName][$type] = $path;
+        return $this;
+    }
+
     /**
      * Load event observers for an area (front, admin)
      *
diff --git a/app/code/core/Mage/Core/Model/Translate.php b/app/code/core/Mage/Core/Model/Translate.php
index 2a359cc762f75969cc7bbb266ac62d1fb39f0a54..dac9f88926ed53a8929eec77793c6d699ae5ef89 100644
--- a/app/code/core/Mage/Core/Model/Translate.php
+++ b/app/code/core/Mage/Core/Model/Translate.php
@@ -124,10 +124,10 @@ class Mage_Core_Model_Translate
             $this->_localeHierarchy = $data['locale_hierarchy'];
         } else {
             // Try to load locale inheritance from Magento configuration
-            $localeInheritanceNode = Mage::getConfig()->getNode(self::XML_PATH_LOCALE_INHERITANCE);
-            if ($localeInheritanceNode instanceof Varien_Simplexml_Element) {
+            $inheritanceNode = Mage::getConfig()->getNode(self::XML_PATH_LOCALE_INHERITANCE);
+            if ($inheritanceNode instanceof Varien_Simplexml_Element) {
                 $this->_localeHierarchy = Mage::helper('Mage_Core_Helper_Translate')->composeLocaleHierarchy(
-                    $localeInheritanceNode->asCanonicalArray()
+                    $inheritanceNode->asCanonicalArray()
                 );
             }
         }
@@ -330,8 +330,11 @@ class Mage_Core_Model_Translate
      */
     protected function _loadDbTranslation($forceReload = false)
     {
-        $arr = $this->getResource()->getTranslationArray(null, $this->getLocale());
-        $this->_addData($arr, $this->getConfig(self::CONFIG_KEY_STORE), $forceReload);
+        $requiredLocaleList = $this->_composeRequiredLocaleList($this->getLocale());
+        foreach ($requiredLocaleList as $locale) {
+            $arr = $this->getResource()->getTranslationArray(null, $locale);
+            $this->_addData($arr, $this->getConfig(self::CONFIG_KEY_STORE), $forceReload);
+        }
         return $this;
     }
 
@@ -345,7 +348,7 @@ class Mage_Core_Model_Translate
      */
     protected function _getModuleFilePath($module, $fileName, $locale)
     {
-        $file = Mage::getBaseDir('locale');
+        $file = Mage::getModuleDir('locale', $module);
         $file .= DS . $locale . DS . $fileName;
         return $file;
     }
diff --git a/app/locale/de_DE/Mage_Core.csv b/app/code/core/Mage/Core/locale/de_DE/Mage_Core.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/de_DE/Mage_Core.csv
diff --git a/app/locale/en_US/Mage_Core.csv b/app/code/core/Mage/Core/locale/en_US/Mage_Core.csv
similarity index 100%
rename from app/locale/en_US/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/en_US/Mage_Core.csv
diff --git a/app/locale/es_ES/Mage_Core.csv b/app/code/core/Mage/Core/locale/es_ES/Mage_Core.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/es_ES/Mage_Core.csv
diff --git a/app/locale/fr_FR/Mage_Core.csv b/app/code/core/Mage/Core/locale/fr_FR/Mage_Core.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/fr_FR/Mage_Core.csv
diff --git a/app/locale/nl_NL/Mage_Core.csv b/app/code/core/Mage/Core/locale/nl_NL/Mage_Core.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/nl_NL/Mage_Core.csv
diff --git a/app/locale/pt_BR/Mage_Core.csv b/app/code/core/Mage/Core/locale/pt_BR/Mage_Core.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/pt_BR/Mage_Core.csv
diff --git a/app/locale/zh_CN/Mage_Core.csv b/app/code/core/Mage/Core/locale/zh_CN/Mage_Core.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Core.csv
rename to app/code/core/Mage/Core/locale/zh_CN/Mage_Core.csv
diff --git a/app/locale/de_DE/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/de_DE/Mage_Cron.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/de_DE/Mage_Cron.csv
diff --git a/app/locale/en_US/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/en_US/Mage_Cron.csv
similarity index 100%
rename from app/locale/en_US/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/en_US/Mage_Cron.csv
diff --git a/app/locale/es_ES/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/es_ES/Mage_Cron.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/es_ES/Mage_Cron.csv
diff --git a/app/locale/fr_FR/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/fr_FR/Mage_Cron.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/fr_FR/Mage_Cron.csv
diff --git a/app/locale/nl_NL/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/nl_NL/Mage_Cron.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/nl_NL/Mage_Cron.csv
diff --git a/app/locale/pt_BR/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/pt_BR/Mage_Cron.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/pt_BR/Mage_Cron.csv
diff --git a/app/locale/zh_CN/Mage_Cron.csv b/app/code/core/Mage/Cron/locale/zh_CN/Mage_Cron.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Cron.csv
rename to app/code/core/Mage/Cron/locale/zh_CN/Mage_Cron.csv
diff --git a/app/locale/de_DE/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/de_DE/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/de_DE/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/de_DE/Mage_CurrencySymbol.csv
diff --git a/app/locale/en_US/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/en_US/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/en_US/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/en_US/Mage_CurrencySymbol.csv
diff --git a/app/locale/es_ES/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/es_ES/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/es_ES/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/es_ES/Mage_CurrencySymbol.csv
diff --git a/app/locale/fr_FR/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/fr_FR/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/fr_FR/Mage_CurrencySymbol.csv
diff --git a/app/locale/nl_NL/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/nl_NL/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/nl_NL/Mage_CurrencySymbol.csv
diff --git a/app/locale/pt_BR/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/pt_BR/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/pt_BR/Mage_CurrencySymbol.csv
diff --git a/app/locale/zh_CN/Mage_CurrencySymbol.csv b/app/code/core/Mage/CurrencySymbol/locale/zh_CN/Mage_CurrencySymbol.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_CurrencySymbol.csv
rename to app/code/core/Mage/CurrencySymbol/locale/zh_CN/Mage_CurrencySymbol.csv
diff --git a/app/locale/de_DE/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/de_DE/Mage_Customer.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/de_DE/Mage_Customer.csv
diff --git a/app/locale/en_US/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/en_US/Mage_Customer.csv
similarity index 100%
rename from app/locale/en_US/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/en_US/Mage_Customer.csv
diff --git a/app/locale/es_ES/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/es_ES/Mage_Customer.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/es_ES/Mage_Customer.csv
diff --git a/app/locale/fr_FR/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/fr_FR/Mage_Customer.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/fr_FR/Mage_Customer.csv
diff --git a/app/locale/nl_NL/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/nl_NL/Mage_Customer.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/nl_NL/Mage_Customer.csv
diff --git a/app/locale/pt_BR/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/pt_BR/Mage_Customer.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/pt_BR/Mage_Customer.csv
diff --git a/app/locale/zh_CN/Mage_Customer.csv b/app/code/core/Mage/Customer/locale/zh_CN/Mage_Customer.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Customer.csv
rename to app/code/core/Mage/Customer/locale/zh_CN/Mage_Customer.csv
diff --git a/app/locale/de_DE/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/de_DE/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/de_DE/Mage_Dataflow.csv
diff --git a/app/locale/en_US/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/en_US/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/en_US/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/en_US/Mage_Dataflow.csv
diff --git a/app/locale/es_ES/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/es_ES/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/es_ES/Mage_Dataflow.csv
diff --git a/app/locale/fr_FR/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/fr_FR/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/fr_FR/Mage_Dataflow.csv
diff --git a/app/locale/nl_NL/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/nl_NL/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/nl_NL/Mage_Dataflow.csv
diff --git a/app/locale/pt_BR/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/pt_BR/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/pt_BR/Mage_Dataflow.csv
diff --git a/app/locale/zh_CN/Mage_Dataflow.csv b/app/code/core/Mage/Dataflow/locale/zh_CN/Mage_Dataflow.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Dataflow.csv
rename to app/code/core/Mage/Dataflow/locale/zh_CN/Mage_Dataflow.csv
diff --git a/app/locale/de_DE/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/de_DE/Mage_Directory.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/de_DE/Mage_Directory.csv
diff --git a/app/locale/en_US/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/en_US/Mage_Directory.csv
similarity index 100%
rename from app/locale/en_US/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/en_US/Mage_Directory.csv
diff --git a/app/locale/es_ES/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/es_ES/Mage_Directory.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/es_ES/Mage_Directory.csv
diff --git a/app/locale/fr_FR/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/fr_FR/Mage_Directory.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/fr_FR/Mage_Directory.csv
diff --git a/app/locale/nl_NL/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/nl_NL/Mage_Directory.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/nl_NL/Mage_Directory.csv
diff --git a/app/locale/pt_BR/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/pt_BR/Mage_Directory.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/pt_BR/Mage_Directory.csv
diff --git a/app/locale/zh_CN/Mage_Directory.csv b/app/code/core/Mage/Directory/locale/zh_CN/Mage_Directory.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Directory.csv
rename to app/code/core/Mage/Directory/locale/zh_CN/Mage_Directory.csv
diff --git a/app/locale/de_DE/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/de_DE/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/de_DE/Mage_Downloadable.csv
diff --git a/app/locale/en_US/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/en_US/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/en_US/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/en_US/Mage_Downloadable.csv
diff --git a/app/locale/es_ES/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/es_ES/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/es_ES/Mage_Downloadable.csv
diff --git a/app/locale/fr_FR/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/fr_FR/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/fr_FR/Mage_Downloadable.csv
diff --git a/app/locale/nl_NL/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/nl_NL/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/nl_NL/Mage_Downloadable.csv
diff --git a/app/locale/pt_BR/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/pt_BR/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/pt_BR/Mage_Downloadable.csv
diff --git a/app/locale/zh_CN/Mage_Downloadable.csv b/app/code/core/Mage/Downloadable/locale/zh_CN/Mage_Downloadable.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Downloadable.csv
rename to app/code/core/Mage/Downloadable/locale/zh_CN/Mage_Downloadable.csv
diff --git a/app/locale/de_DE/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/de_DE/Mage_Eav.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/de_DE/Mage_Eav.csv
diff --git a/app/locale/en_US/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/en_US/Mage_Eav.csv
similarity index 100%
rename from app/locale/en_US/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/en_US/Mage_Eav.csv
diff --git a/app/locale/es_ES/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/es_ES/Mage_Eav.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/es_ES/Mage_Eav.csv
diff --git a/app/locale/fr_FR/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/fr_FR/Mage_Eav.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/fr_FR/Mage_Eav.csv
diff --git a/app/locale/nl_NL/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/nl_NL/Mage_Eav.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/nl_NL/Mage_Eav.csv
diff --git a/app/locale/pt_BR/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/pt_BR/Mage_Eav.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/pt_BR/Mage_Eav.csv
diff --git a/app/locale/zh_CN/Mage_Eav.csv b/app/code/core/Mage/Eav/locale/zh_CN/Mage_Eav.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Eav.csv
rename to app/code/core/Mage/Eav/locale/zh_CN/Mage_Eav.csv
diff --git a/app/locale/de_DE/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/de_DE/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/de_DE/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/de_DE/Mage_GiftMessage.csv
diff --git a/app/locale/en_US/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/en_US/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/en_US/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/en_US/Mage_GiftMessage.csv
diff --git a/app/locale/es_ES/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/es_ES/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/es_ES/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/es_ES/Mage_GiftMessage.csv
diff --git a/app/locale/fr_FR/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/fr_FR/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/fr_FR/Mage_GiftMessage.csv
diff --git a/app/locale/nl_NL/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/nl_NL/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/nl_NL/Mage_GiftMessage.csv
diff --git a/app/locale/pt_BR/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/pt_BR/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/pt_BR/Mage_GiftMessage.csv
diff --git a/app/locale/zh_CN/Mage_GiftMessage.csv b/app/code/core/Mage/GiftMessage/locale/zh_CN/Mage_GiftMessage.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_GiftMessage.csv
rename to app/code/core/Mage/GiftMessage/locale/zh_CN/Mage_GiftMessage.csv
diff --git a/app/locale/de_DE/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/de_DE/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/de_DE/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/de_DE/Mage_GoogleAnalytics.csv
diff --git a/app/locale/en_US/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/en_US/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/en_US/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/en_US/Mage_GoogleAnalytics.csv
diff --git a/app/locale/es_ES/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/es_ES/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/es_ES/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/es_ES/Mage_GoogleAnalytics.csv
diff --git a/app/locale/fr_FR/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/fr_FR/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/fr_FR/Mage_GoogleAnalytics.csv
diff --git a/app/locale/nl_NL/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/nl_NL/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/nl_NL/Mage_GoogleAnalytics.csv
diff --git a/app/locale/pt_BR/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/pt_BR/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/pt_BR/Mage_GoogleAnalytics.csv
diff --git a/app/locale/zh_CN/Mage_GoogleAnalytics.csv b/app/code/core/Mage/GoogleAnalytics/locale/zh_CN/Mage_GoogleAnalytics.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_GoogleAnalytics.csv
rename to app/code/core/Mage/GoogleAnalytics/locale/zh_CN/Mage_GoogleAnalytics.csv
diff --git a/app/locale/de_DE/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/de_DE/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/de_DE/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/de_DE/Mage_GoogleCheckout.csv
diff --git a/app/locale/en_US/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/en_US/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/en_US/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/en_US/Mage_GoogleCheckout.csv
diff --git a/app/locale/es_ES/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/es_ES/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/es_ES/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/es_ES/Mage_GoogleCheckout.csv
diff --git a/app/locale/fr_FR/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/fr_FR/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/fr_FR/Mage_GoogleCheckout.csv
diff --git a/app/locale/nl_NL/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/nl_NL/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/nl_NL/Mage_GoogleCheckout.csv
diff --git a/app/locale/pt_BR/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/pt_BR/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/pt_BR/Mage_GoogleCheckout.csv
diff --git a/app/locale/zh_CN/Mage_GoogleCheckout.csv b/app/code/core/Mage/GoogleCheckout/locale/zh_CN/Mage_GoogleCheckout.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_GoogleCheckout.csv
rename to app/code/core/Mage/GoogleCheckout/locale/zh_CN/Mage_GoogleCheckout.csv
diff --git a/app/locale/de_DE/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/de_DE/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/de_DE/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/de_DE/Mage_GoogleOptimizer.csv
diff --git a/app/locale/en_US/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/en_US/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/en_US/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/en_US/Mage_GoogleOptimizer.csv
diff --git a/app/locale/es_ES/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/es_ES/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/es_ES/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/es_ES/Mage_GoogleOptimizer.csv
diff --git a/app/locale/fr_FR/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/fr_FR/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/fr_FR/Mage_GoogleOptimizer.csv
diff --git a/app/locale/nl_NL/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/nl_NL/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/nl_NL/Mage_GoogleOptimizer.csv
diff --git a/app/locale/pt_BR/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/pt_BR/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/pt_BR/Mage_GoogleOptimizer.csv
diff --git a/app/locale/zh_CN/Mage_GoogleOptimizer.csv b/app/code/core/Mage/GoogleOptimizer/locale/zh_CN/Mage_GoogleOptimizer.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_GoogleOptimizer.csv
rename to app/code/core/Mage/GoogleOptimizer/locale/zh_CN/Mage_GoogleOptimizer.csv
diff --git a/app/locale/en_US/Mage_GoogleShopping.csv b/app/code/core/Mage/GoogleShopping/locale/en_US/Mage_GoogleShopping.csv
similarity index 100%
rename from app/locale/en_US/Mage_GoogleShopping.csv
rename to app/code/core/Mage/GoogleShopping/locale/en_US/Mage_GoogleShopping.csv
diff --git a/app/locale/de_DE/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/de_DE/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/de_DE/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/de_DE/Mage_ImportExport.csv
diff --git a/app/locale/en_US/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/en_US/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/en_US/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/en_US/Mage_ImportExport.csv
diff --git a/app/locale/es_ES/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/es_ES/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/es_ES/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/es_ES/Mage_ImportExport.csv
diff --git a/app/locale/fr_FR/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/fr_FR/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/fr_FR/Mage_ImportExport.csv
diff --git a/app/locale/nl_NL/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/nl_NL/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/nl_NL/Mage_ImportExport.csv
diff --git a/app/locale/pt_BR/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/pt_BR/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/pt_BR/Mage_ImportExport.csv
diff --git a/app/locale/zh_CN/Mage_ImportExport.csv b/app/code/core/Mage/ImportExport/locale/zh_CN/Mage_ImportExport.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_ImportExport.csv
rename to app/code/core/Mage/ImportExport/locale/zh_CN/Mage_ImportExport.csv
diff --git a/app/locale/de_DE/Mage_Index.csv b/app/code/core/Mage/Index/locale/de_DE/Mage_Index.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/de_DE/Mage_Index.csv
diff --git a/app/locale/en_US/Mage_Index.csv b/app/code/core/Mage/Index/locale/en_US/Mage_Index.csv
similarity index 100%
rename from app/locale/en_US/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/en_US/Mage_Index.csv
diff --git a/app/locale/es_ES/Mage_Index.csv b/app/code/core/Mage/Index/locale/es_ES/Mage_Index.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/es_ES/Mage_Index.csv
diff --git a/app/locale/fr_FR/Mage_Index.csv b/app/code/core/Mage/Index/locale/fr_FR/Mage_Index.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/fr_FR/Mage_Index.csv
diff --git a/app/locale/nl_NL/Mage_Index.csv b/app/code/core/Mage/Index/locale/nl_NL/Mage_Index.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/nl_NL/Mage_Index.csv
diff --git a/app/locale/pt_BR/Mage_Index.csv b/app/code/core/Mage/Index/locale/pt_BR/Mage_Index.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/pt_BR/Mage_Index.csv
diff --git a/app/locale/zh_CN/Mage_Index.csv b/app/code/core/Mage/Index/locale/zh_CN/Mage_Index.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Index.csv
rename to app/code/core/Mage/Index/locale/zh_CN/Mage_Index.csv
diff --git a/app/code/core/Mage/Install/Helper/Data.php b/app/code/core/Mage/Install/Helper/Data.php
index b70f8a373069b05afa3f25e0814d2de23290d198..fffbfdfa36e720795fd3121febfb47a76cb2fa05 100644
--- a/app/code/core/Mage/Install/Helper/Data.php
+++ b/app/code/core/Mage/Install/Helper/Data.php
@@ -29,5 +29,52 @@
  */
 class Mage_Install_Helper_Data extends Mage_Core_Helper_Abstract
 {
+    /**
+     * The list of var children directories that have to be cleaned before the install
+     *
+     * @var array
+     */
+    protected $_varSubFolders;
 
+    /**
+     * Delete all service folders from var directory
+     */
+    public function cleanVarFolder()
+    {
+        foreach ($this->getVarSubFolders() as $folder) {
+            Varien_Io_File::rmdirRecursive($folder);
+        }
+    }
+
+    /**
+     * Retrieve the list of service directories located in var folder
+     *
+     * @return array
+     */
+    public function getVarSubFolders()
+    {
+        if ($this->_varSubFolders == null) {
+            $this->_varSubFolders = array(
+                Mage::getConfig()->getTempVarDir() . DS . 'session',
+                Mage::getConfig()->getTempVarDir() . DS . 'cache',
+                Mage::getConfig()->getTempVarDir() . DS . 'locks',
+                Mage::getConfig()->getTempVarDir() . DS . 'log',
+                Mage::getConfig()->getTempVarDir() . DS . 'report',
+                Mage::getConfig()->getTempVarDir() . DS . 'maps'
+            );
+        }
+        return $this->_varSubFolders;
+    }
+
+    /**
+     * Set the list of service directories located in var folder
+     *
+     * @param array $varSubFolders
+     * @return Mage_Install_Helper_Data
+     */
+    public function setVarSubFolders(array $varSubFolders)
+    {
+        $this->_varSubFolders = $varSubFolders;
+        return $this;
+    }
 }
diff --git a/app/code/core/Mage/Install/Model/Installer/Abstract.php b/app/code/core/Mage/Install/Model/Installer/Abstract.php
index 57d4cf0d59f27168ae3d7ebc0c8bb19af9d48cde..1cb317b3f7ea272dc46ee0003a8c9fb4ae5bef08 100644
--- a/app/code/core/Mage/Install/Model/Installer/Abstract.php
+++ b/app/code/core/Mage/Install/Model/Installer/Abstract.php
@@ -74,20 +74,20 @@ class Mage_Install_Model_Installer_Abstract
     }
 
     /**
-     * Validate admin frontname value.
-     * If empty, "admin" will be returned
+     * Validate backend area frontname value.
+     * If empty, "backend" will be returned
      *
      * @param string $value
      * @return string
      * @throws Exception
      */
-    protected function _checkAdminFrontname($value)
+    protected function _checkBackendFrontname($value)
     {
         if (empty($value)) {
-            return 'admin';
+            return 'backend';
         }
-        if (!preg_match('/^[a-z]+[a-z0-9_]+$/i', $value)) {
-            throw new Exception('admin_frontname value must contain only letters (a-z or A-Z), numbers (0-9) or underscore(_), first character should be a letter.');
+        if (!preg_match('/^[a-z]+[a-z0-9_]+$/', $value)) {
+            throw new Exception('backend_frontname value must contain only letters (a-z), numbers (0-9) or underscore(_), first character should be a letter.');
         }
         return $value;
     }
diff --git a/app/code/core/Mage/Install/Model/Installer/Console.php b/app/code/core/Mage/Install/Model/Installer/Console.php
index 7b2d88a0e8091be2aeee1152bbcee91673f2ac07..c3e5a5958832a6bd996ec2f155c1bc19668a0c3d 100644
--- a/app/code/core/Mage/Install/Model/Installer/Console.php
+++ b/app/code/core/Mage/Install/Model/Installer/Console.php
@@ -59,7 +59,7 @@ class Mage_Install_Model_Installer_Console extends Mage_Install_Model_Installer_
         'admin_no_form_key'          => array('required' => 0),
         'encryption_key'             => array('required' => 0),
         'session_save'               => array('required' => 0),
-        'admin_frontname'            => array('required' => 0),
+        'backend_frontname'          => array('required' => 0),
         'enable_charts'              => array('required' => 0),
         'order_increment_prefix'     => array('required' => 0),
     );
@@ -229,7 +229,7 @@ class Mage_Install_Model_Installer_Console extends Mage_Install_Model_Installer_
                 'secure_base_url'        => $options['secure_base_url'],
                 'use_secure_admin'       => $this->_getFlagValue($options['use_secure_admin']),
                 'session_save'           => $this->_checkSessionSave($options['session_save']),
-                'admin_frontname'        => $this->_checkAdminFrontname($options['admin_frontname']),
+                'backend_frontname'      => $this->_checkBackendFrontname($options['backend_frontname']),
                 'admin_no_form_key'      => $this->_getFlagValue($options['admin_no_form_key']),
                 'skip_url_validation'    => $this->_getFlagValue($options['skip_url_validation']),
                 'enable_charts'          => $this->_getFlagValue($options['enable_charts']),
diff --git a/app/code/core/Mage/Install/controllers/IndexController.php b/app/code/core/Mage/Install/controllers/IndexController.php
index e4c04a0da160fe56bb31b0bc373f09ed13b14d9f..6b804121bed1bf3038d50f359add3dda732a1fa1 100644
--- a/app/code/core/Mage/Install/controllers/IndexController.php
+++ b/app/code/core/Mage/Install/controllers/IndexController.php
@@ -35,12 +35,23 @@
 class Mage_Install_IndexController extends Mage_Install_Controller_Action
 {
 
+    /**
+     * Dispatch event before action
+     *
+     * @return void
+     */
     public function preDispatch()
     {
         $this->setFlag('', self::FLAG_NO_CHECK_INSTALLATION, true);
+        if (!Mage::isInstalled()) {
+            Mage::helper('Mage_Install_Helper_Data')->cleanVarFolder();
+        }
         return parent::preDispatch();
     }
 
+    /**
+     * Index action
+     */
     function indexAction()
     {
         $this->_forward('begin', 'wizard', 'install');
diff --git a/app/locale/de_DE/Mage_Install.csv b/app/code/core/Mage/Install/locale/de_DE/Mage_Install.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/de_DE/Mage_Install.csv
diff --git a/app/locale/en_US/Mage_Install.csv b/app/code/core/Mage/Install/locale/en_US/Mage_Install.csv
similarity index 100%
rename from app/locale/en_US/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/en_US/Mage_Install.csv
diff --git a/app/locale/es_ES/Mage_Install.csv b/app/code/core/Mage/Install/locale/es_ES/Mage_Install.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/es_ES/Mage_Install.csv
diff --git a/app/locale/fr_FR/Mage_Install.csv b/app/code/core/Mage/Install/locale/fr_FR/Mage_Install.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/fr_FR/Mage_Install.csv
diff --git a/app/locale/nl_NL/Mage_Install.csv b/app/code/core/Mage/Install/locale/nl_NL/Mage_Install.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/nl_NL/Mage_Install.csv
diff --git a/app/locale/pt_BR/Mage_Install.csv b/app/code/core/Mage/Install/locale/pt_BR/Mage_Install.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/pt_BR/Mage_Install.csv
diff --git a/app/locale/zh_CN/Mage_Install.csv b/app/code/core/Mage/Install/locale/zh_CN/Mage_Install.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Install.csv
rename to app/code/core/Mage/Install/locale/zh_CN/Mage_Install.csv
diff --git a/app/locale/de_DE/Mage_Log.csv b/app/code/core/Mage/Log/locale/de_DE/Mage_Log.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/de_DE/Mage_Log.csv
diff --git a/app/locale/en_US/Mage_Log.csv b/app/code/core/Mage/Log/locale/en_US/Mage_Log.csv
similarity index 100%
rename from app/locale/en_US/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/en_US/Mage_Log.csv
diff --git a/app/locale/es_ES/Mage_Log.csv b/app/code/core/Mage/Log/locale/es_ES/Mage_Log.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/es_ES/Mage_Log.csv
diff --git a/app/locale/fr_FR/Mage_Log.csv b/app/code/core/Mage/Log/locale/fr_FR/Mage_Log.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/fr_FR/Mage_Log.csv
diff --git a/app/locale/nl_NL/Mage_Log.csv b/app/code/core/Mage/Log/locale/nl_NL/Mage_Log.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/nl_NL/Mage_Log.csv
diff --git a/app/locale/pt_BR/Mage_Log.csv b/app/code/core/Mage/Log/locale/pt_BR/Mage_Log.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/pt_BR/Mage_Log.csv
diff --git a/app/locale/zh_CN/Mage_Log.csv b/app/code/core/Mage/Log/locale/zh_CN/Mage_Log.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Log.csv
rename to app/code/core/Mage/Log/locale/zh_CN/Mage_Log.csv
diff --git a/app/locale/de_DE/Mage_Media.csv b/app/code/core/Mage/Media/locale/de_DE/Mage_Media.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/de_DE/Mage_Media.csv
diff --git a/app/locale/en_US/Mage_Media.csv b/app/code/core/Mage/Media/locale/en_US/Mage_Media.csv
similarity index 100%
rename from app/locale/en_US/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/en_US/Mage_Media.csv
diff --git a/app/locale/es_ES/Mage_Media.csv b/app/code/core/Mage/Media/locale/es_ES/Mage_Media.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/es_ES/Mage_Media.csv
diff --git a/app/locale/fr_FR/Mage_Media.csv b/app/code/core/Mage/Media/locale/fr_FR/Mage_Media.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/fr_FR/Mage_Media.csv
diff --git a/app/locale/nl_NL/Mage_Media.csv b/app/code/core/Mage/Media/locale/nl_NL/Mage_Media.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/nl_NL/Mage_Media.csv
diff --git a/app/locale/pt_BR/Mage_Media.csv b/app/code/core/Mage/Media/locale/pt_BR/Mage_Media.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/pt_BR/Mage_Media.csv
diff --git a/app/locale/zh_CN/Mage_Media.csv b/app/code/core/Mage/Media/locale/zh_CN/Mage_Media.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Media.csv
rename to app/code/core/Mage/Media/locale/zh_CN/Mage_Media.csv
diff --git a/app/locale/de_DE/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/de_DE/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/de_DE/Mage_Newsletter.csv
diff --git a/app/locale/en_US/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/en_US/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/en_US/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/en_US/Mage_Newsletter.csv
diff --git a/app/locale/es_ES/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/es_ES/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/es_ES/Mage_Newsletter.csv
diff --git a/app/locale/fr_FR/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/fr_FR/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/fr_FR/Mage_Newsletter.csv
diff --git a/app/locale/nl_NL/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/nl_NL/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/nl_NL/Mage_Newsletter.csv
diff --git a/app/locale/pt_BR/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/pt_BR/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/pt_BR/Mage_Newsletter.csv
diff --git a/app/locale/zh_CN/Mage_Newsletter.csv b/app/code/core/Mage/Newsletter/locale/zh_CN/Mage_Newsletter.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Newsletter.csv
rename to app/code/core/Mage/Newsletter/locale/zh_CN/Mage_Newsletter.csv
diff --git a/app/locale/de_DE/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/de_DE/Mage_Oauth.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/de_DE/Mage_Oauth.csv
diff --git a/app/locale/en_US/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/en_US/Mage_Oauth.csv
similarity index 100%
rename from app/locale/en_US/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/en_US/Mage_Oauth.csv
diff --git a/app/locale/es_ES/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/es_ES/Mage_Oauth.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/es_ES/Mage_Oauth.csv
diff --git a/app/locale/fr_FR/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/fr_FR/Mage_Oauth.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/fr_FR/Mage_Oauth.csv
diff --git a/app/locale/nl_NL/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/nl_NL/Mage_Oauth.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/nl_NL/Mage_Oauth.csv
diff --git a/app/locale/pt_BR/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/pt_BR/Mage_Oauth.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/pt_BR/Mage_Oauth.csv
diff --git a/app/locale/zh_CN/Mage_Oauth.csv b/app/code/core/Mage/Oauth/locale/zh_CN/Mage_Oauth.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Oauth.csv
rename to app/code/core/Mage/Oauth/locale/zh_CN/Mage_Oauth.csv
diff --git a/app/locale/de_DE/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/de_DE/Mage_Ogone.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/de_DE/Mage_Ogone.csv
diff --git a/app/locale/en_US/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/en_US/Mage_Ogone.csv
similarity index 100%
rename from app/locale/en_US/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/en_US/Mage_Ogone.csv
diff --git a/app/locale/es_ES/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/es_ES/Mage_Ogone.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/es_ES/Mage_Ogone.csv
diff --git a/app/locale/fr_FR/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/fr_FR/Mage_Ogone.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/fr_FR/Mage_Ogone.csv
diff --git a/app/locale/nl_NL/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/nl_NL/Mage_Ogone.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/nl_NL/Mage_Ogone.csv
diff --git a/app/locale/pt_BR/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/pt_BR/Mage_Ogone.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/pt_BR/Mage_Ogone.csv
diff --git a/app/locale/zh_CN/Mage_Ogone.csv b/app/code/core/Mage/Ogone/locale/zh_CN/Mage_Ogone.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Ogone.csv
rename to app/code/core/Mage/Ogone/locale/zh_CN/Mage_Ogone.csv
diff --git a/app/locale/de_DE/Mage_Page.csv b/app/code/core/Mage/Page/locale/de_DE/Mage_Page.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/de_DE/Mage_Page.csv
diff --git a/app/locale/en_US/Mage_Page.csv b/app/code/core/Mage/Page/locale/en_US/Mage_Page.csv
similarity index 100%
rename from app/locale/en_US/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/en_US/Mage_Page.csv
diff --git a/app/locale/es_ES/Mage_Page.csv b/app/code/core/Mage/Page/locale/es_ES/Mage_Page.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/es_ES/Mage_Page.csv
diff --git a/app/locale/fr_FR/Mage_Page.csv b/app/code/core/Mage/Page/locale/fr_FR/Mage_Page.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/fr_FR/Mage_Page.csv
diff --git a/app/locale/nl_NL/Mage_Page.csv b/app/code/core/Mage/Page/locale/nl_NL/Mage_Page.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/nl_NL/Mage_Page.csv
diff --git a/app/locale/pt_BR/Mage_Page.csv b/app/code/core/Mage/Page/locale/pt_BR/Mage_Page.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/pt_BR/Mage_Page.csv
diff --git a/app/locale/zh_CN/Mage_Page.csv b/app/code/core/Mage/Page/locale/zh_CN/Mage_Page.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Page.csv
rename to app/code/core/Mage/Page/locale/zh_CN/Mage_Page.csv
diff --git a/app/locale/de_DE/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/de_DE/Mage_PageCache.csv
similarity index 100%
rename from app/locale/de_DE/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/de_DE/Mage_PageCache.csv
diff --git a/app/locale/en_US/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/en_US/Mage_PageCache.csv
similarity index 100%
rename from app/locale/en_US/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/en_US/Mage_PageCache.csv
diff --git a/app/locale/es_ES/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/es_ES/Mage_PageCache.csv
similarity index 100%
rename from app/locale/es_ES/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/es_ES/Mage_PageCache.csv
diff --git a/app/locale/fr_FR/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/fr_FR/Mage_PageCache.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/fr_FR/Mage_PageCache.csv
diff --git a/app/locale/nl_NL/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/nl_NL/Mage_PageCache.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/nl_NL/Mage_PageCache.csv
diff --git a/app/locale/pt_BR/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/pt_BR/Mage_PageCache.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/pt_BR/Mage_PageCache.csv
diff --git a/app/locale/zh_CN/Mage_PageCache.csv b/app/code/core/Mage/PageCache/locale/zh_CN/Mage_PageCache.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_PageCache.csv
rename to app/code/core/Mage/PageCache/locale/zh_CN/Mage_PageCache.csv
diff --git a/app/locale/de_DE/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/de_DE/Mage_Paygate.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/de_DE/Mage_Paygate.csv
diff --git a/app/locale/en_US/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/en_US/Mage_Paygate.csv
similarity index 100%
rename from app/locale/en_US/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/en_US/Mage_Paygate.csv
diff --git a/app/locale/es_ES/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/es_ES/Mage_Paygate.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/es_ES/Mage_Paygate.csv
diff --git a/app/locale/fr_FR/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/fr_FR/Mage_Paygate.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/fr_FR/Mage_Paygate.csv
diff --git a/app/locale/nl_NL/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/nl_NL/Mage_Paygate.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/nl_NL/Mage_Paygate.csv
diff --git a/app/locale/pt_BR/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/pt_BR/Mage_Paygate.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/pt_BR/Mage_Paygate.csv
diff --git a/app/locale/zh_CN/Mage_Paygate.csv b/app/code/core/Mage/Paygate/locale/zh_CN/Mage_Paygate.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Paygate.csv
rename to app/code/core/Mage/Paygate/locale/zh_CN/Mage_Paygate.csv
diff --git a/app/locale/de_DE/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/de_DE/Mage_Payment.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/de_DE/Mage_Payment.csv
diff --git a/app/locale/en_US/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/en_US/Mage_Payment.csv
similarity index 100%
rename from app/locale/en_US/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/en_US/Mage_Payment.csv
diff --git a/app/locale/es_ES/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/es_ES/Mage_Payment.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/es_ES/Mage_Payment.csv
diff --git a/app/locale/fr_FR/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/fr_FR/Mage_Payment.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/fr_FR/Mage_Payment.csv
diff --git a/app/locale/nl_NL/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/nl_NL/Mage_Payment.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/nl_NL/Mage_Payment.csv
diff --git a/app/locale/pt_BR/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/pt_BR/Mage_Payment.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/pt_BR/Mage_Payment.csv
diff --git a/app/locale/zh_CN/Mage_Payment.csv b/app/code/core/Mage/Payment/locale/zh_CN/Mage_Payment.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Payment.csv
rename to app/code/core/Mage/Payment/locale/zh_CN/Mage_Payment.csv
diff --git a/app/locale/de_DE/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/de_DE/Mage_Paypal.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/de_DE/Mage_Paypal.csv
diff --git a/app/locale/en_US/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/en_US/Mage_Paypal.csv
similarity index 100%
rename from app/locale/en_US/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/en_US/Mage_Paypal.csv
diff --git a/app/locale/es_ES/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/es_ES/Mage_Paypal.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/es_ES/Mage_Paypal.csv
diff --git a/app/locale/fr_FR/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/fr_FR/Mage_Paypal.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/fr_FR/Mage_Paypal.csv
diff --git a/app/locale/nl_NL/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/nl_NL/Mage_Paypal.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/nl_NL/Mage_Paypal.csv
diff --git a/app/locale/pt_BR/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/pt_BR/Mage_Paypal.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/pt_BR/Mage_Paypal.csv
diff --git a/app/locale/zh_CN/Mage_Paypal.csv b/app/code/core/Mage/Paypal/locale/zh_CN/Mage_Paypal.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Paypal.csv
rename to app/code/core/Mage/Paypal/locale/zh_CN/Mage_Paypal.csv
diff --git a/app/locale/de_DE/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/de_DE/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/de_DE/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/de_DE/Mage_PaypalUk.csv
diff --git a/app/locale/en_US/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/en_US/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/en_US/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/en_US/Mage_PaypalUk.csv
diff --git a/app/locale/es_ES/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/es_ES/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/es_ES/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/es_ES/Mage_PaypalUk.csv
diff --git a/app/locale/fr_FR/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/fr_FR/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/fr_FR/Mage_PaypalUk.csv
diff --git a/app/locale/nl_NL/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/nl_NL/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/nl_NL/Mage_PaypalUk.csv
diff --git a/app/locale/pt_BR/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/pt_BR/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/pt_BR/Mage_PaypalUk.csv
diff --git a/app/locale/zh_CN/Mage_PaypalUk.csv b/app/code/core/Mage/PaypalUk/locale/zh_CN/Mage_PaypalUk.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_PaypalUk.csv
rename to app/code/core/Mage/PaypalUk/locale/zh_CN/Mage_PaypalUk.csv
diff --git a/app/locale/de_DE/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/de_DE/Mage_Persistent.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/de_DE/Mage_Persistent.csv
diff --git a/app/locale/en_US/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/en_US/Mage_Persistent.csv
similarity index 100%
rename from app/locale/en_US/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/en_US/Mage_Persistent.csv
diff --git a/app/locale/es_ES/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/es_ES/Mage_Persistent.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/es_ES/Mage_Persistent.csv
diff --git a/app/locale/fr_FR/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/fr_FR/Mage_Persistent.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/fr_FR/Mage_Persistent.csv
diff --git a/app/locale/nl_NL/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/nl_NL/Mage_Persistent.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/nl_NL/Mage_Persistent.csv
diff --git a/app/locale/pt_BR/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/pt_BR/Mage_Persistent.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/pt_BR/Mage_Persistent.csv
diff --git a/app/locale/zh_CN/Mage_Persistent.csv b/app/code/core/Mage/Persistent/locale/zh_CN/Mage_Persistent.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Persistent.csv
rename to app/code/core/Mage/Persistent/locale/zh_CN/Mage_Persistent.csv
diff --git a/app/locale/de_DE/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/de_DE/Mage_Poll.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/de_DE/Mage_Poll.csv
diff --git a/app/locale/en_US/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/en_US/Mage_Poll.csv
similarity index 100%
rename from app/locale/en_US/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/en_US/Mage_Poll.csv
diff --git a/app/locale/es_ES/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/es_ES/Mage_Poll.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/es_ES/Mage_Poll.csv
diff --git a/app/locale/fr_FR/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/fr_FR/Mage_Poll.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/fr_FR/Mage_Poll.csv
diff --git a/app/locale/nl_NL/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/nl_NL/Mage_Poll.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/nl_NL/Mage_Poll.csv
diff --git a/app/locale/pt_BR/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/pt_BR/Mage_Poll.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/pt_BR/Mage_Poll.csv
diff --git a/app/locale/zh_CN/Mage_Poll.csv b/app/code/core/Mage/Poll/locale/zh_CN/Mage_Poll.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Poll.csv
rename to app/code/core/Mage/Poll/locale/zh_CN/Mage_Poll.csv
diff --git a/app/locale/de_DE/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/de_DE/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/de_DE/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/de_DE/Mage_ProductAlert.csv
diff --git a/app/locale/en_US/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/en_US/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/en_US/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/en_US/Mage_ProductAlert.csv
diff --git a/app/locale/es_ES/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/es_ES/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/es_ES/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/es_ES/Mage_ProductAlert.csv
diff --git a/app/locale/fr_FR/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/fr_FR/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/fr_FR/Mage_ProductAlert.csv
diff --git a/app/locale/nl_NL/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/nl_NL/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/nl_NL/Mage_ProductAlert.csv
diff --git a/app/locale/pt_BR/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/pt_BR/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/pt_BR/Mage_ProductAlert.csv
diff --git a/app/locale/zh_CN/Mage_ProductAlert.csv b/app/code/core/Mage/ProductAlert/locale/zh_CN/Mage_ProductAlert.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_ProductAlert.csv
rename to app/code/core/Mage/ProductAlert/locale/zh_CN/Mage_ProductAlert.csv
diff --git a/app/locale/de_DE/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/de_DE/Mage_Rating.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/de_DE/Mage_Rating.csv
diff --git a/app/locale/en_US/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/en_US/Mage_Rating.csv
similarity index 100%
rename from app/locale/en_US/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/en_US/Mage_Rating.csv
diff --git a/app/locale/es_ES/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/es_ES/Mage_Rating.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/es_ES/Mage_Rating.csv
diff --git a/app/locale/fr_FR/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/fr_FR/Mage_Rating.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/fr_FR/Mage_Rating.csv
diff --git a/app/locale/nl_NL/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/nl_NL/Mage_Rating.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/nl_NL/Mage_Rating.csv
diff --git a/app/locale/pt_BR/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/pt_BR/Mage_Rating.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/pt_BR/Mage_Rating.csv
diff --git a/app/locale/zh_CN/Mage_Rating.csv b/app/code/core/Mage/Rating/locale/zh_CN/Mage_Rating.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Rating.csv
rename to app/code/core/Mage/Rating/locale/zh_CN/Mage_Rating.csv
diff --git a/app/locale/de_DE/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/de_DE/Mage_Reports.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/de_DE/Mage_Reports.csv
diff --git a/app/locale/en_US/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/en_US/Mage_Reports.csv
similarity index 100%
rename from app/locale/en_US/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/en_US/Mage_Reports.csv
diff --git a/app/locale/es_ES/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/es_ES/Mage_Reports.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/es_ES/Mage_Reports.csv
diff --git a/app/locale/fr_FR/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/fr_FR/Mage_Reports.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/fr_FR/Mage_Reports.csv
diff --git a/app/locale/nl_NL/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/nl_NL/Mage_Reports.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/nl_NL/Mage_Reports.csv
diff --git a/app/locale/pt_BR/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/pt_BR/Mage_Reports.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/pt_BR/Mage_Reports.csv
diff --git a/app/locale/zh_CN/Mage_Reports.csv b/app/code/core/Mage/Reports/locale/zh_CN/Mage_Reports.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Reports.csv
rename to app/code/core/Mage/Reports/locale/zh_CN/Mage_Reports.csv
diff --git a/app/code/core/Mage/Review/Helper/Action/Pager.php b/app/code/core/Mage/Review/Helper/Action/Pager.php
new file mode 100644
index 0000000000000000000000000000000000000000..4929b807f414f945235ae68279048ce7068c42da
--- /dev/null
+++ b/app/code/core/Mage/Review/Helper/Action/Pager.php
@@ -0,0 +1,147 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Mage
+ * @package     Mage_Review
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Action pager helper for iterating over search results
+ *
+ * @author      Magento Core Team <core@magentocommerce.com>
+ */
+class Mage_Review_Helper_Action_Pager extends Mage_Core_Helper_Abstract
+{
+    const STORAGE_PREFIX = 'search_result_ids';
+
+    /**
+     * @var int
+     */
+    protected $_storageId = null;
+
+    /**
+     * @var array
+     */
+    protected $_items = null;
+
+    /**
+     * Set storage id
+     *
+     * @param $storageId
+     */
+    public function setStorageId($storageId)
+    {
+        $this->_storageId = $storageId;
+    }
+
+    /**
+     * Set items to storage
+     *
+     * @param array $items
+     * @return Mage_Review_Helper_Action_Pager
+     */
+    public function setItems(array $items)
+    {
+        $this->_items = $items;
+        $this->_getSession()->setData($this->_getStorageKey(), $this->_items);
+
+        return $this;
+    }
+
+    /**
+     * Load stored items
+     */
+    protected function _loadItems()
+    {
+        if (is_null($this->_items)) {
+            $this->_items = (array) $this->_getSession()->getData($this->_getStorageKey());
+        }
+    }
+
+    /**
+     * Get next item id
+     *
+     * @param int $id
+     * @return int|bool
+     */
+    public function getNextItemId($id)
+    {
+        $position = $this->_findItemPositionByValue($id);
+        if ($position === false || $position == count($this->_items) - 1) {
+            return false;
+        }
+
+        return $this->_items[$position + 1];
+    }
+
+    /**
+     * Get previous item id
+     *
+     * @param int $id
+     * @return int|bool
+     */
+    public function getPreviousItemId($id)
+    {
+        $position = $this->_findItemPositionByValue($id);
+        if ($position === false || $position == 0) {
+            return false;
+        }
+
+        return $this->_items[$position - 1];
+    }
+
+    /**
+     *
+     *
+     * @param mixed $value
+     * @return int|bool
+     */
+    protected function _findItemPositionByValue($value)
+    {
+        $this->_loadItems();
+        return array_search($value, $this->_items);
+    }
+
+    /**
+     * Get storage key
+     *
+     * @return string
+     */
+    protected function _getStorageKey()
+    {
+        if (!$this->_storageId) {
+            Mage::throwException($this->__('Storage key was not set'));
+        }
+
+        return self::STORAGE_PREFIX . $this->_storageId;
+    }
+
+    /**
+     * Get session
+     *
+     * @return Mage_Backend_Model_Session
+     */
+    protected function _getSession()
+    {
+        return Mage::getSingleton('Mage_Backend_Model_Session');
+    }
+}
diff --git a/app/code/core/Mage/Review/Model/Resource/Review/Product/Collection.php b/app/code/core/Mage/Review/Model/Resource/Review/Product/Collection.php
index fb9bb73248790bdba1ba3955353308841e679b35..c63c28901873ef5b66f4a48c9663132494e2801e 100755
--- a/app/code/core/Mage/Review/Model/Resource/Review/Product/Collection.php
+++ b/app/code/core/Mage/Review/Model/Resource/Review/Product/Collection.php
@@ -310,6 +310,21 @@ class Mage_Review_Model_Resource_Review_Product_Collection extends Mage_Catalog_
         return $this->getConnection()->fetchCol($idsSelect);
     }
 
+    /**
+     * Get result sorted ids
+     *
+     * @return array
+     */
+    public function getResultingIds()
+    {
+        $idsSelect = clone $this->getSelect();
+        $idsSelect->reset(Zend_Db_Select::LIMIT_COUNT);
+        $idsSelect->reset(Zend_Db_Select::LIMIT_OFFSET);
+        $idsSelect->reset(Zend_Db_Select::COLUMNS);
+        $idsSelect->columns('rt.review_id');
+        return $this->getConnection()->fetchCol($idsSelect);
+    }
+
     /**
      * Render SQL for retrieve product count
      *
diff --git a/app/locale/de_DE/Mage_Review.csv b/app/code/core/Mage/Review/locale/de_DE/Mage_Review.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/de_DE/Mage_Review.csv
diff --git a/app/locale/en_US/Mage_Review.csv b/app/code/core/Mage/Review/locale/en_US/Mage_Review.csv
similarity index 100%
rename from app/locale/en_US/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/en_US/Mage_Review.csv
diff --git a/app/locale/es_ES/Mage_Review.csv b/app/code/core/Mage/Review/locale/es_ES/Mage_Review.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/es_ES/Mage_Review.csv
diff --git a/app/locale/fr_FR/Mage_Review.csv b/app/code/core/Mage/Review/locale/fr_FR/Mage_Review.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/fr_FR/Mage_Review.csv
diff --git a/app/locale/nl_NL/Mage_Review.csv b/app/code/core/Mage/Review/locale/nl_NL/Mage_Review.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/nl_NL/Mage_Review.csv
diff --git a/app/locale/pt_BR/Mage_Review.csv b/app/code/core/Mage/Review/locale/pt_BR/Mage_Review.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/pt_BR/Mage_Review.csv
diff --git a/app/locale/zh_CN/Mage_Review.csv b/app/code/core/Mage/Review/locale/zh_CN/Mage_Review.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Review.csv
rename to app/code/core/Mage/Review/locale/zh_CN/Mage_Review.csv
diff --git a/app/locale/de_DE/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/de_DE/Mage_Rss.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/de_DE/Mage_Rss.csv
diff --git a/app/locale/en_US/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/en_US/Mage_Rss.csv
similarity index 100%
rename from app/locale/en_US/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/en_US/Mage_Rss.csv
diff --git a/app/locale/es_ES/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/es_ES/Mage_Rss.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/es_ES/Mage_Rss.csv
diff --git a/app/locale/fr_FR/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/fr_FR/Mage_Rss.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/fr_FR/Mage_Rss.csv
diff --git a/app/locale/nl_NL/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/nl_NL/Mage_Rss.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/nl_NL/Mage_Rss.csv
diff --git a/app/locale/pt_BR/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/pt_BR/Mage_Rss.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/pt_BR/Mage_Rss.csv
diff --git a/app/locale/zh_CN/Mage_Rss.csv b/app/code/core/Mage/Rss/locale/zh_CN/Mage_Rss.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Rss.csv
rename to app/code/core/Mage/Rss/locale/zh_CN/Mage_Rss.csv
diff --git a/app/locale/de_DE/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/de_DE/Mage_Rule.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/de_DE/Mage_Rule.csv
diff --git a/app/locale/en_US/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/en_US/Mage_Rule.csv
similarity index 100%
rename from app/locale/en_US/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/en_US/Mage_Rule.csv
diff --git a/app/locale/es_ES/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/es_ES/Mage_Rule.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/es_ES/Mage_Rule.csv
diff --git a/app/locale/fr_FR/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/fr_FR/Mage_Rule.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/fr_FR/Mage_Rule.csv
diff --git a/app/locale/nl_NL/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/nl_NL/Mage_Rule.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/nl_NL/Mage_Rule.csv
diff --git a/app/locale/pt_BR/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/pt_BR/Mage_Rule.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/pt_BR/Mage_Rule.csv
diff --git a/app/locale/zh_CN/Mage_Rule.csv b/app/code/core/Mage/Rule/locale/zh_CN/Mage_Rule.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Rule.csv
rename to app/code/core/Mage/Rule/locale/zh_CN/Mage_Rule.csv
diff --git a/app/locale/de_DE/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/de_DE/Mage_Sales.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/de_DE/Mage_Sales.csv
diff --git a/app/locale/en_US/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/en_US/Mage_Sales.csv
similarity index 100%
rename from app/locale/en_US/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/en_US/Mage_Sales.csv
diff --git a/app/locale/es_ES/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/es_ES/Mage_Sales.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/es_ES/Mage_Sales.csv
diff --git a/app/locale/fr_FR/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/fr_FR/Mage_Sales.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/fr_FR/Mage_Sales.csv
diff --git a/app/locale/nl_NL/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/nl_NL/Mage_Sales.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/nl_NL/Mage_Sales.csv
diff --git a/app/locale/pt_BR/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/pt_BR/Mage_Sales.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/pt_BR/Mage_Sales.csv
diff --git a/app/locale/zh_CN/Mage_Sales.csv b/app/code/core/Mage/Sales/locale/zh_CN/Mage_Sales.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Sales.csv
rename to app/code/core/Mage/Sales/locale/zh_CN/Mage_Sales.csv
diff --git a/app/code/core/Mage/Sales/view/frontend/guest/form.phtml b/app/code/core/Mage/Sales/view/frontend/guest/form.phtml
index 544335d1b3cc2cdb38fa948e6e9d17adf81ec214..a599e42f8ee82de591621b52bfa47529f2f8ae5e 100644
--- a/app/code/core/Mage/Sales/view/frontend/guest/form.phtml
+++ b/app/code/core/Mage/Sales/view/frontend/guest/form.phtml
@@ -57,8 +57,8 @@
                </div>
                <div class="input-box" style="float:left;width:305px;">
                    <select name="oar_type" id="quick_search_type_id" class="select guest-select" title="" onchange="showIdentifyBlock(this.value);">
-                       <option value="email">Email Address</option>
-                       <option value="zip">ZIP Code</option>
+                       <option value="email"><?php echo Mage::helper('Mage_Sales_Helper_Data')->__('Email Address'); ?></option>
+                       <option value="zip"><?php echo Mage::helper('Mage_Sales_Helper_Data')->__('ZIP Code'); ?></option>
                    </select>
                </div>
            </li>
diff --git a/app/locale/de_DE/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/de_DE/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/de_DE/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/de_DE/Mage_SalesRule.csv
diff --git a/app/locale/en_US/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/en_US/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/en_US/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/en_US/Mage_SalesRule.csv
diff --git a/app/locale/es_ES/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/es_ES/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/es_ES/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/es_ES/Mage_SalesRule.csv
diff --git a/app/locale/fr_FR/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/fr_FR/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/fr_FR/Mage_SalesRule.csv
diff --git a/app/locale/nl_NL/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/nl_NL/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/nl_NL/Mage_SalesRule.csv
diff --git a/app/locale/pt_BR/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/pt_BR/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/pt_BR/Mage_SalesRule.csv
diff --git a/app/locale/zh_CN/Mage_SalesRule.csv b/app/code/core/Mage/SalesRule/locale/zh_CN/Mage_SalesRule.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_SalesRule.csv
rename to app/code/core/Mage/SalesRule/locale/zh_CN/Mage_SalesRule.csv
diff --git a/app/locale/de_DE/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/de_DE/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/de_DE/Mage_Sendfriend.csv
diff --git a/app/locale/en_US/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/en_US/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/en_US/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/en_US/Mage_Sendfriend.csv
diff --git a/app/locale/es_ES/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/es_ES/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/es_ES/Mage_Sendfriend.csv
diff --git a/app/locale/fr_FR/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/fr_FR/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/fr_FR/Mage_Sendfriend.csv
diff --git a/app/locale/nl_NL/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/nl_NL/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/nl_NL/Mage_Sendfriend.csv
diff --git a/app/locale/pt_BR/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/pt_BR/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/pt_BR/Mage_Sendfriend.csv
diff --git a/app/locale/zh_CN/Mage_Sendfriend.csv b/app/code/core/Mage/Sendfriend/locale/zh_CN/Mage_Sendfriend.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Sendfriend.csv
rename to app/code/core/Mage/Sendfriend/locale/zh_CN/Mage_Sendfriend.csv
diff --git a/app/locale/de_DE/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/de_DE/Mage_Shipping.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/de_DE/Mage_Shipping.csv
diff --git a/app/locale/en_US/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/en_US/Mage_Shipping.csv
similarity index 100%
rename from app/locale/en_US/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/en_US/Mage_Shipping.csv
diff --git a/app/locale/es_ES/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/es_ES/Mage_Shipping.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/es_ES/Mage_Shipping.csv
diff --git a/app/locale/fr_FR/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/fr_FR/Mage_Shipping.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/fr_FR/Mage_Shipping.csv
diff --git a/app/locale/nl_NL/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/nl_NL/Mage_Shipping.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/nl_NL/Mage_Shipping.csv
diff --git a/app/locale/pt_BR/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/pt_BR/Mage_Shipping.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/pt_BR/Mage_Shipping.csv
diff --git a/app/locale/zh_CN/Mage_Shipping.csv b/app/code/core/Mage/Shipping/locale/zh_CN/Mage_Shipping.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Shipping.csv
rename to app/code/core/Mage/Shipping/locale/zh_CN/Mage_Shipping.csv
diff --git a/app/locale/de_DE/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/de_DE/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/de_DE/Mage_Sitemap.csv
diff --git a/app/locale/en_US/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/en_US/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/en_US/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/en_US/Mage_Sitemap.csv
diff --git a/app/locale/es_ES/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/es_ES/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/es_ES/Mage_Sitemap.csv
diff --git a/app/locale/fr_FR/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/fr_FR/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/fr_FR/Mage_Sitemap.csv
diff --git a/app/locale/nl_NL/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/nl_NL/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/nl_NL/Mage_Sitemap.csv
diff --git a/app/locale/pt_BR/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/pt_BR/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/pt_BR/Mage_Sitemap.csv
diff --git a/app/locale/zh_CN/Mage_Sitemap.csv b/app/code/core/Mage/Sitemap/locale/zh_CN/Mage_Sitemap.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Sitemap.csv
rename to app/code/core/Mage/Sitemap/locale/zh_CN/Mage_Sitemap.csv
diff --git a/app/locale/de_DE/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/de_DE/Mage_Tag.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/de_DE/Mage_Tag.csv
diff --git a/app/locale/en_US/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/en_US/Mage_Tag.csv
similarity index 100%
rename from app/locale/en_US/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/en_US/Mage_Tag.csv
diff --git a/app/locale/es_ES/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/es_ES/Mage_Tag.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/es_ES/Mage_Tag.csv
diff --git a/app/locale/fr_FR/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/fr_FR/Mage_Tag.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/fr_FR/Mage_Tag.csv
diff --git a/app/locale/nl_NL/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/nl_NL/Mage_Tag.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/nl_NL/Mage_Tag.csv
diff --git a/app/locale/pt_BR/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/pt_BR/Mage_Tag.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/pt_BR/Mage_Tag.csv
diff --git a/app/locale/zh_CN/Mage_Tag.csv b/app/code/core/Mage/Tag/locale/zh_CN/Mage_Tag.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Tag.csv
rename to app/code/core/Mage/Tag/locale/zh_CN/Mage_Tag.csv
diff --git a/app/locale/de_DE/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/de_DE/Mage_Tax.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/de_DE/Mage_Tax.csv
diff --git a/app/locale/en_US/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/en_US/Mage_Tax.csv
similarity index 100%
rename from app/locale/en_US/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/en_US/Mage_Tax.csv
diff --git a/app/locale/es_ES/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/es_ES/Mage_Tax.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/es_ES/Mage_Tax.csv
diff --git a/app/locale/fr_FR/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/fr_FR/Mage_Tax.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/fr_FR/Mage_Tax.csv
diff --git a/app/locale/nl_NL/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/nl_NL/Mage_Tax.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/nl_NL/Mage_Tax.csv
diff --git a/app/locale/pt_BR/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/pt_BR/Mage_Tax.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/pt_BR/Mage_Tax.csv
diff --git a/app/locale/zh_CN/Mage_Tax.csv b/app/code/core/Mage/Tax/locale/zh_CN/Mage_Tax.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Tax.csv
rename to app/code/core/Mage/Tax/locale/zh_CN/Mage_Tax.csv
diff --git a/app/locale/de_DE/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/de_DE/Mage_Usa.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/de_DE/Mage_Usa.csv
diff --git a/app/locale/en_US/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/en_US/Mage_Usa.csv
similarity index 100%
rename from app/locale/en_US/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/en_US/Mage_Usa.csv
diff --git a/app/locale/es_ES/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/es_ES/Mage_Usa.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/es_ES/Mage_Usa.csv
diff --git a/app/locale/fr_FR/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/fr_FR/Mage_Usa.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/fr_FR/Mage_Usa.csv
diff --git a/app/locale/nl_NL/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/nl_NL/Mage_Usa.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/nl_NL/Mage_Usa.csv
diff --git a/app/locale/pt_BR/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/pt_BR/Mage_Usa.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/pt_BR/Mage_Usa.csv
diff --git a/app/locale/zh_CN/Mage_Usa.csv b/app/code/core/Mage/Usa/locale/zh_CN/Mage_Usa.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Usa.csv
rename to app/code/core/Mage/Usa/locale/zh_CN/Mage_Usa.csv
diff --git a/app/locale/de_DE/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/de_DE/Mage_Weee.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/de_DE/Mage_Weee.csv
diff --git a/app/locale/en_US/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/en_US/Mage_Weee.csv
similarity index 100%
rename from app/locale/en_US/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/en_US/Mage_Weee.csv
diff --git a/app/locale/es_ES/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/es_ES/Mage_Weee.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/es_ES/Mage_Weee.csv
diff --git a/app/locale/fr_FR/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/fr_FR/Mage_Weee.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/fr_FR/Mage_Weee.csv
diff --git a/app/locale/nl_NL/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/nl_NL/Mage_Weee.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/nl_NL/Mage_Weee.csv
diff --git a/app/locale/pt_BR/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/pt_BR/Mage_Weee.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/pt_BR/Mage_Weee.csv
diff --git a/app/locale/zh_CN/Mage_Weee.csv b/app/code/core/Mage/Weee/locale/zh_CN/Mage_Weee.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Weee.csv
rename to app/code/core/Mage/Weee/locale/zh_CN/Mage_Weee.csv
diff --git a/app/locale/de_DE/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/de_DE/Mage_Widget.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/de_DE/Mage_Widget.csv
diff --git a/app/locale/en_US/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/en_US/Mage_Widget.csv
similarity index 100%
rename from app/locale/en_US/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/en_US/Mage_Widget.csv
diff --git a/app/locale/es_ES/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/es_ES/Mage_Widget.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/es_ES/Mage_Widget.csv
diff --git a/app/locale/fr_FR/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/fr_FR/Mage_Widget.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/fr_FR/Mage_Widget.csv
diff --git a/app/locale/nl_NL/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/nl_NL/Mage_Widget.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/nl_NL/Mage_Widget.csv
diff --git a/app/locale/pt_BR/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/pt_BR/Mage_Widget.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/pt_BR/Mage_Widget.csv
diff --git a/app/locale/zh_CN/Mage_Widget.csv b/app/code/core/Mage/Widget/locale/zh_CN/Mage_Widget.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Widget.csv
rename to app/code/core/Mage/Widget/locale/zh_CN/Mage_Widget.csv
diff --git a/app/locale/de_DE/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/de_DE/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/de_DE/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/de_DE/Mage_Wishlist.csv
diff --git a/app/locale/en_US/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/en_US/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/en_US/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/en_US/Mage_Wishlist.csv
diff --git a/app/locale/es_ES/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/es_ES/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/es_ES/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/es_ES/Mage_Wishlist.csv
diff --git a/app/locale/fr_FR/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/fr_FR/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/fr_FR/Mage_Wishlist.csv
diff --git a/app/locale/nl_NL/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/nl_NL/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/nl_NL/Mage_Wishlist.csv
diff --git a/app/locale/pt_BR/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/pt_BR/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/pt_BR/Mage_Wishlist.csv
diff --git a/app/locale/zh_CN/Mage_Wishlist.csv b/app/code/core/Mage/Wishlist/locale/zh_CN/Mage_Wishlist.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_Wishlist.csv
rename to app/code/core/Mage/Wishlist/locale/zh_CN/Mage_Wishlist.csv
diff --git a/app/locale/de_DE/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/de_DE/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/de_DE/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/de_DE/Mage_XmlConnect.csv
diff --git a/app/locale/en_US/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/en_US/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/en_US/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/en_US/Mage_XmlConnect.csv
diff --git a/app/locale/es_ES/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/es_ES/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/es_ES/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/es_ES/Mage_XmlConnect.csv
diff --git a/app/locale/fr_FR/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/fr_FR/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/fr_FR/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/fr_FR/Mage_XmlConnect.csv
diff --git a/app/locale/nl_NL/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/nl_NL/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/nl_NL/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/nl_NL/Mage_XmlConnect.csv
diff --git a/app/locale/pt_BR/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/pt_BR/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/pt_BR/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/pt_BR/Mage_XmlConnect.csv
diff --git a/app/locale/zh_CN/Mage_XmlConnect.csv b/app/code/core/Mage/XmlConnect/locale/zh_CN/Mage_XmlConnect.csv
similarity index 100%
rename from app/locale/zh_CN/Mage_XmlConnect.csv
rename to app/code/core/Mage/XmlConnect/locale/zh_CN/Mage_XmlConnect.csv
diff --git a/app/locale/de_DE/Find_Feed.csv b/app/locale/de_DE/Find_Feed.csv
deleted file mode 100644
index 18a8a91d8b9918492b3c745b5801bdce1df3d7d5..0000000000000000000000000000000000000000
--- a/app/locale/de_DE/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s Codes gelöscht"
-"%s codes imported","%s Codes importiert"
-"%s codes not imported","%s Codes nicht importiert"
-"%s product in feed.","%s Produkt vorrätig."
-"%s product not in feed.","%s Produkt nicht vorrätig."
-"Add new","Hinzufügen einer neuen"
-"Attrib. Set Name","Bezeichnung für den Attributsatz"
-"Attributes map","Attributübersicht"
-"Cron Frequency","Frequenz für Cronjob"
-"Cron Hour","Cronjob Stunde"
-"Delete","Löschen"
-"Eav code","Eav Code"
-"FTP Password","FTP Passwort"
-"FTP Path","FTP Pfad"
-"FTP Server","FTP Server"
-"FTP Settings","FTP Einstellungen"
-"FTP User","FTP Benutzer"
-"FTP: Can't delete files","FTP: Dateien können nicht gelöscht werden"
-"Feed","Feed"
-"Feed code","Feed-Code"
-"ID","ID"
-"Import","Import"
-"Import attribute map","Attributübersicht importieren"
-"Import code","Code importieren"
-"In Feed","Im Feed"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","Um auf Ihre FTP-Accountdaten zugreifen zu können, müssen Sie sich zunächst registrieren und Ihren Shop im TheFind Merchant Center bestätigen. Klicken Sie <a href=""https://merchant.thefind.com/mc/claim.fhtml"">hier</a>, um anzufangen."
-"Is imported","wurde importiert"
-"Item params","Artikelparameter"
-"Manage attributes","Eigenschaften verwalten"
-"Manage items","Artikel verwalten"
-"Not import","Nicht importieren"
-"Not publish","Nicht veröffentlichen"
-"Price","Preis"
-"Product Name","Produktbezeichnung"
-"Product import","Produkt importieren"
-"Publish","Veröffentlichen"
-"SKU","Artikelposition"
-"Settings","Einstellungen"
-"The Find","TheFind"
-"TheFind Feed Filename","Dateiname des TheFind-Feeds"
-"TheFind feed","TheFind-Feed"
-"Type","Typ"
-"Unable to process an import. ","Der Import konnte nicht bearbeitet werden."
-"Update TheFind Item when Product is Updated","TheFind-Artikel aktualisieren, wenn das Produkt aktualisiert wurde"
diff --git a/app/locale/de_DE/Mage_GoogleBase.csv b/app/locale/de_DE/Mage_GoogleBase.csv
deleted file mode 100644
index cc5f839e57eabb4a714d1fd106df40bed85437f4..0000000000000000000000000000000000000000
--- a/app/locale/de_DE/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,82 +0,0 @@
-"Active","Aktiv"
-"Add Attribute Mapping","Attributmapping hinzufügen"
-"Add New Attribute","Neues Attribut hinzufügen"
-"Add to Google Base","Zu Google Base hinzufügen"
-"Are you sure?","Sind Sie sicher?"
-"Attribute","Attribut"
-"Attribute Set","Attributset"
-"Attribute Set and Item Type","Attributset und Artikeltyp"
-"Attributes","Attribute"
-"Attributes Mapping","Attributmapping"
-"Attributes Set","Attributset"
-"AuthSub","AuthSub"
-"Available Products","Verfügbare Produkte"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","Base-Währung sollte in der Systemkonfiguration auf %s für %s eingestellt sein. Ansonsten sind die Artikelpreise auf Google Base nicht korrekt."
-"Cannot update Google Base Item for Store '%s'","Google Grundgröße kann nicht für Store '%s' aktualisiert werden. 
-
-
-
-"
-"Captcha confirmation error: %s","Fehler bei Captcha Bestätigung: %s"
-"Captcha has been confirmed.","Captcha wude bestätigt."
-"Catalog","Katalog"
-"Clicks","Klicks"
-"ClientLogin","ClientLogin"
-"Confirm","Bestätigen"
-"Current Mapping will be reloaded. Continue?","Derzeitiges Mapping wird neu geladen. Fortfahren?"
-"Custom attribute, no mapping","Benutzerdefiniertes Attribut, kein Mapping"
-"Delete","Löschen"
-"Delete Mapping","Mapping löschen"
-"Edit Item Type","Itemtyp ändern"
-"Edit Item Type ""%s""","Artikelart ""%s"" bearbeiten."
-"Error: %s","Fehler: %s"
-"Expires","Läuft ab"
-"Google","Google"
-"Google Base","Google Base"
-"Google Base Attribute","Google Base Attribut"
-"Google Base ID","Google Base ID"
-"Google Base Item Type","Google Base Itemtyp"
-"Google Base Item type","Google Base-Artikelart"
-"Google Base Items","Google Base Artikel"
-"Google base","Google base"
-"Hide","Verstecken"
-"Hosted","Gehostet"
-"Hosted or Google","Gehostet oder Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Ungültiges Produktmodel für Google Base Artikel"
-"Item Type was deleted","Artikeltyp wurde gelöscht"
-"Item Types","Artikeltypen"
-"Item model is not specified to delete Google Base entry.","Artikelmodell ist nicht spezifiziert um Google Base Eintrag zu löschen."
-"Items","Artikel"
-"Manage Attribute Mapping","Attributmapping verwalten"
-"Manage Attributes","Attribute verwalten"
-"Manage Items","Artikel verwalten"
-"New Item Type","Neuer Artikeltyp"
-"New ItemType","Neuer Artikeltyp"
-"No","Nein"
-"No items were deleted from Google Base","Keine Artikel wurden aus Google Base gelöscht"
-"No items were published","Keine Artikel wurden veröffentlicht"
-"No items were saved as inactive items","Keine Artikel wurden als inaktive Artikel gespeichert"
-"No products were added to Google Base","Keine Produkte wurden zu Google Base hinzugefügt"
-"Object model is not specified to save Google Base entry.","Objektmodell ist nicht spezifiziert um Google Base Eintrag zu speichern."
-"Please, select Attribute Set and Google Item Type to load attributes","Bitte wählen sie Attributset und Google Artikeltyp um Attribute zu laden."
-"Product Name","Produktname"
-"Publish","Veröffentlichen"
-"Published","Veröffentlicht"
-"Remove","Entfernen"
-"Save Mapping","Mapping speichern"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","Session ist während Export abgelaufen. Bitte überarbeiten Sie exportierte Produkte und versuchen Sie es, falls nötig, noch einmal."
-"Synchronize","Synchronisieren"
-"Target Country","Zielland"
-"The item type has been saved.","Der Artikeltyp wurde gespeichert."
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","Diese Aktion aktualisiert Artikelstatistiken und entfernt Artikel, die nicht in Google Base verfügbar sind. Fortfahren?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","Gesamtzahl von %d Artikel wurden gelöscht; Gesamtzahl von %d Artikel wurden aktualisiert."
-"Total of %d items(s) have been published.","Gesamtzahl von %d Artikel wurden veröffentlicht."
-"Total of %d items(s) have been removed from Google Base.","Gesamtzahl von %d Artikel wurden von Google Base entfernt."
-"Total of %d items(s) have been saved as inactive items.","Gesamtzahl von %d Artikel wurden als inaktive Artikel gespeichert."
-"Total of %d product(s) have been added to Google Base.","Gesamtzahl von %d Produkte(n) wurden zu Google Base hinzugefügt."
-"Unable to connect to Google Base. Please, check Account settings in configuration.","Verbindung zu Google Base kann nicht hergestellt werden. Bitte checken Sie Kontoeinstellungen in der Konfiguration."
-"Unable to select a Store View.","Shopansicht kann nicht gewählt werden."
-"View Available Products","Verfügbare Produkte anzeigen"
-"View Item in Google Base","Artikel in Google Base anzeigen"
-"Yes","Ja"
diff --git a/app/locale/de_DE/Mage_OAuth.csv b/app/locale/de_DE/Mage_OAuth.csv
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/app/locale/en_US/Find_Feed.csv b/app/locale/en_US/Find_Feed.csv
deleted file mode 100644
index f083665fb3abd10ffbc3e308f17c8b4ccbec7960..0000000000000000000000000000000000000000
--- a/app/locale/en_US/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s codes deleted"
-"%s codes imported","%s codes imported"
-"%s codes not imported","%s codes not imported"
-"%s product in feed.","%s product in feed."
-"%s product not in feed.","%s product not in feed."
-"Add new","Add new"
-"Attrib. Set Name","Attrib. Set Name"
-"Attributes map","Attributes map"
-"Cron Frequency","Cron Frequency"
-"Cron Hour","Cron Hour"
-"Delete","Delete"
-"Eav code","Eav code"
-"FTP Password","FTP Password"
-"FTP Path","FTP Path"
-"FTP Server","FTP Server"
-"FTP Settings","FTP Settings"
-"FTP User","FTP User"
-"FTP: Can't delete files","FTP: Can't delete files"
-"Feed","Feed"
-"Feed code","Feed code"
-"ID","ID"
-"Import","Import"
-"Import attribute map","Import attribute map"
-"Import code","Import code"
-"In Feed","In Feed"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started."
-"Is imported","Is imported"
-"Item params","Item params"
-"Manage attributes","Manage attributes"
-"Manage items","Manage items"
-"Not import","Not import"
-"Not publish","Not publish"
-"Price","Price"
-"Product Name","Product Name"
-"Product import","Product import"
-"Publish","Publish"
-"SKU","SKU"
-"Settings","Settings"
-"The Find","The Find"
-"TheFind Feed Filename","TheFind Feed Filename"
-"TheFind feed","TheFind feed"
-"Type","Type"
-"Unable to process an import. ","Unable to process an import. "
-"Update TheFind Item when Product is Updated","Update TheFind Item when Product is Updated"
diff --git a/app/locale/en_US/Mage_GoogleBase.csv b/app/locale/en_US/Mage_GoogleBase.csv
deleted file mode 100644
index 964c4a94ffd4f6fcf7dc9c08edda7f284326aa51..0000000000000000000000000000000000000000
--- a/app/locale/en_US/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-"Active","Active"
-"Add Attribute Mapping","Add Attribute Mapping"
-"Add New Attribute","Add New Attribute"
-"Add to Google Base","Add to Google Base"
-"Are you sure?","Are you sure?"
-"Attribute","Attribute"
-"Attribute Set","Attribute Set"
-"Attribute Set and Item Type","Attribute Set and Item Type"
-"Attributes","Attributes"
-"Attributes Mapping","Attributes Mapping"
-"Attributes Set","Attributes Set"
-"AuthSub","AuthSub"
-"Available Products","Available Products"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base."
-"Cannot update Google Base Item for Store '%s'","Cannot update Google Base Item for Store '%s'"
-"Captcha confirmation error: %s","Captcha confirmation error: %s"
-"Captcha has been confirmed.","Captcha has been confirmed."
-"Catalog","Catalog"
-"Clicks","Clicks"
-"ClientLogin","ClientLogin"
-"Confirm","Confirm"
-"Current Mapping will be reloaded. Continue?","Current Mapping will be reloaded. Continue?"
-"Custom attribute, no mapping","Custom attribute, no mapping"
-"Delete","Delete"
-"Delete Mapping","Delete Mapping"
-"Edit Item Type","Edit Item Type"
-"Edit Item Type ""%s""","Edit Item Type ""%s"""
-"Error: %s","Error: %s"
-"Expires","Expires"
-"Google","Google"
-"Google Base","Google Base"
-"Google Base Attribute","Google Base Attribute"
-"Google Base ID","Google Base ID"
-"Google Base Item Type","Google Base Item Type"
-"Google Base Item type","Google Base Item type"
-"Google Base Items","Google Base Items"
-"Google base","Google base"
-"Hide","Hide"
-"Hosted","Hosted"
-"Hosted or Google","Hosted or Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Invalid Product Model for Google Base Item"
-"Item Type was deleted","Item Type was deleted"
-"Item Types","Item Types"
-"Item model is not specified to delete Google Base entry.","Item model is not specified to delete Google Base entry."
-"Items","Items"
-"Manage Attribute Mapping","Manage Attribute Mapping"
-"Manage Attributes","Manage Attributes"
-"Manage Items","Manage Items"
-"New Item Type","New Item Type"
-"New ItemType","New ItemType"
-"No","No"
-"No items were deleted from Google Base","No items were deleted from Google Base"
-"No items were published","No items were published"
-"No items were saved as inactive items","No items were saved as inactive items"
-"No products were added to Google Base","No products were added to Google Base"
-"Object model is not specified to save Google Base entry.","Object model is not specified to save Google Base entry."
-"Please, select Attribute Set and Google Item Type to load attributes","Please, select Attribute Set and Google Item Type to load attributes"
-"Product Name","Product Name"
-"Publish","Publish"
-"Published","Published"
-"Remove","Remove"
-"Save Mapping","Save Mapping"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","Session expired during export. Please revise exported products and repeat the process if necessary."
-"Synchronize","Synchronize"
-"Target Country","Target Country"
-"The item type has been saved.","The item type has been saved."
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","This action will update items statistics and remove the items which are not available in Google Base. Continue?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","Total of %d items(s) have been deleted; total of %d items(s) have been updated."
-"Total of %d items(s) have been published.","Total of %d items(s) have been published."
-"Total of %d items(s) have been removed from Google Base.","Total of %d items(s) have been removed from Google Base."
-"Total of %d items(s) have been saved as inactive items.","Total of %d items(s) have been saved as inactive items."
-"Total of %d product(s) have been added to Google Base.","Total of %d product(s) have been added to Google Base."
-"Unable to connect to Google Base. Please, check Account settings in configuration.","Unable to connect to Google Base. Please, check Account settings in configuration."
-"Unable to select a Store View.","Unable to select a Store View."
-"View Available Products","View Available Products"
-"View Item in Google Base","View Item in Google Base"
-"Yes","Yes"
diff --git a/app/locale/es_ES/Find_Feed.csv b/app/locale/es_ES/Find_Feed.csv
deleted file mode 100644
index 96d3561d3c491ceb1cabd3d34ce3b9bca295de25..0000000000000000000000000000000000000000
--- a/app/locale/es_ES/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s códigos eliminados"
-"%s codes imported","%s códigos importados"
-"%s codes not imported","%s códigos no importados"
-"%s product in feed.","%s producto en la fuente."
-"%s product not in feed.","%s producto no incluido en la fuente."
-"Add new","Añadir nuevo"
-"Attrib. Set Name","Atrib. Establecer Nombre"
-"Attributes map","Asignación de Atributos"
-"Cron Frequency","Frecuencia de Cron"
-"Cron Hour","Horario de Cron"
-"Delete","Eliminar"
-"Eav code","código VAE"
-"FTP Password","Contraseña FTP"
-"FTP Path","Ruta FTP"
-"FTP Server","Servidor FTP"
-"FTP Settings","Configuración FTP"
-"FTP User","Usuario FTP"
-"FTP: Can't delete files","FTP: No se pueden eliminar los archivos"
-"Feed","Fuente"
-"Feed code","Código de fuente"
-"ID","ID"
-"Import","Importar"
-"Import attribute map","Importar asignación de atributos"
-"Import code","Importar código"
-"In Feed","En la fuente"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","Para acceder a la información de su cuenta de FTP, antes debe registrar y verificar su tienda en el centro de vendedores TheFind Merchant Center. Haga clic <a href=""https://merchant.thefind.com/mc/claim.fhtml"">aquí</a> para comenzar."
-"Is imported","Se importa"
-"Item params","Parámetros del artículo"
-"Manage attributes","Administrar atributos"
-"Manage items","Administrar artículos"
-"Not import","No importar"
-"Not publish","No publicar"
-"Price","Precio"
-"Product Name","Nombre de Producto"
-"Product import","Importación de producto"
-"Publish","Publicar"
-"SKU","SKU (Número de Referencia)"
-"Settings","Configuración"
-"The Find","TheFind"
-"TheFind Feed Filename","Nombre de archivo de feed de TheFind"
-"TheFind feed","Feed de TheFInd"
-"Type","Tipo"
-"Unable to process an import. ","No se puede procesar una importación."
-"Update TheFind Item when Product is Updated","Actualizar artículo de TheFind al actualizar el producto"
diff --git a/app/locale/es_ES/Mage_GoogleBase.csv b/app/locale/es_ES/Mage_GoogleBase.csv
deleted file mode 100644
index e1a9292b1a4f34982897e54af45235c496ed2feb..0000000000000000000000000000000000000000
--- a/app/locale/es_ES/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-"Active","Activo"
-"Add Attribute Mapping","Agregar asignación de atributo"
-"Add New Attribute","Añadir Nuevo Atributo"
-"Add to Google Base","Agregar a Google Base"
-"Are you sure?","¿Está seguro?"
-"Attribute","Atributo"
-"Attribute Set","Conjunto de atributos"
-"Attribute Set and Item Type","Conjunto de atributos y tipo de artículo"
-"Attributes","Atributos"
-"Attributes Mapping","Asignación de atributos"
-"Attributes Set","Conjunto de atributos"
-"AuthSub","AuthSub"
-"Available Products","Productos disponibles"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","La divisa base debe definirse como %s para %s en la configuración del sistema. De lo contrario, los precios del artículo no serán correctos en Google Base."
-"Cannot update Google Base Item for Store '%s'","No se puede actualizar el artículo Google Base para la tienda '%s'"
-"Captcha confirmation error: %s","Error de confirmación de Captcha: %s"
-"Captcha has been confirmed.","Se confirmó Captcha."
-"Catalog","Catálogo"
-"Clicks","Clicks"
-"ClientLogin","Inicio de sesión del cliente"
-"Confirm","Confirmar"
-"Current Mapping will be reloaded. Continue?","Se volverá a cargar la asignación actual. ¿Desea continuar?"
-"Custom attribute, no mapping","Atributo personalizado, sin asignación"
-"Delete","Eliminar"
-"Delete Mapping","Eliminar asignación"
-"Edit Item Type","Editar tipo de artículo"
-"Edit Item Type ""%s""","Editar tipo de artículo ""%s"""
-"Error: %s","Error: %s"
-"Expires","Vencimiento"
-"Google","Google"
-"Google Base","Google Base"
-"Google Base Attribute","Atributo de Google Base"
-"Google Base ID","ID de Google Base"
-"Google Base Item Type","Tipo de artículo de Google Base"
-"Google Base Item type","Tipo de artículo de Google Base"
-"Google Base Items","Elementos de Google Base"
-"Google base","Google Base"
-"Hide","Ocultar"
-"Hosted","Alojado"
-"Hosted or Google","Alojado o de Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Modelo de producto no válido para artículo de Google Base"
-"Item Type was deleted","Se eliminó el tipo de artículo"
-"Item Types","Tipos de artículo"
-"Item model is not specified to delete Google Base entry.","En el modelo de artículo no se especifica la eliminación de la entrada de Google Base."
-"Items","Artículos."
-"Manage Attribute Mapping","Administrar asignación de atributos"
-"Manage Attributes","Administrar atributos"
-"Manage Items","Gestionar Artículos"
-"New Item Type","Nuevo tipo de artículo"
-"New ItemType","Nuevo tipo de artículo"
-"No","No"
-"No items were deleted from Google Base","No se eliminaron artículos de Google Base"
-"No items were published","No se publicaron artículos"
-"No items were saved as inactive items","No se guardaron artículos como artículos inactivos"
-"No products were added to Google Base","No se agregaron artículos a Google Base"
-"Object model is not specified to save Google Base entry.","En el modelo de objeto no se especifica guardar la entrada de Google Base."
-"Please, select Attribute Set and Google Item Type to load attributes","Seleccione Conjunto de atributos y Tipo de artículo de Google para cargar los atributos"
-"Product Name","Nombre de Producto"
-"Publish","Publique"
-"Published","Publicado"
-"Remove","Eliminar"
-"Save Mapping","Guardar asignación"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","La sesión caducó durante la exportación. Controle los productos exportados y repita el proceso si es necesario."
-"Synchronize","Sincronizar"
-"Target Country","País de destino"
-"The item type has been saved.","Se guardó el tipo de artículo"
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","Esta acción actualizará las estadísticas de los artículos y eliminará los que no estén disponibles en Google Base. ¿Desea continuar?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","Se eliminó un total de %d artículos y se actualizó un total de %d artículos."
-"Total of %d items(s) have been published.","Se publicó un total de %d artículos."
-"Total of %d items(s) have been removed from Google Base.","Se eliminó un total de %d artículos de Google Base."
-"Total of %d items(s) have been saved as inactive items.","Se guardó un total de %d artículos como artículos inactivos."
-"Total of %d product(s) have been added to Google Base.","Se agregó un total de %d productos a Google Base."
-"Unable to connect to Google Base. Please, check Account settings in configuration.","No se puede establecer conexión con Google Base. Controle la configuración de su cuenta en el área correspondiente."
-"Unable to select a Store View.","No se puede seleccionar una vista de tienda."
-"View Available Products","Ver productos disponibles"
-"View Item in Google Base","Ver artículo en Google Base"
-"Yes","Sí"
diff --git a/app/locale/fr_FR/Find_Feed.csv b/app/locale/fr_FR/Find_Feed.csv
deleted file mode 100644
index 4a10178bc5a01f4f046c02ce6b2102dbf8428be2..0000000000000000000000000000000000000000
--- a/app/locale/fr_FR/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s codes effacés"
-"%s codes imported","%s codes importés"
-"%s codes not imported","%s codes non importés"
-"%s product in feed.","%s produit en flux."
-"%s product not in feed.","%s produit pas en flux."
-"Add new","En ajouter un nouveau"
-"Attrib. Set Name","Nom établi des attrib."
-"Attributes map","Carte des attributs"
-"Cron Frequency","Fréquence cron"
-"Cron Hour","Heure cron"
-"Delete","Supprimer"
-"Eav code","Code Eav"
-"FTP Password","Mot de passe FTP"
-"FTP Path","Chemin d'accès FTP"
-"FTP Server","Serveur FTP"
-"FTP Settings","Paramètres FTP"
-"FTP User","Utilisateur FTP"
-"FTP: Can't delete files","FTP : effacement fichiers impossible"
-"Feed","Alimentation"
-"Feed code","Code d'alimentation"
-"ID","ID"
-"Import","Importation"
-"Import attribute map","Carte des attributs d'importation"
-"Import code","Code d'importation"
-"In Feed","En flux"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","Pour accéder aux informations de votre compte FTP, vous devez tout d'abord vous inscrire et vérifier votre magasin dans TheFind Merchant Center. Cliquez <a href=""https://merchant.thefind.com/mc/claim.fhtml"">ici</a> pour commencer."
-"Is imported","Est importé"
-"Item params","Paramètres de l'article"
-"Manage attributes","Gérer les attributs"
-"Manage items","Gérer les articles"
-"Not import","Ne pas importer"
-"Not publish","Ne pas publier"
-"Price","Prix"
-"Product Name","Nom du produit"
-"Product import","Importation du produit"
-"Publish","Publier"
-"SKU","UGS"
-"Settings","Réglages"
-"The Find","The Find"
-"TheFind Feed Filename","Nom du fichier TheFind Feed"
-"TheFind feed","TheFind feed"
-"Type","Type"
-"Unable to process an import. ","Impossible de procéder à une importation"
-"Update TheFind Item when Product is Updated","Mettre à jour l'article TheFind quand le produit est mis à jour"
diff --git a/app/locale/fr_FR/Mage_GoogleBase.csv b/app/locale/fr_FR/Mage_GoogleBase.csv
deleted file mode 100644
index 32c3b473a9957890d4672609f75e11b40834e23d..0000000000000000000000000000000000000000
--- a/app/locale/fr_FR/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-"Active","Actif"
-"Add Attribute Mapping","Ajouter l'attribut recensement"
-"Add New Attribute","Ajouter un nouvel attribut"
-"Add to Google Base","Ajouter à la base Google"
-"Are you sure?","Etes-vous sûr ?"
-"Attribute","Attribut"
-"Attribute Set","Ensemble d'attributs"
-"Attribute Set and Item Type","Jeu d'attribut et type d'article"
-"Attributes","Attributs"
-"Attributes Mapping","Attributs recensement"
-"Attributes Set","Jeu attributs"
-"AuthSub","AuthSub"
-"Available Products","Produits disponibles"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","La monnaie de base devrait être fixée à %s pour %s dans les options du système. Sinon, les prix des objets ne seront pas corrects dans Google Base."
-"Cannot update Google Base Item for Store '%s'","Impossible de mettre à jour l'article Google Base pour la boutique '%s'  "
-"Captcha confirmation error: %s","Confirmation erreur Captcha: %s"
-"Captcha has been confirmed.","Captcha a été confirmé."
-"Catalog","Catalogue"
-"Clicks","Clics"
-"ClientLogin","ConnexionClient"
-"Confirm","Confirmer"
-"Current Mapping will be reloaded. Continue?","Recensement actuel va être rechargé. Continuer?"
-"Custom attribute, no mapping","Attribut sur mesure, pas de recensement"
-"Delete","Supprimer"
-"Delete Mapping","Effacer recensement"
-"Edit Item Type","Modifier type d'article"
-"Edit Item Type ""%s""","Modifier le type d'objet ""%s"""
-"Error: %s","Erreur: %s"
-"Expires","Expire"
-"Google","Google"
-"Google Base","Base Google"
-"Google Base Attribute","Attribut base Google"
-"Google Base ID","Identification base Google"
-"Google Base Item Type","Type d'article base Google"
-"Google Base Item type","Type d'objet Google Base"
-"Google Base Items","Articles base Google"
-"Google base","Google base"
-"Hide","Cacher"
-"Hosted","Hébergé"
-"Hosted or Google","Hébergé ou Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Modèle de produit invalide pour article de base Google"
-"Item Type was deleted","Type d'article a été effacé"
-"Item Types","Types d'article"
-"Item model is not specified to delete Google Base entry.","Modèle d'article n'est pas spécifié pour effacer entrée base Google."
-"Items","Articles"
-"Manage Attribute Mapping","Gérer recensement attribut"
-"Manage Attributes","Gérer attributs"
-"Manage Items","Gérer articles"
-"New Item Type","Type de nouvel article"
-"New ItemType","Type de nouvel article"
-"No","Non"
-"No items were deleted from Google Base","Aucun article n'a été effacé de la base Google"
-"No items were published","Aucun article n'a été publié"
-"No items were saved as inactive items","Aucun article n'a été sauvegardé comme articles inactifs"
-"No products were added to Google Base","Aucun produits n'ont été ajoutés à la base Google"
-"Object model is not specified to save Google Base entry.","Modèle d'objet n'est pas spécifié pour sauver entrée base Google."
-"Please, select Attribute Set and Google Item Type to load attributes","S'il vous plaît, sélectionnez le jeu d'attribut et le type d'article Google pour charger les attributs"
-"Product Name","Nom produit"
-"Publish","Publier"
-"Published","Publié"
-"Remove","Supprimer"
-"Save Mapping","Sauvegarder recensement"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","La session a expirée pendant l'export. Veuillez revoir les produits exportés et répéter le processus si nécessaire."
-"Synchronize","Synchroniser"
-"Target Country","Pays cible"
-"The item type has been saved.","Le type d'article a été sauvegardé."
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","Cette action va mettre à jour les statistiques d'articles et enlever les articles qui ne sont pas disponibles dans la base Google. Continuer?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","Un total de %d article()s a été effacé; un total de %d article(s) a été mis à jour."
-"Total of %d items(s) have been published.","Un total de %d article(s) a été publié."
-"Total of %d items(s) have been removed from Google Base.","Un total de %d article(s) ont été effacés de la base Google."
-"Total of %d items(s) have been saved as inactive items.","Un total de %d article(s) a été sauvegardé comme articles inactifs."
-"Total of %d product(s) have been added to Google Base.","Un total de %d produit(s) a été ajouté à la base Google."
-"Unable to connect to Google Base. Please, check Account settings in configuration.","Ne peut connecter à la base Google. Veuillez vérifier les paramètres du compte dans la configuration."
-"Unable to select a Store View.","Ne peut sélectionner une vue de boutique."
-"View Available Products","Voir les produits disponibles"
-"View Item in Google Base","Voir l'article dans la base Google"
-"Yes","oui"
diff --git a/app/locale/nl_NL/Find_Feed.csv b/app/locale/nl_NL/Find_Feed.csv
deleted file mode 100644
index 52ee3d564465e3903256944a389b4afbb63b68c4..0000000000000000000000000000000000000000
--- a/app/locale/nl_NL/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s codes verwijderd"
-"%s codes imported","%s codes geïmporteerd"
-"%s codes not imported","%s codes niet geïmporteerd"
-"%s product in feed.","%s product in feed."
-"%s product not in feed.","%s product niet in feed."
-"Add new","Nieuw toevoegen"
-"Attrib. Set Name","Stel naam attrib. in"
-"Attributes map","Kaart attributen"
-"Cron Frequency","Cron frequentie"
-"Cron Hour","Cron uur"
-"Delete","Verwijderen"
-"Eav code","Eav code"
-"FTP Password","FTP wachtwoord"
-"FTP Path","FTP pad"
-"FTP Server","FTP server"
-"FTP Settings","FTP instellingen"
-"FTP User","FTP gebruiker"
-"FTP: Can't delete files","FTP: kan bestanden niet verwijderen"
-"Feed","Feed"
-"Feed code","Feed code"
-"ID","ID"
-"Import","Import"
-"Import attribute map","Importeer attributenkaart"
-"Import code","Import code"
-"In Feed","In Feed"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","Om toegang tot uw FTP account informatie te krijgen, moet u eerst uw winkel registreren en verifiëren in TheFind Merchant Center. Klik <a href=""https://merchant.thefind.com/mc/claim.fhtml"">hier</a> om te beginnen."
-"Is imported","Is geïmporteerd"
-"Item params","Artikel parameters"
-"Manage attributes","Attributen beheren"
-"Manage items","Artikelen beheren"
-"Not import","Niet import"
-"Not publish","Niet publiceren"
-"Price","Prijs"
-"Product Name","Productnaam"
-"Product import","Product import"
-"Publish","Publiceren"
-"SKU","SKU"
-"Settings","Instellingen"
-"The Find","The Find"
-"TheFind Feed Filename","The Find feed bestandsnaam"
-"TheFind feed","TheFind feed"
-"Type","Type"
-"Unable to process an import. ","Kan import niet verwerken."
-"Update TheFind Item when Product is Updated","Update TheFind artikel wanneer Product is bijgewerkt"
diff --git a/app/locale/nl_NL/Mage_GoogleBase.csv b/app/locale/nl_NL/Mage_GoogleBase.csv
deleted file mode 100644
index 7c379a8d376d8b29576a422a0fa0969f1dca235c..0000000000000000000000000000000000000000
--- a/app/locale/nl_NL/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-"Active","Actief"
-"Add Attribute Mapping","Attribuutmapping toevoegen"
-"Add New Attribute","Nieuwe attribuut toevoegen"
-"Add to Google Base","Aan Google Base toevoegen"
-"Are you sure?","Weet u het zeker?"
-"Attribute","Attribuut"
-"Attribute Set","Attributenset"
-"Attribute Set and Item Type","Attributenset en artikeltype"
-"Attributes","Attributen"
-"Attributes Mapping","Attributenmapping"
-"Attributes Set","Attributenset"
-"AuthSub","AuthSub"
-"Available Products","Beschikbare Producten"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","Basis munteenheid moet op %s gezet worden voor %s in systeemconfiguratie. Anders zullen prijzen van artikelen niet correct zijn in Google Base."
-"Cannot update Google Base Item for Store '%s'","Kan Google Base Item niet bijwerken voor Winkel '%s'"
-"Captcha confirmation error: %s","Captcha bevestigingsfout: %s"
-"Captcha has been confirmed.","Captcha is bevestigd."
-"Catalog","Catalogus"
-"Clicks","Kliks"
-"ClientLogin","KlantLogin"
-"Confirm","Bevestigen"
-"Current Mapping will be reloaded. Continue?","Huidige mapping zal opnieuw geladen worden. Doorgaan?"
-"Custom attribute, no mapping","Aangepast attribuut, geen mapping"
-"Delete","Verwijderen"
-"Delete Mapping","Mapping verwijderen"
-"Edit Item Type","Artikeltype bewerken"
-"Edit Item Type ""%s""","Bewerk artikeltype ""%s"""
-"Error: %s","Fout: %s"
-"Expires","Verloopt"
-"Google","Google"
-"Google Base","Google Base"
-"Google Base Attribute","Google Base attribuut"
-"Google Base ID","Google Base ID"
-"Google Base Item Type","Google Base artikeltype"
-"Google Base Item type","Google Base artikeltype"
-"Google Base Items","Google Base artikelen"
-"Google base","Google base"
-"Hide","Verbergen"
-"Hosted","Gehost"
-"Hosted or Google","Gehost of Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Ongeldig productmodel voor Google Base artikel"
-"Item Type was deleted","Artikeltype is verwijderd"
-"Item Types","Artikeltype"
-"Item model is not specified to delete Google Base entry.","Artikelmodel  om uit Google Base te verwijderen is niet gespecificeerd."
-"Items","Artikelen"
-"Manage Attribute Mapping","Attribuutkaart beheren"
-"Manage Attributes","Attributen beheren"
-"Manage Items","Artikelen beheren"
-"New Item Type","Nieuw Item Type"
-"New ItemType","Nieuw ArtikelType"
-"No","Nee"
-"No items were deleted from Google Base","Er zijn geen items verwijderd uit Google Base"
-"No items were published","Er zijn geen items gepubliceerd"
-"No items were saved as inactive items","Er zijn geen items opgeslagen als inactieve items"
-"No products were added to Google Base","Er zijn geen producten toegevoegd aan Google Base"
-"Object model is not specified to save Google Base entry.","Object model is niet gespecificeerd om Google Base ingang op te slaan."
-"Please, select Attribute Set and Google Item Type to load attributes","Selecteer a.u.b. Attribute Set and Google Item Type om attributen te laden"
-"Product Name","Productnaam"
-"Publish","Publiceren"
-"Published","Gepubliceerd"
-"Remove","Verwijderen"
-"Save Mapping","Sla Mapping op"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","Sessie verlopen tijdens export. Bekijk geëxporteerde producten en herhaal zonodig het proces."
-"Synchronize","Synchroniseer"
-"Target Country","Target Land"
-"The item type has been saved.","Het item type is opgeslagen."
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","Deze actie update item statistieken en verwijderd de items die niet beschikbaar zijn in Google Base. WIlt u verder gaan?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","Totaal van %d item(s) is verwijderd; totaal van %d item(s) is geüpdatet."
-"Total of %d items(s) have been published.","Totaal van %d item(s) is gepubliceerd."
-"Total of %d items(s) have been removed from Google Base.","Totaal van %d item(s) is verwijderd van Google Base."
-"Total of %d items(s) have been saved as inactive items.","Totaal van %d item(s) is opgeslagen als inactief item."
-"Total of %d product(s) have been added to Google Base.","Totaal van %d item(s) is toegevoegd aan Google Base."
-"Unable to connect to Google Base. Please, check Account settings in configuration.","Niet mogelijk met Google Base te verbinden, bekijk Account instellingen in configuratie."
-"Unable to select a Store View.","Niet mogelijk een Store View te selecteren."
-"View Available Products","Bekijk Beschikbare Producten"
-"View Item in Google Base","Bekijk artikel in Google Base"
-"Yes","Ja"
diff --git a/app/locale/pt_BR/Find_Feed.csv b/app/locale/pt_BR/Find_Feed.csv
deleted file mode 100644
index 2def06716acd48b29c94fafe836c03263fa2a865..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s códigos excluidos"
-"%s codes imported","%s códigos importados"
-"%s codes not imported","%s códigos não importados"
-"%s product in feed.","%s produto em feed."
-"%s product not in feed.","%s produto não estão em feed."
-"Add new","Adicionar novo"
-"Attrib. Set Name","Nome do conjunto de atributos"
-"Attributes map","Mapa de atributos"
-"Cron Frequency","Frequência de cron"
-"Cron Hour","Hora de cron"
-"Delete","Excluir"
-"Eav code","Código eav"
-"FTP Password","Senha FTP"
-"FTP Path","Caminho FTP"
-"FTP Server","Servidor FTP"
-"FTP Settings","Configurações FTP"
-"FTP User","Usuário FTP"
-"FTP: Can't delete files","FTP: não é possível excluir os arquivos"
-"Feed","Feed"
-"Feed code","Código de feed"
-"ID","Identidade"
-"Import","Importar"
-"Import attribute map","Importar mapa de atributo"
-"Import code","Importar código"
-"In feed","Em feed"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","Para acessar as informações da sua conta FTP, você deve primeiro registrar e confirmar a sua loja no TheFind Merchant Center. Clique <a href=""https://merchant.thefind.com/mc/claim.fhtml"">aqui</a> para iniciar."
-"Is imported","Importado"
-"Item params","Parâmetros do item"
-"Manage attributes","Gerenciar atributos"
-"Manage items","Gerenciar itens"
-"Not import","Não importados"
-"Not publish","Não publicar"
-"Price","Preço"
-"Product Name","Nome do produto"
-"Product import","Importar produto"
-"Publish","Publicar"
-"SKU","Unidade de Manutenção de Estoque"
-"Settings","Configurações"
-"The Find","The Find"
-"TheFind Feed Filename","Nome do arquivo de feed do TheFind"
-"TheFind feed","Feed do TheFind"
-"Type","Tipo"
-"Unable to process an import. ","Incapaz de processar uma importação."
-"Update TheFind Item when Product is Updated","Atualizar item do TheFind quando o produto for atualizado"
diff --git a/app/locale/pt_BR/Mage_Chronopay.csv b/app/locale/pt_BR/Mage_Chronopay.csv
deleted file mode 100644
index 9321c58aaa2555e0f441bd2c838c83ca91991a24..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Chronopay.csv
+++ /dev/null
@@ -1,52 +0,0 @@
-"Accepted Currency","Moeda Aceita"
-"An error has occurred","Ocorreu um erro"
-"An error occurred during paying process.","Ocorreu um erro durante processo de pagamento."
-"An error occurred during the paying process.","Ocorreu um erro durante o processo de pagamento."
-"Authorize Only","Somente Autorizar"
-"Authorize and Capture","Autorizar e Controlar"
-"CGI URL","URL de CGI"
-"Card Verification Number","Número de Verificação do Cartão"
-"ChronoPay Gateway","Gateway ChronoPay"
-"ChronoPay Standard","Padrão ChronoPay"
-"Credit Card Number","Número do Cartão de Crédito"
-"Credit Card Number: xxxx-%s","Número do Cartão de Crédito: xxxx-%s"
-"Credit Card Type","Tipo de Cartão de Crédito"
-"Credit Card Type: %s","Tipo de Cartão de Crédito: %s"
-"Credit Card Types","Tipos de Cartão de Crédito"
-"Customer Interface Language","Idioma da Interface de Cliente"
-"Debug","Debug"
-"Dutch","Holandês"
-"Enabled","Ativado"
-"English","Inglês"
-"Expiration Date","Data de Validade"
-"Gateway request error: %s","Erro de solicitação de gateway: %s"
-"German","Alemão"
-"Invalid operation code.","Código de operação inválido"
-"Invalid response format.","Formato de resposta inválido"
-"Issue Number","Número de Emissão"
-"Name on Card","Nome no Cartão"
-"Name on the Card: %s","Nome no Cartão: %s"
-"New Order Status","Status do Novo Pedido"
-"Order #%s","Pedido #%s"
-"Order number will be used if left empty.","Número de ordem será usado se deixado vazio."
-"Payment Action","Ação de Pagamento"
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Please Select","Por Favor Selecione"
-"Product ID","ID do Produto"
-"Russian","Russo"
-"Shared Secret","Segredo Compartilhado"
-"Site ID","ID do Site"
-"Sort Order","Classificar pedido"
-"Specify access URL: {STORE_URL}/chronopay/standard/success in the ChronoPay client admin.","Especifique URL de acesso: {STORE_URL}/chronopay/standard/success na administração de cliente ChronoPay."
-"Start Date","Data de início"
-"Switch/Solo/Maestro Only","Somente Swith/Solo/Maestro"
-"The customer has successfully returned from Chronopay.","O cliente retornou com êxito de Chronopay."
-"The customer was redirected to Chronopay.","O cliente foi redirecionado para Chronopay."
-"The selected currency code (%s) is not compatible with ChronoPay.","O código da moeda selecionada (%s) não é compatível com ChronoPay."
-"The transaction ID is invalid.","O ID da transação é inválido."
-"Title","Título"
-"Transaction Description","Descrição da Transação"
-"What is this?","O que é isso?"
-"You will be redirected to ChronoPay in a few seconds.","Você será redirecionado para ChronoPay em poucos segundos."
-"You will be redirected to Chronopay website when you place an order.","Você será redirecionado para o site web Chronopay quando você colocar uma encomenda."
diff --git a/app/locale/pt_BR/Mage_Compiler.csv b/app/locale/pt_BR/Mage_Compiler.csv
deleted file mode 100644
index 50e27c79ca563b2537dfa1136c6838cbe40988f2..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Compiler.csv
+++ /dev/null
@@ -1,21 +0,0 @@
-"Collected Files Count","Contagem de arquivos coletados"
-"Compilation","Compilação"
-"Compilation State","Estado de compilação"
-"Compilation error","Erro de compilação"
-"Compiled","Compilado"
-"Compiled Scopes Count","Contagem de escopos compilados"
-"Compiler Status","Status de compilador"
-"Compiler include path is disabled.","O caminho de inclusão do compilador está desativado."
-"Compiler include path is enabled.","O caminho de inclusão do compilador está ativado."
-"Directory ""%s"" must be writeable","O diretório ""%s"" deve ser gravável"
-"Disable","Desativar"
-"Disabled","Desativado"
-"Enable","Ativar"
-"Enabled","Ativado"
-"File ""%s"" must be writeable","O arquivo ""%s"" deve ser gravável"
-"Not Compiled","Não compilado"
-"Run Compilation Process","Executar o processo de compilação"
-"Scopes Compilation Settings","Configurações de escopos de compilação"
-"System","Sistema"
-"The compilation has completed.","A compilação foi concluída."
-"Tools","Ferramentas"
diff --git a/app/locale/pt_BR/Mage_Cybermut.csv b/app/locale/pt_BR/Mage_Cybermut.csv
deleted file mode 100644
index ae73b9c0ee0d59f2c7af46d73ef790e09fa2ad14..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Cybermut.csv
+++ /dev/null
@@ -1,35 +0,0 @@
-" There was an error occurred during paying process.","Houve um erro durante o processo de pagamento."
-"An error has occured","Ocorreu um erro"
-"An error occurred during the payment process.","Ocorreu um erro durante o processo de pagamento."
-"Bank","Banco"
-"Credit Mutuel","Crédito Mútuo"
-"Customer Interface language","Língua da Interface do cliente"
-"Customer has returned from Cybermut.","Cliente retornou do Cybermut."
-"Customer was redirected to Cybermut","Cliente redirecionado ao Cybermut"
-"Debug","Debug"
-"Dutch","Holandês"
-"Enabled","Ativado"
-"English","Inglês"
-"French","Francês"
-"German","Alemão"
-"Groupe CIC","Grupo CIC"
-"Italian","Italiano"
-"Key","Senha"
-"New Order Status","Status do Novo Pedido"
-"OBC","OBC"
-"Order #%s","Pedido #%s"
-"Order number will be used if left empty.","Número de ordem será usado se deixado vazio."
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Returned MAC is invalid. Order cancelled.","MAC retornado inválido. Pedido cancelado."
-"SHA Key","Senha SHA"
-"Site Code","Código do Site"
-"Sort Order","Classificar pedido"
-"Spain","Espanha"
-"TPE Number","Número TPE"
-"Test Mode","Modo de Teste"
-"The customer successfully returned from Cybermut.","O cliente retornou de Cybermut com sucesso."
-"Title","Título"
-"Transaction Description","Descrição da Transação"
-"You will be redirected to Cybermut in a few seconds.","Você será redirecionado a Cybermut em alguns minutos."
-"You will be redirected to Cybermut website when you place an order.","Você será redirecionado ao website da Cybermut quando fizer um pedido."
diff --git a/app/locale/pt_BR/Mage_Cybersource.csv b/app/locale/pt_BR/Mage_Cybersource.csv
deleted file mode 100644
index 8de44e6f1e8bcae4245e648fb7f2db9731b44721..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Cybersource.csv
+++ /dev/null
@@ -1,41 +0,0 @@
-"Authorization","Autorização"
-"Card Verification Number","Número de Verificação do Cartão"
-"Credit Card Number","Número do Cartão de Crédito"
-"Credit Card Number: xxxx-%s","Número do Cartão de Crédito: xxxx-%s"
-"Credit Card Type","Tipo de Cartão de Crédito"
-"Credit Card Type: %s","Tipo de Cartão de Crédito: %s"
-"Credit Card Types","Tipos de Cartão de Crédito"
-"Credit Card Verification","Verificação de Cartão de Crédito"
-"Cybersource (SOAP Toolkit)","Cybersource (kit de ferramentas SOAP)"
-"Debug","Debug"
-"Enabled","Ativado"
-"Error in refunding the payment.","Erro na devolução do pagamento."
-"Expiration Date","Data de Validade"
-"Gateway request error: %s","Erro de solicitação de gateway: %s"
-"Invalid transaction id or token","Identificação da transação ou sinal inválido"
-"Issue Number","Número de Emissão"
-"JCB","JCB"
-"Laser","Laser"
-"Maestro (International)","Maestro (Internacional)"
-"Maestro/Solo(UK Domestic)","Maestro/Solo (Uso doméstico no Reino Unido)"
-"Merchant ID","Identificação do comerciante"
-"Name on Card","Nome no Cartão"
-"Name on the Card: %s","Nome no Cartão: %s"
-"New Order Status","Status do Novo Pedido"
-"Payment Action","Ação de Pagamento"
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"SOAP extension is not enabled. Please contact us.","Extensão SOAP não está ativada. Por favor entre em contato conosco."
-"Sale","Venda"
-"Security Key","Chave de Segurança"
-"Sort Order","Classificar pedido"
-"Start Date","Data de início"
-"Switch/Solo/Maestro(UK Domestic) Only","Somente Swith/Solo/Maestro (nacional do RU)"
-"Switch/Solo/Maestro(UK Domestic) card issue number: %s","Número de emissão do cartão Swith/Solo/Maestro (nacional do RU): %s"
-"Switch/Solo/Maestro(UK Domestic) card start Date: %s/%s","Data inicial do cartão Swith/Solo/Maestro (nacional do RU): %s/%s"
-"Test Mode","Modo de Teste"
-"There is an error in processing the payment. Please try again or contact us.","Há um erro no processamento do pagamento. Por favor tente novamente ou entre em contato conosco."
-"Title","Título"
-"UATP","UATP"
-"What is this?","O que é isso?"
-"Year","Ano"
diff --git a/app/locale/pt_BR/Mage_Eway.csv b/app/locale/pt_BR/Mage_Eway.csv
deleted file mode 100644
index d9976270d825d417c0696e5c3ecb260566bcdf11..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Eway.csv
+++ /dev/null
@@ -1,38 +0,0 @@
-"API Gateway URL","URL de Gateway de API"
-"Accepted Currency","Moeda Aceita"
-"An error has occurred","Ocorreu um erro"
-"Card Verification Number","Número de Verificação do Cartão"
-"Click <a href=""%s"">here</a> to continue shopping.","Clique <a href=""%s"">aqui</a> para continuar as compras."
-"Credit Card Number","Número do Cartão de Crédito"
-"Credit Card Number: xxxx-%s","Número do Cartão de Crédito: xxxx-%s"
-"Credit Card Type","Tipo de Cartão de Crédito"
-"Credit Card Type: %s","Tipo de Cartão de Crédito: %s"
-"Credit Card Types","Tipos de Cartão de Crédito"
-"Credit Card Verification","Verificação de Cartão de Crédito"
-"Customer ID","ID do Cliente"
-"Customer was redirected to eWAY.","Cliente foi redirecionado para eWAY."
-"Debug Flag","Flag de Debug"
-"Enabled","Ativado"
-"Expiration Date","Data de Validade"
-"Name on Card","Nome no Cartão"
-"Name on the Card: %s","Nome no Cartão: %s"
-"New Order Status","Status do Novo Pedido"
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Please Select","Por Favor Selecione"
-"Selected currency code (%s) is not compatible with eWAY.","Código atual selecionado (%s) não é compatível com eWAY."
-"Sort Order","Classificar pedido"
-"The customer has successfully returned from eWAY.","O cliente retornou com sucesso do eWAY."
-"The customer was rejected by eWAY.","O cliente foi rejeitado por eWay."
-"There has been an error processing your payment.","Houve um erro ao processar o seu pagamento."
-"There has been an error processing your payment. Please try later or contact us for help.","Houve um erro ao processar o seu pagamento. Por favor tente mais tarde ou entre em contato conosco para obter ajuda."
-"Title","Título"
-"Use Beagle Anti-Fraud","Use Anti-Fraude Beagle"
-"What is this?","O que é isso?"
-"You will be redirected to eWAY 3D-Secure in a few seconds.","Você será redirecionado para eWay 3D-Secure em poucos segundos."
-"You will be redirected to eWAY 3D-Secure website when you place an order.","Você será redirecionado para o site eWay 3D-Secure quando você colocar uma ordem."
-"You will be redirected to eWAY in a few seconds.","Você será redirecionado para eWay em poucos segundos."
-"You will be redirected to eWAY website when you place an order.","Você será redirecionado para o site eWay quando você colocar uma ordem."
-"eWAY 3D-Secure","eWAY 3D-Secure"
-"eWAY Direct","eWAY Direct"
-"eWAY Shared","eWAY Shared"
diff --git a/app/locale/pt_BR/Mage_Flo2Cash.csv b/app/locale/pt_BR/Mage_Flo2Cash.csv
deleted file mode 100644
index 47086a2d1cda89352f6e44fad9858c7abcd66080..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Flo2Cash.csv
+++ /dev/null
@@ -1,27 +0,0 @@
-"Account Number","Número de Conta"
-"Card Verification Number","Número de Verificação do Cartão"
-"Credit Card Number","Número do Cartão de Crédito"
-"Credit Card Number: xxxx-%s","Número do Cartão de Crédito: xxxx-%s"
-"Credit Card Type","Tipo de Cartão de Crédito"
-"Credit Card Type: %s","Tipo de Cartão de Crédito: %s"
-"Credit Card Types","Tipos de Cartão de Crédito"
-"Credit Card Verification","Verificação de Cartão de Crédito"
-"Debug Flag","Flag de Debug"
-"Demo Mode","Modo de Demonstração"
-"Enabled","Ativado"
-"Expiration Date","Data de Validade"
-"Flo2Cash Payment Web Service","Serviço Web de Pagamento Flo2Cash"
-"For ""Authorize"" or ""Capture"" transactions only.","Somente para transações de ""Autorização"" ou ""Captura""."
-"For ""Purchase"" transactions only.","Somente para transações de ""Compra""."
-"Name on Card","Nome no Cartão"
-"Name on the Card: %s","Nome no Cartão: %s"
-"New Order Status","Status do Novo Pedido"
-"Password","Senha"
-"Payment Action","Ação de Pagamento"
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Please Select","Por Favor Selecione"
-"Sort Order","Classificar pedido"
-"Title","Título"
-"Username","Nome do usuário"
-"What is this?","O que é isso?"
diff --git a/app/locale/pt_BR/Mage_GoogleBase.csv b/app/locale/pt_BR/Mage_GoogleBase.csv
deleted file mode 100644
index 26f9d60c57935147b87cd614667f8db116650daa..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-"Active","Ativo"
-"Add Attribute Mapping","Adicionar Mapeamento de Atributo"
-"Add New Attribute","Adicionar Novo Atributo"
-"Add to Google Base","Adicionar à Base do Google"
-"Are you sure?","Tem certeza?"
-"Attribute","Atributo"
-"Attribute Set","Conjunto de Atributos"
-"Attribute Set and Item Type","Configuração de Atributo e Tipo de Item"
-"Attributes","Atributos"
-"Attributes Mapping","Mapeamento de Atributos"
-"Attributes Set","Configuração de Atributos"
-"AuthSub","AuthSub"
-"Available Products","Produtos disponíveis"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","Moeda de referência deve ser alterada de %s para %s na configuração do sistema. De outra forma, os preços dos itens são estarão corretos na Base do Google."
-"Cannot update Google Base Item for Store '%s'","Não foi possível atualizar Item Google Base para Loja '%s'"
-"Captcha confirmation error: %s","Confirmação de erro Captcha: %s"
-"Captcha has been confirmed.","Captcha foi confirmado."
-"Catalog","Catálogo"
-"Clicks","Cliques"
-"ClientLogin","ClientLogin"
-"Confirm","Confirmar"
-"Current Mapping will be reloaded. Continue?","Mapeamento atual será recarregado. Continuar?"
-"Custom attribute, no mapping","Atributo do cliente, sem mapeamento"
-"Delete","Excluir"
-"Delete Mapping","Deletar Mapeamento"
-"Edit Item Type","Editar Tipo de Item"
-"Edit Item Type ""%s""","Editar Tipo de Item  ""%s"""
-"Error: %s","Erro: %s"
-"Expires","Expira"
-"Google","Google"
-"Google Base","Google Base"
-"Google Base Attribute","Atributo da Base do Google"
-"Google Base ID","ID da Base do Google"
-"Google Base Item Type","Tipo de Item da Base do Google"
-"Google Base Item type","Tipo de Item da Base do Google"
-"Google Base Items","Itens da Base Google"
-"Google base","Base do Google"
-"Hide","Ocultar"
-"Hosted","Hospedado"
-"Hosted or Google","Hospedado ou Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Modelo Inválido de Produto para Item da Base do Google"
-"Item Type was deleted","Tipo de Item foi deletado"
-"Item Types","Tipos de Item"
-"Item model is not specified to delete Google Base entry.","Modelo de item não foi especificado para deletar entrada na Base do Google."
-"Items","Itens"
-"Manage Attribute Mapping","Gerenciar Mapeamento de Atributo"
-"Manage Attributes","Gerenciar Atributos"
-"Manage Items","Gerenciar itens"
-"New Item Type","Novo Tipo de Item"
-"New ItemType","Novo Tipo de Item"
-"No","Não"
-"No items were deleted from Google Base","Nenhum item foi apagado do Google Base"
-"No items were published","Nenhum item foi publicado"
-"No items were saved as inactive items","Nenhum item foi salvo como item inativo"
-"No products were added to Google Base","Nenhum produto foi adicionado ao Google Base"
-"Object model is not specified to save Google Base entry.","Modelo de objeto não é especificado para salvar entrada no Google Base."
-"Please, select Attribute Set and Google Item Type to load attributes","Por favor, selecione Conjunto de Atributos e Tipo de Item Google para carregar os atributos"
-"Product Name","Nome do produto"
-"Publish","Publicar"
-"Published","Publicado"
-"Remove","Remover"
-"Save Mapping","Salvar Mapeamento"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","Sessão expirada durante a exportação. Por favor revise os produtos exportados e repita o processo se necessário."
-"Synchronize","Sincronizar"
-"Target Country","País Alvo"
-"The item type has been saved.","O tipo de item foi salvo."
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","Esta ação irá atualizar as estatísticas dos itens e remover os itens que não estão disponíveis no Google Base. Continuar?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","Um total de %d itens foi excluído; um total de %d itens foi atualizado."
-"Total of %d items(s) have been published.","Um total de %d itens foi publicado."
-"Total of %d items(s) have been removed from Google Base.","Um total de %d itens foi removido do Google Base."
-"Total of %d items(s) have been saved as inactive items.","Um total de %d itens foi salvo como itens inativos."
-"Total of %d product(s) have been added to Google Base.","Um total de %d produto(s) foi adicionado ao Google Base."
-"Unable to connect to Google Base. Please, check Account settings in configuration.","Não é possível conetar com o Google Base. Por favor, verifique as configurações da Conta na configuração."
-"Unable to select a Store View.","Não foi possível selecionar uma Vista de Loja."
-"View Available Products","Ver Produtos Disponíveis"
-"View Item in Google Base","Ver Artigo em Base Google"
-"Yes","Sim"
diff --git a/app/locale/pt_BR/Mage_Ideal.csv b/app/locale/pt_BR/Mage_Ideal.csv
deleted file mode 100644
index 4eceedf6214b9065244c45315f397dcc4e161bbf..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Ideal.csv
+++ /dev/null
@@ -1,61 +0,0 @@
-"Absolute path to private certificate file.","Caminho absoluto para arquivo de certificado privado."
-"Absolute path to private key file.","Caminho absoluto para o arquivo da chave privada."
-"Absolute path to public payment provider certificate file.","Caminho absoluto para arquivo de certificado do provedor de pagamento público."
-"An error has occurred","Ocorreu um erro"
-"An error has occurred with the transaction #%s.","Ocorreu um erro com a transação #%s."
-"An error has occurred. You will be redirected back to store.","Ocorreu um erro. Você será redirecionado de volta à loja."
-"An error occurred while processing your iDEAL transaction. Please contact the web shop or try again later. The transaction number is %s.","Ocorreu um erro ao processar sua transação iDEAL. Entre em contato com a loja web ou tente novamente mais tarde. O número de transação é %s."
-"An error occurred while processing your iDEAL transaction. Please contact the web shop or try again later. Transaction number is %s.","Ocorreu um erro ao processar sua transação iDEAL. Entre em contato com a loja web ou tente novamente mais tarde. Número de transação é %s."
-"Begin to check transaction status if order was made {N} hours ago.","Comece a verificar o status da transação se a ordem foi feita há {N} horas atrás."
-"Check Begin","Comece Verificação"
-"Check End","Final de Verificação"
-"Click <a href=""%s"">here</a> to continue shopping.","Clique <a href=""%s"">aqui</a> para continuar as compras."
-"Customer has canceled payment.","Cliente cancelou o pagamento."
-"Customer has successfully returned from iDEAL.","Cliente retornou com sucesso de iDEAL."
-"Customer was redirected to iDEAL. Please, check the status of the transaction via the ING iDEAL Dashboard before delivery of the goods purchased.","Cliente foi redirecionado para iDEAL. Por favor, verifique o status da transação via o Painel iDEAL ING antes da entrega dos bens adquiridos."
-"Customer was rejected by iDEAL.","Cliente foi rejeitado por iDEAL."
-"Debug","Debug"
-"Do not check transaction status if order older than {N} days.","Não verifique o estado da transação se a ordem for mais antiga que {N} dias."
-"Dutch","Holandês"
-"Enabled","Ativado"
-"English","Inglês"
-"Ideal: %s","Ideal: %s"
-"In minutes. Minimum is 1 minute and maximum is 60.","Em minutos. Mínimo é de 1 minuto e máximo é de 60."
-"Issuer","Emissor"
-"Issuer: %s","Emissor: %s"
-"Language","Idioma"
-"Leave empty for default value.","Deixe em branco para o valor predefinido."
-"Merchant ID","Identificação do comerciante"
-"Merchant Key","Chave do Comerciante"
-"New Order Status","Status do Novo Pedido"
-"Notification from iDEAL was received with status %s.","Notificação de iDEAL foi recebida com estado %s."
-"Notification from iDEAL was received with status %s. The invoice was created. Please check the status of a transaction via the ING iDEAL Dashboard before delivery of the goods purchased.","Notificação de iDEAL foi recebida com estado %s. A fatura foi criada. Por favor verifique o estado de uma transação através do Painel iDEAL ING antes da entrega dos bens adquiridos."
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Payment was canceled by the customer.","Pagamento foi cancelado pelo cliente."
-"Please Select","Por Favor Selecione"
-"Private Certificate","Certificado Privado"
-"Private Key","Chave Privada"
-"Private Key Password","Senha da Chave Privada"
-"Required fields are missing.","Campos obrigatórios estão faltando."
-"Secure URL (production)","URL segura (produção)"
-"Secure URL (test mode)","URL segura (modo de teste)"
-"Selected currency code (%s) is not compatible with iDEAL.","Código da moeda selecionada (%s) não é compatível com iDEAL."
-"Sort Order","Classificar pedido"
-"Store name will be used if left empty.","Nome da loja será usado se deixado vazio."
-"Test Mode","Modo de Teste"
-"The customer canceled payment.","O cliente cancelou o pagamento."
-"The customer has returned from iDEAL.","O cliente voltou de iDEAL."
-"The customer was redirected to iDEAL.","O cliente foi redirecionado de iDEAL."
-"Title","Título"
-"Transaction Description","Descrição da Transação"
-"Transaction Expire Period","Período de Término da Transação"
-"Transaction Status Update: canceled by the customer.","Atualização do Status da Transação: cancelado pelo cliente."
-"Transaction Status Update: finished successfully.","Atualização do Status da Transação: finalizada com sucesso."
-"Transaction Status Update: rejected by iDEAL.","Atualização do Status da Transação: rejeitada pela iDEAL"
-"You will be redirected to bank in a few seconds.","Você será redirecionado ao banco em alguns segundos."
-"You will be redirected to iDEAL in a few seconds.","Você será redirecionado à iDEAL em alguns segundos."
-"You will be redirected to the website of your bank when you place an order.","Você será redirecionado ao site de seu banco quando você efetuar um pedido."
-"iDEAL Advanced","iDEAL Avançado"
-"iDEAL Basic","iDEAL Básico"
-"iDEAL Certificate","Certificado iDEAL"
diff --git a/app/locale/pt_BR/Mage_Paybox.csv b/app/locale/pt_BR/Mage_Paybox.csv
deleted file mode 100644
index 0ba4fe11c0b2c0dd80b6f8208d22c9d170c0c78a..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Paybox.csv
+++ /dev/null
@@ -1,106 +0,0 @@
-"--Please Select--","--Por Favor, Escolha--"
-"AMEX","AMEX"
-"AURORE","AURORE"
-"Activated Key","Chave Ativada"
-"Amount does not match.","Quantia não corresponde."
-"An error has occurred","Ocorreu um erro"
-"Authorization","Autorização"
-"CARTE","CARTE"
-"CB","CB"
-"Cannot create the invoice.","Não é possível criar a fatura."
-"Card Verification Number","Número de Verificação do Cartão"
-"Cart Type","Tipo de Carrinho"
-"Click <a href=""%s"">here</a> to continue shopping.","Clique <a href=""%s"">aqui</a> para continuar as compras."
-"Command Line Mode","Modo de Linha de Comando"
-"Credit Card Number","Número do Cartão de Crédito"
-"Credit Card Number: xxxx-%s","Número do Cartão de Crédito: xxxx-%s"
-"Credit Card Type","Tipo de Cartão de Crédito"
-"Credit Card Type: %s","Tipo de Cartão de Crédito: %s"
-"Credit Card Types","Tipos de Cartão de Crédito"
-"Customer Choise","Escolha do Cliente"
-"DEU (German)","DEU (Alemão)"
-"DINERS","DINERS"
-"Debug Flag","Flag de Debug"
-"Delay in Displaying the Intermediary Page (in msec)","Atraso ao Exibir a Página de Intermediário (em ms)"
-"E CARD","E CARD"
-"ESP (Spanish)","ESP (espanhol)"
-"EUROCARD & MASTERCARD","EUROCARD e MASTERCARD"
-"Enabled","Ativado"
-"Error in refunding the payment","Erro na devolução do pagamento"
-"Expiration Date","Data de Validade"
-"FRA (French)","FRA (francês)"
-"GBR (English)","GBR (inglês)"
-"GET","GET"
-"HTML Form","Formulário de HTML"
-"ITA (Italian)","ITA (italiano)"
-"JCB","JCB"
-"Language of the Payment Page","Idioma da Página de Pagamento"
-"Management Mode of the Intermediary Page","Modo de Gerenciamento da Página Intermediária"
-"Mode A","Modo A"
-"Mode B","Modo B"
-"Mode C","Modo C"
-"Mode D","Modo D"
-"Mode E","Modo E"
-"Mode of Retrieval of Information","Modo de Recuperação de Informações"
-"NLD (Dutch)","NLD (holandês)"
-"Name of the Button on the Intermediary Page","Nome do Botão da Página Intermediária"
-"Name on Card","Nome no Cartão"
-"Name on the Card: %s","Nome no Cartão: %s"
-"New Order Status","Status do Novo Pedido"
-"Only if the ""HTML From"" mode selected.","Somente se o modo ""De HTML"" for selecionado."
-"Only with ""Command Line"" mode.","Somente com modo ""Linha de Comando""."
-"Order does not match.","Solicitação não compatível."
-"PAYBOX Identifier","Identificador do PAYBOX"
-"PAYNOVA","PAYNOVA"
-"PAYPAL","PAYPAL"
-"POST","POST"
-"Paybox CGI File","Arquivo CGI Paybox"
-"Paybox Direct","Direto Paybox"
-"Paybox System","Sistema Paybox"
-"Paybox payment gateway is not available right now","Gateway de pagamento do Paybox não está disponível no momento"
-"Payment","Pagamento"
-"Payment Action","Ação de Pagamento"
-"Payment Type","Tipo de Pagamento"
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Ping Flag","Flag de Ping"
-"Please Select","Por Favor Selecione"
-"Rank Number","Número de Classificação"
-"SWE (Swedish)","SWE (sueco)"
-"SYMPASS","SYMPASS"
-"Screen Background of the Intermediary Page","Fundo de Tela da Página Intermediária"
-"Site Number (TPE)","Número do Site (TPE)"
-"Sort Order","Classificar pedido"
-"Specify the URL of the primary backup payment server if different from default.","Especifique a URL do servidor principal de backup para pagamento se for diferente do padrão."
-"Specify the URL of the primary payment server if different from default.","Especifique a URL do servidor principal para pagamento se for diferente do padrão."
-"Specify the URL of the second backup payment server if different from default.","Especifique o URL do segundo servidor de pagamento de backup, se diferente do padrão."
-"Specify the URL of the third backup payment server if different from default.","Especifique o URL do terceiro servidor de pagamento de backup, se diferente do padrão."
-"TCP Port","Porta TCP"
-"TCP port used to check the availability of a payment server if ""Ping Flag"" enabled (default port is 443).","Porta TCP usada para verificar a disponibilidade de um servidor de pagamento se ""Flag Ping"" ativada (porta padrão é 443)."
-"TERMINEO","TERMINEO"
-"Text on the Intermediary Page","Texto na Página Intermediária"
-"The URL of the Backup Payment Server","O URL do Servidor de Pagamento de Backup"
-"The URL of the Primary Backup Payment Server","O URL do Servidor Principal de Pagamento de Backup"
-"The URL of the Primary Payment Server","O URL do Servidor de Pagamento Principal"
-"The URL of the Second Backup Payment Server","O URL do Segundo Servidor de Pagamento de Backup"
-"The URL of the Third Backup Payment Server","O URL do Terceiro Servidor de Pagamento de Backup"
-"The customer has returned from Paybox.","O cliente voltou de Paybox."
-"The customer was redirected to Paybox","O cliente foi redirecionado para Paybox"
-"The customer was redirected to Paybox using \'command line\' mode.","O cliente foi redirecionado para Paybox usando o modo \""linha de comando\""."
-"The customer was refused by Paybox.","O cliente foi recusado por Paybox."
-"The customer was rejected by Paybox.","O cliente foi rejeitado por Paybox."
-"The invoice has been created.","A fatura foi criada."
-"The order was canceled by the customer.","A ordem foi cancelada pelo cliente."
-"There are no orders.","Não há ordens."
-"There has been an error processing your payment. ","Houve um erro ao processar o seu pagamento."
-"There has been an error processing your payment. Please try later or contact us for help.","Houve um erro ao processar o seu pagamento. Por favor tente mais tarde ou entre em contato conosco para obter ajuda."
-"Time-out (in seconds) to check the avalaibility of the primary backup payment server (default 10 seconds).","Tempo limite (em segundos) para verificar a disponibilidade do servidor primário de pagamento de backup (10 segundos por defeito)."
-"Time-out (in seconds) to check the avalaibility of the primary payment server (default 8 seconds).","Tempo limite (em segundos) para verificar a disponibilidade do servidor principal de pagamento (8 segundos por defeito)."
-"Time-out (in seconds) to check the avalaibility of the second backup payment server (fefault 20 seconds).","Tempo limite (em segundos) para verificar a disponibilidade do segundo servidor de pagamento de backup (20 segundos por defeito)."
-"Time-out (in seconds) to check the avalaibility of the third backup payment server (default 20 seconds).","Tempo limite (em segundos) para verificar a dispnibilidade do terceiro servidor de pagamento de  backup (20 segundos por defeito)."
-"Timeout for Checking","Tempo Limite para Pagamento"
-"Title","Título"
-"VISA","VISA"
-"What is this?","O que é isso?"
-"You will be redirected to Paybox in a few seconds.","Você será redirecionado a Paybox em alguns segundos."
-"You will be redirected to the Paybox website when you place an order.","Você será redirecionado ao website da Paybox quando fizer um pedido."
diff --git a/app/locale/pt_BR/Mage_Protx.csv b/app/locale/pt_BR/Mage_Protx.csv
deleted file mode 100644
index 2d7c01d6f76fb8e50aea1d9c57c02db4da05044b..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Protx.csv
+++ /dev/null
@@ -1,31 +0,0 @@
-"AUTHENTICATE","AUTENTICAR"
-"An error has occurred","Ocorreu um erro"
-"Click <a href=""%s"">here</a> to continue shopping.","Clique <a href=""%s"">aqui</a> para continuar as compras."
-"Customer was redirected to Protx","O cliente foi redirecionado para o Protx"
-"DEFERRED","DIFERIDO"
-"Debug","Debug"
-"Enabled","Ativado"
-"General contact email will be used if left empty.","O e-mail de contato geral será utilizado, caso seja deixado em branco."
-"Live","Ao Vivo"
-"Mode","Modo"
-"New Order Status","Status do Novo Pedido"
-"Order total amount does not match protx gross total amount","O valor total do pedido não é compatível com o valor bruto total do protx"
-"PAYMENT","PAGAMENTO"
-"Payment Action","Ação de Pagamento"
-"Payment from Applicable Countries","Pagamento de Países Aplicáveis"
-"Payment from Specific Countries","Pagamento de Países Específicos"
-"Protx Standard","Padrão Protx"
-"Simulator","Simulador"
-"Sort Order","Classificar pedido"
-"Store name will be used if left empty.","Nome da loja será usado se deixado vazio."
-"Test","Teste"
-"The customer has returned from Protx.","O cliente retornou do Protx."
-"The order %s was canceled by the customer.","O pedido %s foi cancelado pelo cliente."
-"Title","Título"
-"Transaction Description","Descrição da Transação"
-"Vendor Email","Email do Vendedor"
-"Vendor Email Notification","Notificação de Email do Vendedor"
-"Vendor Encrypted Password","Senha Encriptada do Vendedor"
-"Vendor Name","Nome do Vendedor"
-"You will be redirected to protx in a few seconds.","Você será redirecionado para protx em poucos segundos."
-"You will be redirected to the Protx website when you place an order.","Você será redirecionado para o site Protx quando você colocar uma ordem."
diff --git a/app/locale/pt_BR/Mage_Strikeiron.csv b/app/locale/pt_BR/Mage_Strikeiron.csv
deleted file mode 100644
index ca3a5e0e3cb7c40bc9777781acb27ad3e53dc06e..0000000000000000000000000000000000000000
--- a/app/locale/pt_BR/Mage_Strikeiron.csv
+++ /dev/null
@@ -1,47 +0,0 @@
-"%s is not a supported currency.","A moeda %s não é suportada."
-"Accept","Aceitar"
-"Basic","Básico"
-"Cannot retrieve rate from %s to %s.","Não é possível recuperar a taxa entre %s e %s."
-"Cannot retrieve rate from Strikeiron.","Não é possível recuperar a taxa de Strikeiron."
-"Check All Email Servers","Verificar Todos Servidores de E-Mail"
-"Complete","Completar"
-"Country/Region/Postal Code Combination","Combinação País/Região/Código Postal"
-"Customer Tax Class","Classe Fiscal do Cliente"
-"Email Verification","Verificação de E-Mail"
-"Enable Email Verification","Habilitar Verificação de E-Mail"
-"Enable Foreign Exchange Rate","Habilitar Taxa de Câmbio Estrangeira"
-"Enable Global Address Verification","Habilitar Verificação de Endereço Global"
-"Enable Sales and Use Tax","Habilitar Vendas e Usar Imposto"
-"Enable US Address Verification","Habilitar Verificação de Endereço nos E.U.A."
-"Error Address Action","Ação para Endereço Inválido"
-"Error Email Recipient","Erro de Destinatário de Email"
-"Error Email Sender","Erro de Remetente de Email"
-"Error Email Template","Erro de Template de Email"
-"Foreign Exchange Rates","Taxas de Câmbio Estrangeiras"
-"Global Address Verification","Verificação de Endereço Global"
-"If type is complete and zip code belongs to multiple tax rates, choose to charge minimum tax rate or maximum tax rate.","Se o tipo for completo e o código postal pertencer a múltiplas taxas de imposto, optar pela cobrança da taxa mínima de imposto ou da taxa máxima de imposto."
-"Invalid email address.","Endereço de e-mail inválido."
-"Maximum Tax Rate","Taxa Máxima de Imposto"
-"Minimum Tax Rate","Taxa Mínima de Imposto"
-"Password","Senha"
-"Pop up warning and accept","Pop up de aviso e aceitar"
-"Product Tax Class","Classe de Imposto sobre Produtos"
-"Reject","Rejeitar"
-"Sales and Use Tax","Imposto sobre Vendas e Uso"
-"Sales and Use Tax Type","Tipo de Imposto sobre Vendas e Uso"
-"Strikeiron","Strikeiron"
-"Strikeiron Config","Configuração Strikeiron"
-"Strikeiron Section","Seção Strikeiron"
-"Strikeiron foreign exchange rate is disabled.","Taxa de câmbio estrangeira Strikeiron está desativada."
-"Tax","Taxas"
-"The email address cannot be verified. Please check again and make sure your email address is entered correctly.","O endereço de email não pode ser verificado. Por favor verifique novamente e certifique-se que o seu endereço de email foi inserido corretamente."
-"There are no more hits remaining for the foreign Exchange Rate Service.","Não há mais acessos restantes para o Serviço de Taxa de Câmbio."
-"There is an error in retrieving the tax rate. Please contact us.","Há um erro na recuperação da taxa de imposto. Entre em contato conosco."
-"There is an error in verifying an email. Please contact us.","Há um erro na verificação de um email. Entre em contato conosco."
-"There is no response back from Strikeiron server.","Não há resposta de volta do servidor Strikeiron."
-"US Address Verification","Verificação do Endereço dos EUA"
-"Undetermined Email Action","Ação Email Indeterminada"
-"Use","Uso"
-"User ID","Identificação do Usuário"
-"Verify Address in Admin","Verificar o Endereço na Administração"
-"Verify Email in Admin","Verificar o Email na Administração"
diff --git a/app/locale/zh_CN/Find_Feed.csv b/app/locale/zh_CN/Find_Feed.csv
deleted file mode 100644
index e03a1a28cbc3f3dd2210ef3836a30424ba0f9cb0..0000000000000000000000000000000000000000
--- a/app/locale/zh_CN/Find_Feed.csv
+++ /dev/null
@@ -1,44 +0,0 @@
-"%s codes deleted","%s 代码已删除"
-"%s codes imported","%s 代码已导入"
-"%s codes not imported","%s 代码未导入"
-"%s product in feed.","%s 产品已包含在Feed中。"
-"%s product not in feed.","%s 产品尚未包含在Feed中。"
-"Add new","添加新的"
-"Attrib. Set Name","属性。 设置名称"
-"Attributes map","属性图"
-"Cron Frequency","Cron频率"
-"Cron Hour","Cron小时"
-"Delete","删除"
-"Eav code","Eav代码"
-"FTP Password","FTP密码"
-"FTP Path","FTP路径"
-"FTP Server","FTP服务器"
-"FTP Settings","FTP设置"
-"FTP User","FTP用户"
-"FTP: Can't delete files","FTP:无法删除文件"
-"Feed","Feed"
-"Feed code","Feed代码"
-"ID","ID"
-"Import","导入"
-"Import attribute map","导入属性图"
-"Import code","导入代码"
-"In feed","位于Feed中"
-"In order to access your FTP account information, you must first register and verify your store in TheFind Merchant Center.  Click <a href=""https://merchant.thefind.com/mc/claim.fhtml"">here</a> to get started.","为了访问您的 FTP 帐户信息,您必须首先在 TheFind Merchant Center 注册并验证您的店铺。请点击 <a href=""https://merchant.thefind.com/mc/claim.fhtml"">这里</a> 以继续。"
-"Is imported","已导入"
-"Item params","项目参数"
-"Manage attributes","管理属性"
-"Manage items","管理项目"
-"Not import","未导入"
-"Not publish","未发布"
-"Price","ä»·æ ¼"
-"Product Name","产品名"
-"Product import","产品导入"
-"Publish","发布"
-"SKU","SKU"
-"Settings","设置"
-"The Find","The Find"
-"TheFind Feed Filename","TheFind Feed 文件名"
-"TheFind feed","TheFind Feed"
-"Type","类型"
-"Unable to process an import. ","无法处理导入。"
-"Update TheFind Item when Product is Updated","产品更新后同时更新 TheFind 项目"
diff --git a/app/locale/zh_CN/Mage_GoogleBase.csv b/app/locale/zh_CN/Mage_GoogleBase.csv
deleted file mode 100644
index 9c447986db62d94ce5f69efeeb31d6520d21920c..0000000000000000000000000000000000000000
--- a/app/locale/zh_CN/Mage_GoogleBase.csv
+++ /dev/null
@@ -1,78 +0,0 @@
-"Active","活动"
-"Add Attribute Mapping","添加属性映射"
-"Add New Attribute","添加新属性"
-"Add to Google Base","添加到Google Base"
-"Are you sure?","您是否确认?"
-"Attribute","属性"
-"Attribute Set","属性集"
-"Attribute Set and Item Type","属性集与项目类型"
-"Attributes","属性"
-"Attributes Mapping","属性映射"
-"Attributes Set","属性集"
-"AuthSub","AuthSub"
-"Available Products","可用产品"
-"Base Currency should be set to %s for %s in system configuration. Otherwise item prices won't be correct in Google Base.","应在系统配置中将基本货币设置为 %s 的 %s,否则商品价格在Google Base中将不准确。"
-"Cannot update Google Base Item for Store '%s'","无法为店铺 '%s' 更新 Google Base 项"
-"Captcha confirmation error: %s","验证码有误:%s"
-"Captcha has been confirmed.","验证码已确认。"
-"Catalog","分类"
-"Clicks","点击"
-"ClientLogin","客户端登录"
-"Confirm","确认"
-"Current Mapping will be reloaded. Continue?","当前映射会重新加载,是否继续?"
-"Custom attribute, no mapping","自定义属性,无映射"
-"Delete","删除"
-"Delete Mapping","删除映射"
-"Edit Item Type","编辑项目类型"
-"Edit Item Type ""%s""","编辑项目类型“%s”"
-"Error: %s","错误:%s"
-"Expires","过期"
-"Google","Google"
-"Google Base","Google Base"
-"Google Base Attribute","Google 基本属性"
-"Google Base ID","Google 基本 ID"
-"Google Base Item Type","Google 基本项目类型"
-"Google Base Item type","Google 基本项目类型"
-"Google Base Items","Google Base项目"
-"Google base","Google 基本"
-"Hide","隐藏"
-"Hosted","已托管"
-"Hosted or Google","托管或 Google"
-"Impr.","Impr."
-"Invalid Product Model for Google Base Item","Google Base 项目中无效的产品型号"
-"Item Type was deleted","项目类型已删除"
-"Item Types","项目类型"
-"Item model is not specified to delete Google Base entry.","未指定要删除 Google Base 条目的项目型号。"
-"Items","项目"
-"Manage Attribute Mapping","管理属性映射"
-"Manage Attributes","管理属性"
-"Manage Items","管理项目"
-"New Item Type","新项目类型"
-"New ItemType","新的项目类型"
-"No","否"
-"No items were deleted from Google Base","没有从Google Base中删除内容"
-"No items were published","没有发布内容"
-"No items were saved as inactive items","没有将内容保存为不活跃内容"
-"No products were added to Google Base","没有将产品加入Google Base"
-"Object model is not specified to save Google Base entry.","对象模型未指定保存到Google Base项。"
-"Please, select Attribute Set and Google Item Type to load attributes","请选择属性集与Google项目类型以加载属性"
-"Product Name","产品名"
-"Publish","发布"
-"Published","已发布"
-"Remove","删除"
-"Save Mapping","保存映射"
-"Session expired during export. Please revise exported products and repeat the process if necessary.","导出过程中会话过期。请修订导出的产品,并在有必要时重复该操作。"
-"Synchronize","同步"
-"Target Country","目标国家"
-"The item type has been saved.","该项目类型已保存。"
-"This action will update items statistics and remove the items which are not available in Google Base. Continue?","该操作将更新项目状态,并删除Google Base中不可用的内容,是否继续?"
-"Total of %d items(s) have been deleted; total of %d items(s) have been updated.","总共 %d 个内容被删除,共 %d 个内容被更新。"
-"Total of %d items(s) have been published.","共 %d 个内容被发布。"
-"Total of %d items(s) have been removed from Google Base.","共 %d 个内容被从Google Base删除。"
-"Total of %d items(s) have been saved as inactive items.","共 %d 个内容被保存为不活跃内容。"
-"Total of %d product(s) have been added to Google Base.","共 %d 个产品被加入Google Base。"
-"Unable to connect to Google Base. Please, check Account settings in configuration.","无法连接到Google Base,请检查配置中的帐户设置。"
-"Unable to select a Store View.","无法选择店铺视图。"
-"View Available Products","查看可用产品。"
-"View Item in Google Base","在Google Base中查看项目"
-"Yes","是"
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..ce3ee5f9ac4d4f938cee648a75e59589eb62659c
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,14 @@
+{
+    "name": "magento/community-edition",
+    "description": "eCommerce Platform for Growth (Community Edition)",
+    "license": ["OSL-3.0", "AFL-3.0"],
+    "require": {
+        "php": ">=5.3.0"
+    },
+    "autoload": {
+        "psr-0": {
+            "": ["app/code/local", "app/code/community", "app/code/core", "lib"]
+        }
+    },
+    "minimum-stability": "dev"
+}
diff --git a/dev/tests/integration/testsuite/Mage/Captcha/Model/ObserverTest.php b/dev/tests/integration/testsuite/Mage/Captcha/Model/ObserverTest.php
index dd7c6817570b2654fec990995af646262b7dc188..a75ec91b4d1c94ef6b4841eea101e83bc78e51ad 100644
--- a/dev/tests/integration/testsuite/Mage/Captcha/Model/ObserverTest.php
+++ b/dev/tests/integration/testsuite/Mage/Captcha/Model/ObserverTest.php
@@ -80,4 +80,22 @@ class Mage_Captcha_Model_ObserverTest extends Magento_Test_TestCase_ControllerAb
 
         $this->assertTrue($captchaModel->isRequired());
     }
+
+    /**
+     * @magentoDbIsolation enabled
+     * @magentoAppIsolation enabled
+     * @magentoDataFixture Mage/Captcha/_files/dummy_user.php
+     * @magentoConfigFixture admin_store admin/captcha/enable 1
+     * @magentoConfigFixture admin_store admin/captcha/forms backend_forgotpassword
+     * @magentoConfigFixture admin_store admin/captcha/mode always
+     */
+    public function testCheckUserForgotPasswordBackendWhenCaptchaFailed()
+    {
+        $this->getRequest()->setPost(array(
+            'email' => 'dummy@dummy.com',
+            'captcha' => array('backend_forgotpassword' => 'dummy')
+        ));
+        $this->dispatch('backend/admin/auth/forgotpassword');
+        $this->assertRedirect($this->stringContains('backend/admin/auth/forgotpassword'));
+    }
 }
diff --git a/dev/tests/integration/testsuite/Mage/Captcha/_files/dummy_user.php b/dev/tests/integration/testsuite/Mage/Captcha/_files/dummy_user.php
new file mode 100644
index 0000000000000000000000000000000000000000..0024ec5d8dca85d4a10fe3d906d3e8046881983e
--- /dev/null
+++ b/dev/tests/integration/testsuite/Mage/Captcha/_files/dummy_user.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Captcha
+ * @subpackage  integration_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Create dummy user
+ */
+$user = new Mage_User_Model_User();
+$user->setFirstname('Dummy')
+    ->setLastname('Dummy')
+    ->setEmail('dummy@dummy.com')
+    ->setUsername('dummy_username')
+    ->setPassword('dummy_password1')
+    ->save();
diff --git a/dev/tests/integration/testsuite/Mage/Core/Model/Config/OptionsTest.php b/dev/tests/integration/testsuite/Mage/Core/Model/Config/OptionsTest.php
index 78fb73f75878fd5808cdf07d119b9e9f881f670d..0713d4392acf613cb1f6a9bedf914c9d14b3de11 100644
--- a/dev/tests/integration/testsuite/Mage/Core/Model/Config/OptionsTest.php
+++ b/dev/tests/integration/testsuite/Mage/Core/Model/Config/OptionsTest.php
@@ -94,7 +94,6 @@ class Mage_Core_Model_Config_OptionsTest extends PHPUnit_Framework_TestCase
      * @covers Mage_Core_Model_Config_Options::getDesignDir
      * @covers Mage_Core_Model_Config_Options::getEtcDir
      * @covers Mage_Core_Model_Config_Options::getLibDir
-     * @covers Mage_Core_Model_Config_Options::getLocaleDir
      * @covers Mage_Core_Model_Config_Options::getMediaDir
      * @covers Mage_Core_Model_Config_Options::getSysTmpDir
      * @covers Mage_Core_Model_Config_Options::getVarDir
@@ -126,7 +125,6 @@ class Mage_Core_Model_Config_OptionsTest extends PHPUnit_Framework_TestCase
             array('getDesignDir', 'Design directory %s does not exist.'),
             array('getEtcDir', 'Etc directory %s does not exist.'),
             array('getLibDir', 'Lib directory %s does not exist.'),
-            array('getLocaleDir', 'Locale directory %s does not exist.'),
             array('getMediaDir', 'Media directory %s does not exist.'),
             array('getSysTmpDir', 'System temporary directory %s does not exist.'),
             array('getVarDir', 'Var directory %s does not exist.'),
diff --git a/dev/tests/integration/testsuite/Mage/Core/Model/TranslateTest.php b/dev/tests/integration/testsuite/Mage/Core/Model/TranslateTest.php
index dfe4712b0a7e29e74eb47c205c33475060531f4f..c21939ad47b4a6afe1bb56572c0755e545552d77 100644
--- a/dev/tests/integration/testsuite/Mage/Core/Model/TranslateTest.php
+++ b/dev/tests/integration/testsuite/Mage/Core/Model/TranslateTest.php
@@ -44,6 +44,8 @@ class Mage_Core_Model_TranslateTest extends PHPUnit_Framework_TestCase
 
     public function setUp()
     {
+        Mage::getConfig()->setModuleDir('Mage_Core', 'locale', dirname(__FILE__) . '/_files/Mage/Core/locale');
+        Mage::getConfig()->setModuleDir('Mage_Catalog', 'locale', dirname(__FILE__) . '/_files/Mage/Catalog/locale');
         $this->_model = new Mage_Core_Model_Translate();
         $this->_model->init('frontend');
     }
diff --git a/dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_US/Mage_Catalog.csv b/dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Catalog/locale/en_US/Mage_Catalog.csv
similarity index 100%
rename from dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_US/Mage_Catalog.csv
rename to dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Catalog/locale/en_US/Mage_Catalog.csv
diff --git a/dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_AU/Mage_Core.csv b/dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_AU/Mage_Core.csv
similarity index 73%
rename from dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_AU/Mage_Core.csv
rename to dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_AU/Mage_Core.csv
index 7a5d91ee6e4aa909582c60091f45046dd011d1f8..a13c2e20858a5dd5f842130bdc4dce626ba26921 100644
--- a/dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_AU/Mage_Core.csv
+++ b/dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_AU/Mage_Core.csv
@@ -1 +1 @@
-"Original value for Mage_Core module","Translated value for Mage_Core module in en_AU"
\ No newline at end of file
+"Original value for Mage_Core module","Translated value for Mage_Core module in en_AU"
diff --git a/dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_UK/Mage_Core.csv b/dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_UK/Mage_Core.csv
similarity index 62%
rename from dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_UK/Mage_Core.csv
rename to dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_UK/Mage_Core.csv
index 13ce1b817afef33d4fb9cc4bd305289752727823..e94061160816fdb5dd610056ee259ea3b4e7efce 100644
--- a/dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_UK/Mage_Core.csv
+++ b/dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_UK/Mage_Core.csv
@@ -1 +1 @@
-"Text with different translation on different modules","Text translation by Mage_Core module in en_UK"
\ No newline at end of file
+"Text with different translation on different modules","Text translation by Mage_Core module in en_UK"
diff --git a/dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_US/Mage_Core.csv b/dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_US/Mage_Core.csv
similarity index 100%
rename from dev/tests/integration/testsuite/Mage/Core/Model/_files/locale/en_US/Mage_Core.csv
rename to dev/tests/integration/testsuite/Mage/Core/Model/_files/Mage/Core/locale/en_US/Mage_Core.csv
diff --git a/dev/tests/integration/testsuite/Mage/Install/Helper/DataTest.php b/dev/tests/integration/testsuite/Mage/Install/Helper/DataTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e51f95963713a8ab83a067e4d0a3e8a29e08d160
--- /dev/null
+++ b/dev/tests/integration/testsuite/Mage/Install/Helper/DataTest.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Mage_Install
+ * @subpackage  integration_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+class Mage_Install_Helper_DataTest extends PHPUnit_Framework_TestCase
+{
+    public function testCleanVarFolder()
+    {
+        $rootFolder = Mage::getConfig()->getVarDir() . DIRECTORY_SEPARATOR . 'parentFolder';
+        $subFolderA = $rootFolder . DIRECTORY_SEPARATOR . 'subFolderA' . DIRECTORY_SEPARATOR;
+        $subFolderB = $rootFolder . DIRECTORY_SEPARATOR . 'subFolderB' . DIRECTORY_SEPARATOR;
+        @mkdir($subFolderA, 0777, true);
+        @mkdir($subFolderB, 0777, true);
+        @file_put_contents($subFolderB . 'test.txt', 'Some text here');
+        $helper = new Mage_Install_Helper_Data();
+        $helper->setVarSubFolders(array($rootFolder));
+        $helper->cleanVarFolder();
+        $this->assertFalse(is_dir($rootFolder));
+    }
+}
diff --git a/dev/tests/integration/testsuite/Mage/Review/Model/Resource/Review/Product/CollectionTest.php b/dev/tests/integration/testsuite/Mage/Review/Model/Resource/Review/Product/CollectionTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b618e8b5c82523076dd3c89d467c3954cbec2e6a
--- /dev/null
+++ b/dev/tests/integration/testsuite/Mage/Review/Model/Resource/Review/Product/CollectionTest.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Mage_Review
+ * @subpackage  integration_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+class Mage_Review_Model_Resource_Review_Product_CollectionTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * Test getResultingIds
+     * 1) check that filter was applied
+     * 2) check that elements are ordered correctly
+     *
+     * @magentoDataFixture Mage/Review/_files/different_reviews.php
+     */
+    public function testGetResultingIds()
+    {
+        $collection = new Mage_Review_Model_Resource_Review_Product_Collection();
+        $collection->addStatusFilter(Mage_Review_Model_Review::STATUS_APPROVED)
+            ->setOrder('rdt.title', Mage_Review_Model_Resource_Review_Product_Collection::SORT_ORDER_ASC);
+        $actual = $collection->getResultingIds();
+        $this->assertCount(2, $actual);
+        $this->assertLessThan($actual[0], $actual[1]);
+    }
+}
diff --git a/dev/tests/integration/testsuite/Mage/Review/_files/different_reviews.php b/dev/tests/integration/testsuite/Mage/Review/_files/different_reviews.php
new file mode 100644
index 0000000000000000000000000000000000000000..a1bd27bd7e61c7ee29e6b78beada0d98c144cccd
--- /dev/null
+++ b/dev/tests/integration/testsuite/Mage/Review/_files/different_reviews.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Mage
+ * @package     Mage_Review
+ * @subpackage  integration_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+require __DIR__ . '/../../Catalog/_files/product_simple.php';
+
+$review = new Mage_Review_Model_Review(array(
+    'nickname' => 'Nickname',
+    'title' => 'Review Summary',
+    'detail' => 'Review text'
+));
+$review
+    ->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
+    ->setEntityPkValue(1) // the last product from the fixture file included above
+    ->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
+    ->setStoreId(Mage::app()->getStore()->getId())
+    ->setStores(array(Mage::app()->getStore()->getId()))
+    ->save();
+
+$review = new Mage_Review_Model_Review(array(
+    'nickname' => 'Nickname',
+    'title' => '2 filter first review',
+    'detail' => 'Review text'
+));
+$review
+    ->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
+    ->setEntityPkValue(1) // the last product from the fixture file included above
+    ->setStatusId(Mage_Review_Model_Review::STATUS_APPROVED)
+    ->setStoreId(Mage::app()->getStore()->getId())
+    ->setStores(array(Mage::app()->getStore()->getId()))
+    ->save();
+
+$review = new Mage_Review_Model_Review(array(
+    'nickname' => 'Nickname',
+    'title' => '1 filter second review',
+    'detail' => 'Review text'
+));
+$review
+    ->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
+    ->setEntityPkValue(1) // the last product from the fixture file included above
+    ->setStatusId(Mage_Review_Model_Review::STATUS_APPROVED)
+    ->setStoreId(Mage::app()->getStore()->getId())
+    ->setStores(array(Mage::app()->getStore()->getId()))
+    ->save();
diff --git a/dev/tests/unit/testsuite/Mage/Review/Helper/Action/PagerTest.php b/dev/tests/unit/testsuite/Mage/Review/Helper/Action/PagerTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..4aa9085847e28bd97a164ae26d7fce82edf1cc49
--- /dev/null
+++ b/dev/tests/unit/testsuite/Mage/Review/Helper/Action/PagerTest.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Mage_Review
+ * @subpackage  integration_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+class Mage_Review_Helper_Action_PagerTest extends PHPUnit_Framework_TestCase
+{
+    /** @var Mage_Review_Helper_Action_Pager */
+    protected $_helper = null;
+
+    /**
+     * Prepare helper object
+     */
+    protected function setUp()
+    {
+        $sessionMock = $this->getMockBuilder('Mage_Backend_Model_Session')
+            ->disableOriginalConstructor()
+            ->setMethods(array('setData', 'getData'))
+            ->getMock();
+        $sessionMock->expects($this->any())
+            ->method('setData')
+            ->with($this->equalTo('search_result_idsreviews'), $this->anything());
+        $sessionMock->expects($this->any())
+            ->method('getData')
+            ->with($this->equalTo('search_result_idsreviews'))
+            ->will($this->returnValue(array(3,2,6,5)));
+
+        $this->_helper = $this->getMockBuilder('Mage_Review_Helper_Action_Pager')
+            ->setMethods(array('_getSession'))
+            ->getMock();
+        $this->_helper->expects($this->any())
+            ->method('_getSession')
+            ->will($this->returnValue($sessionMock));
+        $this->_helper->setStorageId('reviews');
+    }
+
+    /**
+     * Test storage set with proper parameters
+     */
+    public function testStorageSet()
+    {
+        $this->_helper->setItems(array(1));
+    }
+
+    /**
+     * Test getNextItem
+     */
+    public function testGetNextItem()
+    {
+        $this->assertEquals(2, $this->_helper->getNextItemId(3));
+    }
+
+    /**
+     * Test getNextItem when item not found or no next item
+     */
+    public function testGetNextItemNotFound()
+    {
+        $this->assertFalse($this->_helper->getNextItemId(30));
+        $this->assertFalse($this->_helper->getNextItemId(5));
+    }
+
+    /**
+     * Test getPreviousItemId
+     */
+    public function testGetPreviousItem()
+    {
+        $this->assertEquals(2, $this->_helper->getPreviousItemId(6));
+    }
+
+    /**
+     * Test getPreviousItemId when item not found or no next item
+     */
+    public function testGetPreviousItemNotFound()
+    {
+        $this->assertFalse($this->_helper->getPreviousItemId(30));
+        $this->assertFalse($this->_helper->getPreviousItemId(3));
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Validator/ConfigTest.php b/dev/tests/unit/testsuite/Magento/Validator/ConfigTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..fdc9f134eb9276166d554391e201c0c175eabe5d
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Validator/ConfigTest.php
@@ -0,0 +1,194 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+class Magento_Validator_ConfigTest extends PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Magento_Validator_Config
+     */
+    protected static $_model = null;
+
+    public static function setUpBeforeClass()
+    {
+        self::$_model = new Magento_Validator_Config(glob(__DIR__ . '/_files/validation/positive/*/validation.xml'));
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testConstructException()
+    {
+        new Magento_Validator_Config(array());
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testGetValidationRulesInvalidEntityName()
+    {
+        self::$_model->getValidationRules('invalid_entity', null);
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testGetValidationRulesInvalidGroupName()
+    {
+        self::$_model->getValidationRules('test_entity', 'invalid_group');
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testGetValidationRulesInvalidZendConstraint()
+    {
+        $configFile = glob(__DIR__ . '/_files/validation/negative/invalid_zend_constraint.xml');
+        $config = new Magento_Validator_Config($configFile);
+        $config->getValidationRules('test_entity', 'test_group_a');
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testGetValidationRulesInvalidMagentoConstraint()
+    {
+        $configFile = glob(__DIR__ . '/_files/validation/negative/invalid_magento_constraint.xml');
+        $config = new Magento_Validator_Config($configFile);
+        $config->getValidationRules('test_entity', 'test_group_a');
+    }
+
+    /**
+     * @dataProvider getValidationRulesDataProvider
+     * @param string $entityName
+     * @param string $groupName
+     * @param array $expectedRules
+     */
+    public function testGetValidationRules($entityName, $groupName, $expectedRules)
+    {
+        $actualRules = self::$_model->getValidationRules($entityName, $groupName);
+        $this->assertRulesEqual($expectedRules, $actualRules);
+    }
+
+    /**
+     * Assert that all expected validation rules are present with correct constraint objects.
+     *
+     * @param array $expectedRules
+     * @param array $actualRules
+     */
+    public function assertRulesEqual(array $expectedRules, array $actualRules)
+    {
+        foreach ($expectedRules as $expectedRule => $expectedConstraints) {
+            $this->assertArrayHasKey($expectedRule, $actualRules);
+
+            foreach ($expectedConstraints as $expectedConstraint) {
+                $constraintFound = false;
+                foreach ($actualRules[$expectedRule] as $actualConstraint) {
+                    if ($expectedConstraint['constraint'] instanceof $actualConstraint['constraint']) {
+                        $constraintFound = true;
+                        if (isset($expectedConstraint['field'])) {
+                            $this->assertArrayHasKey('field', $actualConstraint);
+                            $this->assertEquals($expectedConstraint['field'], $actualConstraint['field']);
+                        }
+                        break;
+                    }
+                }
+                if (!$constraintFound) {
+                    $this->fail(sprintf('Expected constraint "%s" was not found in the rule "%"',
+                        get_class($expectedConstraint['constraint']), $expectedRule));
+                }
+            }
+        }
+    }
+
+    public function getValidationRulesDataProvider()
+    {
+        $groupARules = array(
+            'test_rule_zend' => array(
+                array(
+                    'constraint' => $this->getMock('Zend_Validate_Alnum'),
+                    'field' => 'test_field'
+                ),
+            ),
+            'test_rule_constraint' => array(
+                array(
+                    'constraint' => $this->getMock('Magento_Validator_Test'),
+                ),
+            ),
+        );
+        $groupBRules = array(
+            'test_rule_constraint' => array(
+                array(
+                    'constraint' => $this->getMock('Magento_Validator_Test'),
+                ),
+            ),
+            'test_rule_constraint_2' => array(
+                array(
+                    'constraint' => $this->getMock('Magento_Validator_Test'),
+                    'field' => 'constraint_field'
+                ),
+            ),
+        );
+        $groupCRules = array(
+            'test_rule' => array(
+                array(
+                    'constraint' => $this->getMock('Zend_Validate_Int'),
+                    'field' => 'test_field'
+                ),
+            ),
+        );
+
+        return array(
+            array('test_entity', 'test_group_a', $groupARules),
+            array('test_entity', 'test_group_b', $groupBRules),
+            array('test_entity_b', 'test_group_c', $groupCRules),
+        );
+    }
+
+    public function testGetSchemaFile()
+    {
+        $this->assertFileExists(self::$_model->getSchemaFile());
+    }
+}
+
+/** Dummy classes to test that constraint classes extend correct abstract. */
+class Magento_Validator_Invalid_Abstract
+{
+}
+class Magento_Validator_Test extends Magento_Validator_ConstraintAbstract
+{
+    /**
+     * @param array $data
+     * @param null $field
+     * @return bool
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     */
+    public function isValidData(array $data, $field = null)
+    {
+        return true;
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Validator/ConstraintAbstractTest.php b/dev/tests/unit/testsuite/Magento/Validator/ConstraintAbstractTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c8ba9795fb1e83d594e4a34a08fee928bc331399
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Validator/ConstraintAbstractTest.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+class Magento_Validator_ConstraintAbstractTest extends PHPUnit_Framework_TestCase
+{
+    public function testAddGetErrors()
+    {
+        $expectedErrors = array(
+            'test_field' => array(
+                'test error #1',
+                'test error #2',
+            )
+        );
+        /** @var Magento_Validator_ConstraintAbstract $constraint */
+        $constraint = $this->getMockForAbstractClass('Magento_Validator_ConstraintAbstract');
+        $constraint->addError('test_field', 'test error #1');
+        $constraint->addError('test_field', 'test error #2');
+
+        $this->assertEquals($expectedErrors, $constraint->getErrors());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Validator/_files/validation/negative/invalid_magento_constraint.xml b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/negative/invalid_magento_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b5a788203ae451525db4219f8d3028e35ce8dddd
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/negative/invalid_magento_constraint.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<validation>
+    <entity name="test_entity">
+        <rules>
+            <rule name="test_rule_zend">
+                <constraints>
+                    <!-- Class that does not implements any of valid interfaces -->
+                    <constraint class="Magento_Validator_Invalid_Abstract"/>
+                </constraints>
+            </rule>
+        </rules>
+        <groups>
+            <group name="test_group_a">
+                <uses>
+                    <use rule="test_rule_zend"/>
+                </uses>
+            </group>
+        </groups>
+    </entity>
+</validation>
diff --git a/dev/tests/unit/testsuite/Magento/Validator/_files/validation/negative/invalid_zend_constraint.xml b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/negative/invalid_zend_constraint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d12e4cf693dab364285c181f40aed76ac74b763
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/negative/invalid_zend_constraint.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<validation>
+    <entity name="test_entity">
+        <rules>
+            <rule name="test_rule_zend">
+                <constraints>
+                    <!-- Zend constraint must have field attribute -->
+                    <constraint class="Zend_Validate_Alnum"/>
+                </constraints>
+            </rule>
+        </rules>
+        <groups>
+            <group name="test_group_a">
+                <uses>
+                    <use rule="test_rule_zend"/>
+                </uses>
+            </group>
+        </groups>
+    </entity>
+</validation>
diff --git a/dev/tests/unit/testsuite/Magento/Validator/_files/validation/positive/module_a/validation.xml b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/positive/module_a/validation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9c64b77de52b51f521f8f241422b36a0a2ac15bb
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/positive/module_a/validation.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<validation>
+    <entity name="test_entity">
+        <rules>
+            <rule name="test_rule_zend">
+                <constraints>
+                    <constraint class="Zend_Validate_Alnum" field="test_field"/>
+                </constraints>
+            </rule>
+            <rule name="test_rule_constraint">
+                <constraints>
+                    <constraint class="Magento_Validator_Test"/>
+                </constraints>
+            </rule>
+        </rules>
+        <groups>
+            <group name="test_group_a">
+                <uses>
+                    <use rule="test_rule_zend"/>
+                    <use rule="test_rule_constraint"/>
+                </uses>
+            </group>
+            <group name="test_group_b">
+                <uses>
+                    <use rule="test_rule_constraint"/>
+                </uses>
+            </group>
+        </groups>
+    </entity>
+</validation>
diff --git a/dev/tests/unit/testsuite/Magento/Validator/_files/validation/positive/module_b/validation.xml b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/positive/module_b/validation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a89c383e9e73e6f60f978289c97259e9f89d594a
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Validator/_files/validation/positive/module_b/validation.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<validation>
+    <entity name="test_entity">
+        <rules>
+            <rule name="test_rule_constraint_2">
+                <constraints>
+                    <constraint class="Magento_Validator_Test" field="constraint_field"/>
+                </constraints>
+            </rule>
+        </rules>
+        <groups>
+            <group name="test_group_b">
+                <uses>
+                    <use rule="test_rule_constraint_2"/>
+                </uses>
+            </group>
+        </groups>
+    </entity>
+    <entity name="test_entity_b">
+        <rules>
+            <rule name="test_rule">
+                <constraints>
+                    <constraint class="Zend_Validate_Int" field="test_field"/>
+                </constraints>
+            </rule>
+        </rules>
+        <groups>
+            <group name="test_group_c">
+                <uses>
+                    <use rule="test_rule"/>
+                </uses>
+            </group>
+        </groups>
+    </entity>
+</validation>
diff --git a/dev/tests/unit/testsuite/Magento/ValidatorTest.php b/dev/tests/unit/testsuite/Magento/ValidatorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..76fd7679b6d722b9d936cd602e6d5884e3ddd35f
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/ValidatorTest.php
@@ -0,0 +1,148 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  unit_tests
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Test case for Magento_Validator
+ *
+ * @group validator
+ */
+class Magento_ValidatorTest extends PHPUnit_Framework_TestCase
+{
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testConstructException()
+    {
+        /** @var Magento_Validator_Config $configMock */
+        $configMock = $this->getMockBuilder('Magento_Validator_Config')->disableOriginalConstructor()->getMock();
+        new Magento_Validator(null, null, $configMock);
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     */
+    public function testConstructEmptyGroupNameException()
+    {
+        /** @var Magento_Validator_Config $configMock */
+        $configMock = $this->getMockBuilder('Magento_Validator_Config')->disableOriginalConstructor()->getMock();
+        new Magento_Validator('test_entity', null, $configMock);
+    }
+
+    /**
+     * @param array $dataToValidate
+     * @param PHPUnit_Framework_MockObject_MockObject $zendConstraintMock
+     * @param PHPUnit_Framework_MockObject_MockObject $mageConstraintMock
+     * @param Magento_Validator_Config $configMock
+     * @dataProvider dataProviderForValidator
+     */
+    public function testIsValid($dataToValidate, $zendConstraintMock, $mageConstraintMock, $configMock)
+    {
+        $zendConstraintMock->expects($this->once())
+            ->method('isValid')
+            ->with($dataToValidate['test_field'])
+            ->will($this->returnValue(true));
+
+        $mageConstraintMock->expects($this->once())
+            ->method('isValidData')
+            ->with($dataToValidate, 'test_field_constraint')
+            ->will($this->returnValue(true));
+
+        $validator = new Magento_Validator('test_entity', 'test_group_a', $configMock);
+        $this->assertTrue($validator->isValid($dataToValidate));
+    }
+
+    /**
+     * @param array $dataToValidate
+     * @param PHPUnit_Framework_MockObject_MockObject $zendConstraintMock
+     * @param PHPUnit_Framework_MockObject_MockObject $mageConstraintMock
+     * @param Magento_Validator_Config $configMock
+     * @dataProvider dataProviderForValidator
+     */
+    public function testGetErrors($dataToValidate, $zendConstraintMock, $mageConstraintMock, $configMock)
+    {
+        $expectedZendErrors = array('Test Zend_Validate_Interface constraint error.');
+        $zendConstraintMock->expects($this->once())
+            ->method('isValid')
+            ->with($dataToValidate['test_field'])
+            ->will($this->returnValue(false));
+        $zendConstraintMock->expects($this->once())
+            ->method('getMessages')
+            ->will($this->returnValue($expectedZendErrors));
+
+        $expectedMageErrors = array(
+            'test_field_constraint' => array('Test Magento_Validator_ConstraintInterface constraint error.')
+        );
+        $mageConstraintMock->expects($this->once())
+            ->method('isValidData')
+            ->with($dataToValidate, 'test_field_constraint')
+            ->will($this->returnValue(false));
+        $mageConstraintMock->expects($this->once())
+            ->method('getErrors')
+            ->will($this->returnValue($expectedMageErrors));
+
+        $validator = new Magento_Validator('test_entity', 'test_group_a', $configMock);
+        $this->assertFalse($validator->isValid($dataToValidate));
+        $expectedErrors = array_merge(array('test_field' => $expectedZendErrors),
+            $expectedMageErrors);
+        $actualErrors = $validator->getMessages();
+        $this->assertEquals($expectedErrors, $actualErrors);
+    }
+
+    public function dataProviderForValidator()
+    {
+        $dataToValidate = array(
+            'test_field' => 'test_value',
+            'test_field_constraint' => 'test value constraint',
+        );
+
+        $zendConstraintMock = $this->getMock('Zend_Validate_Alnum', array('isValid', 'getMessages'));
+        $mageConstraintMock = $this->getMock('Magento_Validator_Constraint', array('isValidData', 'getErrors'));
+        $validationRules = array(
+            'test_rule' => array(
+                array(
+                    'constraint' => $zendConstraintMock,
+                    'field' => 'test_field'
+                ),
+                array(
+                    'constraint' => $mageConstraintMock,
+                    'field' => 'test_field_constraint'
+                ),
+            ),
+        );
+
+        $configMock = $this->getMockBuilder('Magento_Validator_Config')->disableOriginalConstructor()->getMock();
+        $configMock->expects($this->once())
+            ->method('getValidationRules')
+            ->with('test_entity', 'test_group_a')
+            ->will($this->returnValue($validationRules));
+
+        return array(
+            array($dataToValidate, $zendConstraintMock, $mageConstraintMock, $configMock)
+        );
+    }
+}
diff --git a/lib/Magento/Validator.php b/lib/Magento/Validator.php
new file mode 100644
index 0000000000000000000000000000000000000000..859a5b1b750394900adf12afd7c27366f5805150
--- /dev/null
+++ b/lib/Magento/Validator.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Presentation layer validator class.
+ */
+class Magento_Validator
+{
+    /** @var string */
+    protected $_entityName;
+    /** @var string */
+    protected $_groupName;
+    /** @var Magento_Validator_Config */
+    protected $_config;
+    /** @var array */
+    protected $_messages = array();
+
+    /**
+     * Set validation entity and group names, load validator config.
+     *
+     * @param string $entityName
+     * @param string $groupName
+     * @param Magento_Validator_Config $config
+     * @throws InvalidArgumentException
+     */
+    public function __construct($entityName, $groupName, Magento_Validator_Config $config)
+    {
+        if (!$entityName) {
+            throw new InvalidArgumentException('Validation entity name is required.');
+        }
+        $this->_entityName = $entityName;
+
+        if (!$groupName) {
+            throw new InvalidArgumentException('Validation group name is required.');
+        }
+        $this->_groupName = $groupName;
+
+        $this->_config = $config;
+    }
+
+    /**
+     * Validate input data against validation rules, defined in config group.
+     *
+     * @param array $data
+     * @throws Magento_Exception
+     * @return bool
+     */
+    public function isValid(array $data)
+    {
+        $isValid = true;
+        $rules = $this->_config->getValidationRules($this->_entityName, $this->_groupName);
+        foreach ($rules as $rule) {
+            foreach ($rule as $constraintConfig) {
+                $constraint = $constraintConfig['constraint'];
+                $field = isset($constraintConfig['field']) ? $constraintConfig['field'] : null;
+                if ($constraint instanceof Zend_Validate_Interface) {
+                    /** @var Zend_Validate_Interface $constraint */
+                    $value = isset($data[$field]) ? $data[$field] : null;
+                    if (!$constraint->isValid($value)) {
+                        foreach ($constraint->getMessages() as $error) {
+                            $this->_messages[$field][] = $error;
+                        }
+                        $isValid = false;
+                    }
+                } else {
+                    /** @var Magento_Validator_ConstraintAbstract $constraint */
+                    if (!$constraint->isValidData($data, $field)) {
+                        foreach ($constraint->getErrors() as $errorFieldName => $errors) {
+                            foreach ($errors as $error) {
+                                $this->_messages[$errorFieldName][] = $error;
+                            }
+                        }
+                        $isValid = false;
+                    }
+                }
+            }
+        }
+
+        return $isValid;
+    }
+
+    /**
+     * Get validation messages.
+     *
+     * @return array
+     */
+    public function getMessages()
+    {
+        return $this->_messages;
+    }
+}
diff --git a/lib/Magento/Validator/Config.php b/lib/Magento/Validator/Config.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d2bf7fb1598f7fe85cd3457d50333168f2d17c9
--- /dev/null
+++ b/lib/Magento/Validator/Config.php
@@ -0,0 +1,154 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Validation configuration files handler
+ */
+class Magento_Validator_Config extends Magento_Config_XmlAbstract
+{
+    /**
+     * Get absolute path to validation.xsd
+     *
+     * @return string
+     */
+    public function getSchemaFile()
+    {
+        return __DIR__ . '/validation.xsd';
+    }
+
+    /**
+     * Get validation rules for specified entity and group.
+     *
+     * @param string $entityName
+     * @param string $groupName
+     * @throws InvalidArgumentException
+     * @return array
+     */
+    public function getValidationRules($entityName, $groupName)
+    {
+        if (!isset($this->_data[$entityName])) {
+            throw new InvalidArgumentException(sprintf('Unknown validation entity "%s"', $entityName));
+        }
+        if (!isset($this->_data[$entityName]['groups'][$groupName])) {
+            throw new InvalidArgumentException(sprintf('Unknown validation group "%s" in entity "%s"', $groupName,
+                $entityName));
+        }
+
+        $result = array();
+        $groupRules = $this->_data[$entityName]['groups'][$groupName];
+        foreach ($groupRules as $ruleName) {
+            $rule = $this->_data[$entityName]['rules'][$ruleName];
+            foreach ($rule['constraints'] as $constraintConfig) {
+                $className = $constraintConfig['class'];
+                $constraint = new $className();
+                if (!($constraint instanceof Zend_Validate_Interface
+                    || $constraint instanceof Magento_Validator_ConstraintAbstract)) {
+                    throw new InvalidArgumentException(sprintf('Constraint "%s" must implement either '
+                        . 'Zend_Validate_Interface or Magento_Validator_ConstraintAbstract', $className));
+                }
+                if ($constraint instanceof Zend_Validate_Interface && empty($constraintConfig['field'])) {
+                    throw new InvalidArgumentException(sprintf('Constraint "%s" must have "field" attribute defined.',
+                        $className));
+                }
+                $result[$ruleName][] = array(
+                    'constraint' => $constraint,
+                    'field' => $constraintConfig['field'],
+                );
+            }
+        }
+
+        return $result;
+    }
+
+    /**
+     * Extract configuration data from the DOM structure
+     *
+     * @param DOMDocument $dom
+     * @throws Magento_Exception
+     * @return array
+     */
+    protected function _extractData(DOMDocument $dom)
+    {
+        $result = array();
+        /** @var DOMElement $entity */
+        foreach ($dom->getElementsByTagName('entity') as $entity) {
+            $entityName = $entity->getAttribute('name');
+            $result[$entityName]['rules'] = array();
+            /** @var DOMElement $rule */
+            foreach ($entity->getElementsByTagName('rule') as $rule) {
+                $ruleName = $rule->getAttribute('name');
+                $result[$entityName]['rules'][$ruleName] = array();
+                /** @var DOMElement $constraint */
+                foreach ($rule->getElementsByTagName('constraint') as $constraint) {
+                    $result[$entityName]['rules'][$ruleName]['constraints'][] = array(
+                        'class' => $constraint->getAttribute('class'),
+                        'field' => $constraint->getAttribute('field'),
+                    );
+                }
+            }
+
+            $result[$entityName]['groups'] = array();
+            /** @var DOMElement $group */
+            foreach ($entity->getElementsByTagName('group') as $group) {
+                $groupName = $group->getAttribute('name');
+                $result[$entityName]['groups'][$groupName] = array();
+                /** @var DOMElement $use */
+                foreach ($group->getElementsByTagName('use') as $use) {
+                    $usesRuleName = $use->getAttribute('rule');
+                    $result[$entityName]['groups'][$groupName][] = $usesRuleName;
+                }
+            }
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get initial XML of a valid document
+     *
+     * @return string
+     */
+    protected function _getInitialXml()
+    {
+        return '<?xml version="1.0" encoding="UTF-8"?><validation></validation>';
+    }
+
+    /**
+     * Define id attributes for entities
+     *
+     * @return array
+     */
+    protected function _getIdAttributes()
+    {
+        return array(
+            '/validation/entity' => 'name',
+            '/validation/entity/rules/rule' => 'name',
+            '/validation/entity/rules/rule/constraints/constraint' => 'class',
+            '/validation/entity/groups/group' => 'name',
+            '/validation/entity/groups/group/uses/use' => 'rule',
+        );
+    }
+}
diff --git a/lib/Magento/Validator/ConstraintAbstract.php b/lib/Magento/Validator/ConstraintAbstract.php
new file mode 100644
index 0000000000000000000000000000000000000000..38e9f9179ba69a4ec126ed39c98154ad21a7e25e
--- /dev/null
+++ b/lib/Magento/Validator/ConstraintAbstract.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Open Software License (OSL 3.0)
+ * that is bundled with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/osl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
+ */
+
+/**
+ * Validator constraint interface.
+ */
+abstract class Magento_Validator_ConstraintAbstract
+{
+    protected $_errors = array();
+
+    /**
+     * Validate field value in data.
+     *
+     * @param array $data
+     * @param string $field
+     * @return boolean
+     */
+    abstract public function isValidData(array $data, $field = null);
+
+    /**
+     * Get constraint error messages.
+     * Errors should be stored in associative array grouped by field name, e.g.
+     * array(
+     *     'field_name_1' => array(
+     *          'Error message #1',
+     *          'Error message #2',
+     *          ...
+     *      ),
+     *      'field_name_2' => array(
+     * )
+     *
+     * @return array
+     */
+    public function getErrors()
+    {
+        return $this->_errors;
+    }
+
+    /**
+     * Add error message
+     *
+     * @param string $field
+     * @param string $message
+     */
+    public function addError($field, $message)
+    {
+        $this->_errors[$field][] = $message;
+    }
+}
diff --git a/lib/Magento/Validator/validation.xsd b/lib/Magento/Validator/validation.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..d43732a21eea6c346ce2cd5669616c4a8383fff5
--- /dev/null
+++ b/lib/Magento/Validator/validation.xsd
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/**
+ * Magento
+ *
+ * NOTICE OF LICENSE
+ *
+ * This source file is subject to the Academic Free License (AFL 3.0)
+ * that is bundled with this package in the file LICENSE_AFL.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://opensource.org/licenses/afl-3.0.php
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@magentocommerce.com so we can send you a copy immediately.
+ *
+ * DISCLAIMER
+ *
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
+ * versions in the future. If you wish to customize Magento for your
+ * needs please refer to http://www.magentocommerce.com for more information.
+ *
+ * @category    Magento
+ * @package     Magento_Validator
+ * @subpackage  Config
+ * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
+ * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
+ */
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+    <xs:annotation>
+        <xs:documentation xml:lang="en">
+            Magento Validation Configuration File
+        </xs:documentation>
+    </xs:annotation>
+
+    <xs:element name="validation">
+        <xs:annotation>
+            <xs:documentation xml:lang="en">
+                Validation group uses reference to validation rules
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="entity" type="entity" maxOccurs="unbounded">
+                    <xs:keyref name="ruleNameReference" refer="ruleNameKey">
+                        <xs:selector xpath="groups/group/uses/use"/>
+                        <xs:field xpath="@rule"/>
+                    </xs:keyref>
+                    <xs:key name="ruleNameKey">
+                        <xs:selector xpath="rules/rule"/>
+                        <xs:field xpath="@name"/>
+                    </xs:key>
+                </xs:element>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="entity">
+        <xs:sequence>
+            <xs:element name="rules" type="rules"/>
+            <xs:element name="groups" type="groups"/>
+        </xs:sequence>
+        <xs:attribute name="name" type="xs:string" use="required"/>
+    </xs:complexType>
+
+    <xs:complexType name="rules">
+        <xs:sequence>
+            <xs:element name="rule" maxOccurs="unbounded">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="constraints" type="constraints"/>
+                    </xs:sequence>
+                    <xs:attribute name="name" type="xs:string" use="required"/>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="constraints">
+        <xs:sequence>
+            <xs:element name="constraint" maxOccurs="unbounded">
+                <xs:complexType>
+                    <xs:attribute name="class" type="xs:string" use="required"/>
+                    <xs:attribute name="field" type="xs:string"/>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="groups">
+        <xs:sequence>
+            <xs:element name="group" maxOccurs="unbounded">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="uses" type="uses"/>
+                    </xs:sequence>
+                    <xs:attribute name="name" type="xs:string" use="required"/>
+                </xs:complexType>
+                <xs:unique name="groupUse">
+                    <xs:selector xpath="uses/use"/>
+                    <xs:field xpath="@rule"/>
+                </xs:unique>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+    <xs:complexType name="uses">
+        <xs:annotation>
+            <xs:documentation xml:lang="en">
+                All validation rules used by current group are listed in this element
+                "rule" attribute of "use" element must point to one of entity's rules
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="use" maxOccurs="unbounded">
+                <xs:complexType>
+                    <xs:attribute name="rule" type="xs:string"/>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>