Search code examples
magentolocale

What is the best practice to setup multilanguage store (any sql upgrades)?


It's boring to add store views manually, especially when your store has many languages. Does anyone use sql upgrade script for adding store views and assigning appropriate locale? How can I do this via sql upgrade script?


Solution

  • The full code for adding multiple store views and assigning locale:

    $defaultStore = Mage::getModel('core/store')->load(1);
    $websiteId = $defaultStore->getWebsiteId();
    $store = Mage::getModel('core/store_group')->load($defaultStore->getGroupId());
    
    $storeViewsData = array(
        'es' => array(
            'name'   => 'Spanish',
            'locale' => 'es_ES',
        ),
        'fr' => array(
            'name'   => 'French',
            'locale' => 'fr_FR',
        ),
        'pt' => array(
            'name'   => 'Portuguese',
            'locale' => 'pt_PT',
        ),
        'it' => array(
            'name'   => 'Italian',
            'locale' => 'it_IT',
        )
        );
    
        foreach ($storeViewsData as $code => $data) {
        $view = Mage::getModel('core/store');
            $view->setData(array(
                'website_id'    => $websiteId,
                'group_id'      => $store->getId(),
                'name'          => $data['name'],
                'code'          => $code,
                'is_active'     => 1
            ));
            $view->save();
    
            Mage::getConfig()->reinit();
            Mage::app()->reinitStores();
    
    
            $groupsValue = array();
            $groupsValue['locale']['fields']['code']['value'] = $data['locale'];
    
            Mage::getModel('adminhtml/config_data')
                ->setSection('general')
                ->setWebsite('base')
                ->setStore($code)
                ->setGroups($groupsValue)
                ->save();
        }