jesusangel / wc-sermepa

Sermepa payment gateway plugin for WooCommerce
Other
28 stars 16 forks source link

Enviar el idioma del usuario wordpress en Ds_Merchant_ConsumerLanguage #18

Closed enbata closed 8 years ago

enbata commented 8 years ago

Hola Jesús,

tenemos un problemilla con el idioma de la pasarela.

Hemos activado la opción para usar el idioma de usuario del wordpress y no esta teniendo el comportamiento que pensábamos. Hemos visto que el código de idioma se consigue mediante el valor del parámetro $_SERVER['HTTP_ACCEPT_LANGUAGE']

$customer_language = substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 );

El problema surge a raiz de que el idioma que está navegande en la página no coincide con el idioma predestinado del navegador. Por ejemplo, en mi caso la página está en euskera pero mi navegador está en inglés. Por lo tanto hago toda la navegación en euskera pero al dar el salto a la pasarela aparece en ingés.

No sería mejor utilizar el get_locale() en este caso? Esta función devuelve el locale actual que se está utilizando. Mi propuesta es la siguiente:

$customer_language = substr( get_locale(), 0, 2 );

Otra opción sería utilizando un filtro para que cada uno especifique el idioma según sus necesidades. Pensaba utilizar el filtro _woocommerce_redsysargs, pero para entonces los parámetros ya están cofificados y no se pueden manipular. Aplicando el filtro a _$tpvdata debería ser suficiente.

Si quieres, estoy dispuesto a programar los cambios que creas oportunos yo mismo claro está.

Un saludo,

Manex

jesusangel commented 8 years ago

Hola Manex.

En realidad lo que se pretende con la opción del idioma es mostrar la pasarela de pago en un idioma que entienda el usuario y qué mejor que usar el que refleje su navegador web. Aunque entiendo el caso que planteas.

Localización e internacionalización son conceptos que a menudo se intercambian, aunque no son lo mismo. No creo que sea buena idea usar el get_locale para determinar el idioma del usuario.

Lo del filtro podría ser una buena solución, así cada uno puede hacer lo que le parezca. Aunque es una solución para desarrolladores ya que hay que escribir la función del filtro.

Tal vez algo más completo sería intentar determinar el idioma seleccionado por el usuario usando la información proporcionada por los plugins de traducción. Con WMPL se puede obtener de la constante ICL_LANGUAGE_CODE. Habría que intentar determinar qué plugin tiene el usuario y ver como sacar la información del idioma seleccionado.

En cuanto a la interfaz de la configuración del plugin, se podría cambiar el checkbox por un desplegable con varias opciones: desactivado, navegador, automático...

Saludos cordiales.

El jue, 26-05-2016 a las 02:52 -0700, Manex Agirre escribió:

Hola Jesús,

tenemos un problemilla con el idioma de la pasarela.

Hemos activado la opción para usar el idioma de usuario del wordpress y no esta teniendo el comportamiento que pensábamos. Hemos visto que el código de idioma se consigue mediante el valor del parámetro $_SERVER['HTTP_ACCEPT_LANGUAGE']

$customer_language = substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 ); El problema surge a raiz de que el idioma que está navegande en la página no coincide con el idioma predestinado del navegador. Por ejemplo, en mi caso la página está en euskera pero mi navegador está en inglés. Por lo tanto hago toda la navegación en euskera pero al dar el salto a la pasarela aparece en ingés.

No sería mejor utilizar el get_locale() en este caso? Esta función devuelve el locale actual que se está utilizando. Mi propuesta es la siguiente:

$customer_language = substr( get_locale(), 0, 2 ); Otra opción sería utilizando un filtro para que cada uno especifique el idioma según sus necesidades. Pensaba utilizar el filtro woocommerce_redsys_args, pero para entonces los parámetros ya están cofificados y no se pueden manipular. Aplicando el filtro a $tpv_data debería ser suficiente.

Si quieres, estoy dispuesto a programar los cambios que creas oportunos yo mismo claro está.

Un saludo,

Manex

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub

enbata commented 8 years ago

Entendido la lógica de use del idioma del navegador. Me gusta la solución que planteas de implementar diferentes sitemas de traducción para escoger el idioma. Aunque quizas implementaria las dos opciones; Automatización y filtro. Así un desarrollador tendría libertad absoluta.

Voy a estar ausente durante unos cuantos días, a la vuelta intentare llevarlo a práctica.

Gracias por la respuesta,

Manex

gonssal commented 8 years ago

Cualquier plugin de idiomas actual de WordPress usa el filter para establecer el locale según sus necesidades, por lo que sí es buena idea usar get_locale(), aunque es mejor usar get_bloginfo('language'). PR hecho.

Lo que no es muy habitual, en mi opinión, es que si un usuario está comprando en una tienda en un idioma determinado, luego en la pasarela le salga otro pudiendo seguir con el mismo.