Question

The following piece of code implements error messages for recaptcha. The location is app/code/local/Magecomp/Recaptcha/Model/Observer.php

public function Customercreate($observer)
{

    try {

        if (Mage::helper('recaptcha/data')->showOnRegister()) {
             $g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response');
            if (isset($g_response) && !empty($g_response)):
                if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))):
                    Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box.123');
                    $url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
                    Mage::app()->getFrontController()->getResponse()->setRedirect($url);
                    Mage::app()->getResponse()->sendResponse();
                    exit;
                endif;
            else:
                $observer->getEvent()->setData(null);
                Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box.456');
                $url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
                Mage::app()->getFrontController()->getResponse()->setRedirect($url);
                Mage::app()->getResponse()->sendResponse();
                exit;
            endif;
        }
    } catch (Exception $e) {
        Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log");
    }
}

How could I translate the texts "Please click on the reCAPTCHA box.123" and "Please click on the reCAPTCHA box.456" into another languages? I know that modifying core files is not recommended.

Was it helpful?

Solution

You need to add a translated string (or both) in the Magecomp Recaptcha Module translation file (should be app/locale/[your_LANG]/Magecomp_Recaptcha.csv) if there is one.

The translated string to add to the translation file for the italian language could be:

"Please click on the reCAPTCHA box.123","Si prega di cliccare sul reCAPTCHA box.123"
"Please click on the reCAPTCHA box.456","Si prega di cliccare sul reCAPTCHA box.456"

Then you have to edit the code in this way:

public function Customercreate($observer)
{

    try {

        if (Mage::helper('recaptcha/data')->showOnRegister()) {
             $g_response = Mage::app()->getRequest()->getParam('g-recaptcha-response');
            if (isset($g_response) && !empty($g_response)):
                if (!(Mage::helper('recaptcha')->Validate_captcha($g_response))):

                    Mage::getSingleton('core/session')->addError(Mage::helper('recaptcha/data')->__('Please click on the reCAPTCHA box.123'));

                    $url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
                    Mage::app()->getFrontController()->getResponse()->setRedirect($url);
                    Mage::app()->getResponse()->sendResponse();
                    exit;
                endif;
            else:
                $observer->getEvent()->setData(null);

                Mage::getSingleton('core/session')->addError(Mage::helper('recaptcha/data')->__('Please click on the reCAPTCHA box.456'));

                $url = Mage::helper('core/http')->getHttpReferer() ? Mage::helper('core/http')->getHttpReferer() : Mage::getUrl();
                Mage::app()->getFrontController()->getResponse()->setRedirect($url);
                Mage::app()->getResponse()->sendResponse();
                exit;
            endif;
        }
    } catch (Exception $e) {
        Mage::log("Captcha Error :" . $e->getMessage(), null, "recaptcha.log");
    }
}


I don't know the Magecomp_Recaptcha Module, but this module to supports translations need to setup a .csv translation file in the app/code/local/Magecomp/Recaptcha/etc/config.xml: look for the config/frontend/translate tag in this file. If there is no translation file setup, you need to add it:

<?xml version="1.0"?>
<config>
    [...]
    <frontend>
        <translate>
            <modules>
                <Magecomp_Recaptcha>
                    <files>
                        <default>Magecomp_Recaptcha.csv</default>
                    </files>
                </Magecomp_Recaptcha>
            </modules>
        </translate>
    </frontend>
    [...]
</config>

Then add the 2 rows below to your app/locale/[your_LANG]/Magecomp_Recaptcha.csv file.

OTHER TIPS

Just go to your root directory and go to the following path:

/app/locale/de_DE

de_DE its for German you can go to the particular directory as per your store view.

Here, just open the Mage_Core.csv file and you can write the text like below example:

 "Please click on the reCAPTCHA box.123","Please click on the reCAPTCHA box.456"

Then flush your cache and check the frontend.

If you still face issue then try below code:

Just replace below code:

Mage::getSingleton('core/session')->addError('Please click on the reCAPTCHA box.123');

To

$errorMessage = Mage::helper('core')->__('Please click on the reCAPTCHA box.123');
Mage::getSingleton('core/session')->addError($errorMessage);

Let me know if you still face an issue?

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top