1

Hi I've just upgraded to 1.9.3.6 from an earlier version and I'm getting this error now.

line 146 says this:

Mage::app()->getTranslator()->init($this->_code);

Things I've tried:

When I do var_dump(Mage::app()->getTranslator()) it returns false, so I think it might be a problem there?

I have re-uploaded the entirety of the /app/code/core folder to no avail

Here's Area.php:

<?php
class Mage_Core_Model_App_Area
{
    const AREA_GLOBAL   = 'global';
    const AREA_FRONTEND = 'frontend';
    const AREA_ADMIN    = 'admin';
    const AREA_ADMINHTML = 'adminhtml';

    const PART_CONFIG   = 'config';
    const PART_EVENTS   = 'events';
    const PART_TRANSLATE = 'translate';
    const PART_DESIGN   = 'design';

    /**
     * Array of area loaded parts
     *
     * @var array
     */
    protected $_loadedParts;

    /**
     * Area code
     *
     * @var string
     */
    protected $_code;

    /**
     * Area application
     *
     * @var Mage_Core_Model_App
     */
    protected $_application;

    public function __construct($areaCode, $application)
    {
        $this->_code = $areaCode;
        $this->_application = $application;
    }

    /**
     * Retrieve area application
     *
     * @return Mage_Core_Model_App
     */
    public function getApplication()
    {
        return $this->_application;
    }

    /**
     * Load area data
     *
     * @param   string|null $part
     * @return  Mage_Core_Model_App_Area
     */
    public function load($part=null)
    {
        if (is_null($part)) {
            $this->_loadPart(self::PART_CONFIG)
                ->_loadPart(self::PART_EVENTS)
                ->_loadPart(self::PART_DESIGN)
                ->_loadPart(self::PART_TRANSLATE);
        }
        else {
            $this->_loadPart($part);
        }
        return $this;
    }

    /**
     * Loading part of area
     *
     * @param   string $part
     * @return  Mage_Core_Model_App_Area
     */
    protected function _loadPart($part)
    {
        if (isset($this->_loadedParts[$part])) {
            return $this;
        }
        Varien_Profiler::start('mage::dispatch::controller::action::predispatch::load_area::'.$this->_code.'::'.$part);
        switch ($part) {
            case self::PART_CONFIG:
                $this->_initConfig();
                break;
            case self::PART_EVENTS:
                $this->_initEvents();
                break;
            case self::PART_TRANSLATE:
                $this->_initTranslate();
                break;
            case self::PART_DESIGN:
                $this->_initDesign();
                break;
        }
        $this->_loadedParts[$part] = true;
        Varien_Profiler::stop('mage::dispatch::controller::action::predispatch::load_area::'.$this->_code.'::'.$part);
        return $this;
    }

    protected function _initConfig()
    {

    }

    protected function _initEvents()
    {
        Mage::app()->addEventArea($this->_code);
        #Mage::app()->getConfig()->loadEventObservers($this->_code);
        return $this;
    }

    protected function _initTranslate()
    {
        Mage::app()->getTranslator()->init($this->_code);
        return $this;
    }

    protected function _initDesign()
    {
        if (Mage::app()->getRequest()->isStraight()) {
            return $this;
        }
        $designPackage = Mage::getSingleton('core/design_package');
        if ($designPackage->getArea() != self::AREA_FRONTEND)
            return;

        $currentStore = Mage::app()->getStore()->getStoreId();

        $designChange = Mage::getSingleton('core/design')
            ->loadChange($currentStore);

        if ($designChange->getData()) {
            $designPackage->setPackageName($designChange->getPackage())
                ->setTheme($designChange->getTheme());
        }
    }
}

I'm not too au fait Magento expert so I'm not sure where to look to debug this. There isn't an init() function in this class. It seems like a core file though so I'm a little worried.

Happy to provide more code and update the question, but I'll need guidance!

3 Answers 3

1

This issue indicates that somehow Magento core files are missing or something weird happened in your system after the upgrade.

In this case Magento complains that, it cannot find the core translator file. ie the class Mage_Core_Model_Translate which you can find at app\code\core\Mage\Core\Model\Translate.php. So please check whether this file exists or not. If yes, then compare it with old translate file for any changes.

2
  • Excellent, I'll have a look and see. A lot of weird things happend in the upgrade - various failed backups mainly
    – FaCE
    Sep 22, 2017 at 18:56
  • I'm still getting the same error, even though I've re-uploaded the app/code/core/Mage in its entirety. The class in Translate.php definitely has an init() function too...
    – FaCE
    Sep 22, 2017 at 19:26
0

So apparently on a botched/failed upgrade it's a good idea to clear the cache in /var/cache/

Deleting the contents of this fixed my error

0

The error occurs when the cache is corrupted. Mage::app()->getTranslator() returns false because down the chain Mage::getConfig()->getModelInstance() calls $config->getGroupedClassName() which can't find correct class name for given 'core/translate' group name.

Unfortunately without knowing what exactly is inside the config cache when the error occurs It's hard to tell what the root cause is.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.