Seguimos de traducciones (si, estuve con éste tema durante estos días).
Una de las palabras (conjunto de valores en realidad) que no parecían responder a los archivos de configuración, eran los del tipo de Productos.
Nos encontramos con éstos valores cada vez que queremos dar de alta un nuevo Producto.
Como pueden ver, por más que tengo el locale configurado en es_AR, obtengo éste resultado.
Después de controlar los archivos de traducción y de pegarle un par de vueltas al codigo, apareció el culpable.
Los formularios que utilizan el combo, obtienen los valores de la clase Mage_Catalog_Model_Product_Type.
Para acceder a esos datos, invocan al método getOptionArray().
El código original de éste método es:
static public function getOptionArray() { $options = array(); foreach(self::getTypes() as $typeId=>$type) { $options[$typeId] = $type['label']; } return $options; }
Dado que el objetivo del post no es explicar el funcionamiento total de la clase, vamos a concentrarnos en nuestro problema: lograr que se traduzcan los tipos de Productos.
Lo que hace el método, es obtener todos los tipos de Producto posible, y generar un array que será el devuelto.
Si prestan atención, dentro del foreach, se está agregando el label (etiqueta) que se asocia a cada uno de los valores del array.
El problema está justamente en ese punto. Al momento de asignar el label, no se lo está traduciendo, de manera que sin importar que Locale tengamos seleccionado, siempre lo veremos en inglés. La solución a ésto, es forzar el uso de la traducción.
Si aplicamos el cambio, el método nos quedaria de la siguiente forma.
static public function getOptionArray() { $options = array(); foreach(self::getTypes() as $typeId=>$type) { $options[$typeId] = Mage::helper('catalog')->__($type['label']); } return $options; }
El cambio ha sido implementar el Helper que invoca a la función de traducción.
Ahora si, sólo tenemos que actualizar nuestra página y ya va a funcionar como correspondería.
Lamentablemente, al momento de actualizar el código (con lo que será el lanzamiento de la versión 1.1.7), vamos a tener que revisar la nueva versión de la clase, para evitar perder nuestra funcionalidad.
Update: hace unas horas se me dio por sumar este tema al Bug Tracker de Magento, y caramba, me lo aceptaron. :-D
Como es necesario estar registrado para ver los bugs, dejo captura.



eres un fenomeno!
gracias!
genial! muchas gracias!
una pregunta ¿sabrías como quitar tipos de producto? Es decir que en lugar de que el combo se cargue con los tipos: simple, agrupado, configurable, virtual, descargable … reducirlo y que solo se muestren simple y configurable para dejarselo más claro al usuario
he dado mil y una vueltas y aunque parece que eso lo lee del fichero catalog/etc/config.xml si se lo comento o no hace nada o da error.
en fin que estoy perdida
gracias
@evuska
En realidad, habría que reescribir la clase que levanta los tipos de productos y filtrarlos para que sólo te muestre los que querés.
hola, he intentado modificar el metodo getTypes() eliminando del array los tipos que no quiero, parece que funciona pero luego al registrar un producto nuevo en la version 1.3.2.3 da error. (en versiones anteriores me funcionaba bien)
seguiré probando a ver si lo consigo
gracias
@evuska
Fijate qué clase devuelve el array con los valores y sobreescribilo con un módulo.
Esa seria la forma ortodoxa.