magento email magento-1.7 multilingual forgot-password

El correo electrónico "Olvidé mi contraseña" de Magento fue enviado en un idioma incorrecto



email magento-1.7 (8)

Espero que este enlace te sea útil

En el enlace, han usado la Nueva contraseña, pero en lugar de la nueva contraseña. Usar la plantilla de Olvidé mi contraseña en el paso 4.

Gracias..

Tengo un sitio de Magento con varios idiomas. He configurado los paquetes de idiomas y todo parece traducirse correctamente en el sitio web. Además, los correos electrónicos transaccionales se envían en el idioma correcto, EXCEPTO para el correo electrónico " Olvidé mi contraseña " que siempre se envía en alemán. Esto es lo que hice:

  • Instaló paquetes de idiomas y se aseguró de que todas las plantillas y estructuras de carpetas sean correctas. Ejemplo: /app/locale/nl_NL/template/email/
  • En Sistema »Correos electrónicos transaccionales : apliqué la plantilla, elegí la configuración regional y guardé.
  • Luego fui a Sistema »Configuración» Correos electrónicos de ventas , cambié a cada idioma desde el menú desplegable " Ámbito de la configuración actual " y elegí las plantillas que creé en Correos electrónicos transaccionales para cada idioma (cada vista de tienda).

Después de buscar en línea una solución, parece que otros también tuvieron este problema y alguien mencionó que Magento selecciona la plantilla "Olvidó su contraseña" de la primera carpeta local que se encuentra en / app / locale / . En mi caso, tuve: de_DE , de_DE , fr_FR , nl_NL . Así que elige la plantilla del paquete alemán de_DE .

NOTA : Además, en el backend en "Configuración" hay una pestaña a la izquierda llamada "LOCALE PACKS" que solo tiene "Locale de_DE" debajo de ella, aunque tengo otros paquetes de idiomas que no aparecen aquí. No estoy seguro de si esto es relevante.

Sitio: http://site1.cp1.glimworm.com/magento/

Versión de la comunidad Magento: 1.7.0.2

Paquetes locales:

  • Mage_Locale_en_US
  • Locale_Mage_community_de_DE
  • Locale_Mage_community_fr_FR
  • Mage_Locale_nl_NL

¿Alguna idea de cómo puedo enviar la plantilla de correo electrónico correcta del idioma correspondiente en vez de siempre alemán? ¡Cualquier ayuda será apreciada! Puedo proporcionar más información también.


Tengo el mismo problema en magento v1.5. Después de una larga investigación encontré esta solución y está funcionando para mí.

Mage/Customer/Model/Customer.php in this file i have make some changes as following. find this line of code if (!$storeId) { $storeId = $this->_getWebsiteStoreId($this->getSendemailStoreId()); } and replace with $storeId = ($storeId == ''0'')?$this->getSendemailStoreId():$storeId; if ($this->getWebsiteId() != ''0'' && $storeId == ''0'') { $storeIds = Mage::app()->getWebsite($this->getWebsiteId())->getStoreIds(); reset($storeIds); $storeId = current($storeIds); }


Tuve el mismo problema, y ​​parece que la solución de user2282917 funciona con una pequeña modificación:

Debería editar la función sendPasswordResetConfirmationEmail en Customer.php, no en sendNewAccountEmail. Intenta reemplazar el código allí, y funcionará.


El correo electrónico de restablecimiento de contraseña se envía en Mage_Customer_Model_Customer::_sendEmailTemplate() . Aquí se carga el emailtemplate. Si se cargó en admin en "Sistema electrónico> Correos electrónicos transaccionales" y se configuró para ser utilizado, se usará su plantilla.

De lo contrario, la plantilla predeterminada se carga desde el archivo en Mage_Core_Model_Email_Template::sendTransactional . Esto se hace usando $this->loadDefault($templateId, $localeCode); La plantilla se carga utilizando

$templateText = Mage::app()->getTranslator()->getTemplateFile( $data[''file''], ''email'', $locale );

Aquí las carpetas locales se verifican en el siguiente orden:

  1. Localidad especificada
  2. Configuración regional de la tienda predeterminada
  3. en_US locale

Se elige el primer escenario coincidente. Como Mage::app() no sabe acerca de la tienda que se pasó con la plantilla de correo electrónico, se carga el predeterminado defaultstore, que es alemán en su caso. No tiene nada que ver con el orden de las carpetas de configuración regional.

Entonces, en su caso sugiero verificar si su plantilla de correo electrónico está seleccionada en configuración de administrador en "Sistema> Configuración> Configuración de cliente> Opciones de contraseña" o use Mage::getStoreConfig(Mage_Customer_Model_Customer::XML_PATH_REMIND_EMAIL_TEMPLATE, $storeId) si está configurada para su tienda.


Sobrescriba el controlador forgotPasswordPostAction en AccountController.php. Debe configurar la id. De tienda correcta para que se use la configuración regional.

/** * Forgot customer password action */ public function forgotPasswordPostAction() { $email = (string) $this->getRequest()->getPost(''email''); if ($email) { if (!Zend_Validate::is($email, ''EmailAddress'')) { $this->_getSession()->setForgottenEmail($email); $this->_getSession()->addError($this->__(''Invalid email address.'')); $this->_redirect(''*/*/forgotpassword''); return; } /** @var $customer Mage_Customer_Model_Customer */ $customer = $this->_getModel(''customer/customer'') ->setWebsiteId(Mage::app()->getStore()->getWebsiteId()) ->loadByEmail($email); if ($customer->getId()) { try { $newResetPasswordLinkToken = $this->_getHelper(''customer'')->generateResetPasswordLinkToken(); $customer->changeResetPasswordLinkToken($newResetPasswordLinkToken); // Add store ID so that correct locale will be set $customer->setStoreId(Mage::app()->getStore()->getId()); $customer->sendPasswordResetConfirmationEmail(); } catch (Exception $exception) { $this->_getSession()->addError($exception->getMessage()); $this->_redirect(''*/*/forgotpassword''); return; } } $this->_getSession() ->addSuccess( $this->_getHelper(''customer'') ->__(''If there is an account associated with %s you will receive an email with a link to reset your password.'', $this->_getHelper(''customer'')->escapeHtml($email))); $this->_redirect(''*/*/''); return; } else { $this->_getSession()->addError($this->__(''Please enter your email.'')); $this->_redirect(''*/*/forgotpassword''); return; } }


El motivo por el que recibe las plantillas de correo electrónico en otro idioma que no sea el esperado depende del idioma en el que creó su cuenta por primera vez. Intente comprobar que esté en su propio idioma cuando creó la cuenta por primera vez.

Verifique esto en Clientes> Información de la cuenta para ver cómo se creó su cuenta.

/ Kalif


En el archivo a continuación Mage / Customer / Model / Customer.php

En la función sendPasswordResetConfirmationEmail () cambia el

$ storeId = $ this-> getStoreId ();

a

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

Gracias


En nuestro caso ... Descubrimos que cuando una cuenta de cliente fue creada por el administrador, la opción "enviar por correo electrónico desde" no se guardó y solo se usó para el primer correo electrónico de creación de cuenta. Cualquier correo electrónico posterior enviado se envía desde la vista de tienda predeterminada del sitio web al que se asignó el cliente.

El verdadero problema es cómo, cuando se identifica la identificación de la tienda del cliente cuando no está configurada ninguna.

El método sendPasswordResetConfirmationEmail (Magento 1.9.1) cuando la identificación de la tienda es 0 (admin o no establecida), se predetermina a _getWebsiteStoreId, que devolverá la primera identificación de la tienda asociada a ese sitio web.

El problema es que Magento supone que la primera identificación de la tienda asociada con la ID del sitio web es la tienda predeterminada ... Encontramos que este no es el caso cuando se establece una orden de clasificación contra el registro de la tienda.

Simplemente asegúrese de que su tienda predeterminada asociada con un sitio web también se especifique con un orden de clasificación de 0.