The challenges of formatting currency data

Localization and internationalization of an app or site it’s a challenge that’s not specially hard on the technical side, but that it can ceirtanly become difficult for social and behavioral aspects, such as our own etnocentrism, lack of standardized standards, or even standards that conflict with actual use or user expectations.

The development team at Etsy identified three attributes that affected currency formatting: the currency, user location and user language. Their post on How Etsy Formats Currency shows how to correctly format currency and some of the practical decisions that are involved in the process.

The greatest countries and administrative subdivisions database ever

The United Nations Code for Trade and Transport Locations it’s probably the greatest countries, states, regions, cities and localities database you can ever find; or at least the most complete you might hope for. It includes over 100,000 locations in 249 countries with detailed administrative subdivisions info and even geographic coordinates (rough, but still).

The most complete localization data you’ll ever need

The Unicode Common Locale Data Repository it’s “the largest and most extensive repository of locale data available”, so it’s pretty much the perfect solution when you need information such as:

  • Currency values, with ISO codes and visualization formats
  • Dates and times patterns, including timezones
  • List of “territories”, countries, continents, etc. with their corresponding languages, currencies
  • Translations of all of the above

You can get their data from their Downloads page in XML format (follow the links in the Data column) or, if you prefer JSON, you may the Releases on their GitHub repository.

The JSON data it’s also available for use with NPM or bower.

Automatizar tareas de traducción de WordPress con Grunt

Grunt es una de esas herramientas que al principio parece un poco intimidante, pero al empezar a utilizarla se hace cada vez más necesaria y adictiva.

Por si aún no lo conoces, Grunt es un programita hecho en javascript sobre node.js que permite automatizar una gran cantidad de tareas, y sirve especialmente para poner a punto la versión en producción de un sitio; por ejemplo: optimizar imágenes, compilar estilos desde LESS a CSS (o Coffeescript a javascript), ejecutar pruebas unitarias, minificar y concatenar estilos y scripts, etc.

Hace algunos posts escribí sobre algunas herramientas de localización para WordPress que ayudan a generar el catálogo de traducciones POT necesario para hacer un tema o plugin traducible a otros idiomas, y que es un excelente ejemplo de tareas en las que Grunt se luce.

Afortunadamente bradyvercher adaptó esas herramientas para trabajar como módulos de Grunt, por lo que podemos utilizar las mismas herramientas de localización “oficiales” de WordPress de forma automática con Grunt.

Continue reading “Automatizar tareas de traducción de WordPress con Grunt”

Usar DISQUS en sitios multilenguaje

Recientemente rediseñamos el sitio de nuestra aplicación para la gestión de hoteles, y uno de los cambios más importantes fue poder ofrecer una mejor experiencia a los visitantes según su idioma. También nos interesaba tener una mejor interacción en los comentarios del blog, y para ello decidimos utilizar la plataforma de Disqus, que entre otras cosas, permite suscripciones por correo electrónico a los comentarios, identificación con cuentas de terceros, moderación por e-mail, etc.

Uno de los problemas que encontramos fue que Disqus tiene una configuración global para la cuenta, por lo que la opción que configuras en su panel aplica a todas las conversaciones en el sitio. Sin embargo, escudriñando el código del plugin para WordPress pude hallar un filtro que permite indicar explícitamente el idioma en que se debe cargar la sección de comentarios:

add_filter('disqus_language_filter', function( $lang ){
	// la función pll_current_language es del plugin polylang; y devuelve el idioma de la entrada actual
	$current_language = function_exists('pll_current_language') ? pll_current_language('locale') : 'es_ES';
	// ojo que en Disqus, inglés es "en" pero español "es_ES" :-P
	return $current_language == 'en_US' ? 'en' : $current_language;
});

Y si no estás usando WordPress, puedes indicar el idioma en la configuración del embebible.

Herramientas de localización para WordPress

Hace muchísimo tiempo escribí sobre la forma de preparar un archivo para localización con WordPress (o sea, permitir que un plugin o theme sea traducible).

En ese post indicaba cómo utilizar dos de las funciones principales para marcar los textos para localización: _e() y __()

Además de estas funciones, se han agregado algunas nuevas para otras necesidades:

La documentación completa está en el Codex: i18n for WordPress Developers: Marking Strings for Translation

Una vez que ya tenemos todos los textos marcados para traducción, necesitamos crear una plantilla de localización, que corresponde a un archivo POT. Si bien es un archivo de texto plano con un formato estándar, obviamente es más sencillo automatizar este paso. Para esto podemos utilizar las herramientas de localización desarrolladas por Automattic.

Continue reading “Herramientas de localización para WordPress”

Localización con WordPress

Esta es una especie de continuación a un post de Andrés Nieto (aNieto2K) sobre la traducción de themes en WordPress sobre el que puedo aportar algo: cómo marcar las cadenas para localización y cómo generar automáticamente el catálogo de cadenas de localización.

Este artículo debería llamarse “Sistema de traducción de themes para WordPress – Parte 2″, ya que en verdad es una especie de continuación de un artículo de aNieto2K en el que explica cómo funciona el sistema de… bueno, lo que dice en el título.

Creo que hubieron algunas cosas que faltó cubrir en ese post (seguramente porque este tipo siempre anda con un millón de proyectos), y sobre los cuales puedo aportar algo: cómo marcar las cadenas para localización y cómo generar automáticamente el catálogo de cadenas de localización.

Dado que en el último tiempo he estado trabajando (jugando, en verdad) en cuestiones relacionadas con esto, acá va mi grano de arena para Castellanizar la blogósfera

Continue reading “Localización con WordPress”