a2billing: interfaz web e idiomas

Resulta frustrante instalar algo que “debe” funcionar pero NO lo hace.  Este es el caso de lograr que funcione el cambio de idioma en la interfaz web de a2billing. Lo peor es que a primera vista la tendencia es culpar al software en si mismo olvidando sus dependencias.  Este problema aparece de forma general en la gran mayoría de aplicaciones LAMP que brindan soporte para varios idiomas; la primera vez que tuve que enfrentarlo fue instalando un correo web con la plataforma Horde/Imp.  No existe una receta única de como solucionarlo debido a las diferencias entre las distribuciones de Linux, pero resulta muy fácil si conocemos las interioridades del proceso y tenemos Google a mano.  Concretamente, casi todas estas aplicaciones utilizan la función de PHP gettext() que se encarga de la “internacionalización“: dada una cadena de caracteres (mensaje) especifica del programa, realizar una búsqueda de ese mensaje en el idioma especificado en el contexto.

Para ello debe estar instalado en nuestro sistema el paquete “locales” que maneja los idiomas soportados, asi como cada “locale” correspondiente a cada idioma que deseamos soportar.  Según http://linux.die.net/man/7/locale ,  un locale es “un conjunto de reglas de idioma y culturales. Cubre aspectos tales como el idioma de los mensajes, diferentes juegos de caracteres, convenciones lexicográficas, etc.  Un programa debe poder determinar su locale y actuar en correspondencia para ser portable a diferentes culturas”.

En Linux el comando:

locale -a

muestra los locales que están instalados en el sistema. Si en la lista no aparece el español (es_ES en alguna de sus variantes), seguramente no podremos dar soporte español en a2billing.  Ahora la parte específica, recuerdo que en Debian el comando:

dpkg-reconfigure locales

mostraba un menú gráfico que permitía seleccionar los locales a instalar.  Sin embargo en Ubuntu, este comando se limita a verificar la actualidad de los que están instalados y buscar si existen actualizaciones.  Para instalar locales en Ubuntu hay que editar el archivo /var/lib/locales/supported.d/local y adicionar los deseados. La lista de locales válidos se puede encontrar en /usr/share/i18n/SUPPORTED. Tras añadir español, el mio quedó asi:

en_US.UTF-8 UTF-8
es_ES.UTF-8 UTF-8

dpkg-reconfigure locales completa la tarea.

Sin embargo, todavía no podia activar el español en la interfaz web de a2billing.  El archivo de a2billing que maneja los cambios de idioma es <directorio de instalación>/common/lib/languageSettings.php a través de la siguiente función:

function SetLocalLanguage(){
  $slectedLanguage = "";
  $languageEncoding = "";
  $charEncoding = "";
  switch (LANGUAGE)	{
    case "arabic":
      $languageEncoding = "en_US.iso88591";
      $slectedLanguage = "en_US";
      $charEncoding = "iso88591";
      break;
...
    case "spanish":
      $languageEncoding = "es_ES.iso88591";
      $slectedLanguage = "es_ES";
      $charEncoding = "UTF-8";
      break;
...
    default:
      $languageEncoding = "en_US.iso88591";
      $slectedLanguage = "en_US";
      $charEncoding = "iso88591";
      break;
  }
...
}

Mi sistema no tiene la codificación “es_ES.iso88591”, por tanto en el case cambié la parte de español de forma que coincida con el locale que instale anteriormente:

  case "spanish":
  $languageEncoding = "es_ES.UTF-8";
  // $languageEncoding = "es_ES.iso88591";
  $slectedLanguage = "es_ES";
  $charEncoding = "UTF-8";
  break;

y voilá !!!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: