Registrarse en Feedo
He decidido que los datos necesarios para crear una cuenta en Feedo sean solamente un correo electrónico y una contraseña.
El motivo que me lleva a tal decisión es sencillamente facilitar el registro a los usuarios. Últimamente están apareciendo opiniones a través de la red que ponen de manifiesto las múltiples ventajas de realizar este tipo de sistemas de registro. Entre ellas destacán la brevedad y sencillez del proceso y la garantía de un identificador único para todo internet dado que una dirección de correo electrónico así nos lo garantiza.
He encontrado este enlace, que trata sobre el tema, interesantísimo: TiRSO!Blog.
Internacionalización y localización en Symfony
Como ya he dicho en un post anterior Symfony es un framework de PHP que ofrece soporte para internacionalización (i18n) y localización (l10n).
En primer lugar definiré brevemente ambos conceptos.
Por internacionalización se entiende el proceso de generación de distintas versiones de un mismo contenido en idiomas diferentes.
Por otra parte localización se refiere al proceso de adaptación de los contenidos a un determinado país o región del mundo.
El soporte que ofrece Symfony a dichos procesos se centra principalmente en tres aspectos:
Traducción de textos.
Estándares y formatos. Me refiero a fechas, unidades monetarias etc.
Localización de contenidos.
Para manejar todas estás cuestiones de una manera más sencilla Symfony trabaja con el concepto de “Cultura del Usuario”. Que no es más que una cadena de texto donde se indican el idioma y el país a los cuales se debe ajustar la interfaz y el contenido. Un ejemplo de cultura de usuario puede ser la cadena “en_US”. “en” es el código del ingles según el estándar ISO 639-1 y “US” es el código de los Estados Unidos de América según el estándar ISO 3166-1. El país también tiene su importancia en los procesos de internacionalización y localización puesto que países que comparten un idioma pueden por ejemplo tener distinto sistema métrico o monetario.
De esté modo cuando el usuario elige traducir la página a un idioma distinto al idioma por defecto el código PHP puede llegar a ser tan sencillo como cambiar la cultura del usuario, para lo que el framework ofrece métodos setter y getter.
Lo más habitual es que la cultura del usuario se obtenga de las preferencias del navegador en la primera petición http. Symfony obtiene la cultura por defecto de la aplicación de un archivo de configuración externo llamado i18n.yml.
Dentro del tema de estándares y formatos Symfony ofrece principalmente dos herramientas. La primera es un amplio conjunto de helpers de internacionalización que facilitan la tarea de ofrecer y obtener información del usuario.
La segunda es la forma en que realiza Symfony el mapeo de la base de datos a través de Propel. Para llevar a cabo la localización de una aplicación la base de datos debe permitir almacenar distintas versiones de un mismo contenido. Cada tabla que ofrece información localizada se debe dividir en dos. Una sin ningún tipo de información localizada y otra con toda la información localizada. La segunda tendrá el mismo nombre que la primera pero con el sufijo “_i18n”. Si ambas tablas están relacionadas por una columna “id”, tras generar el modelo con Propel, las consultas realizadas devolverán solamente los resultados relacionados con la “cultura del usuario” actual.
En cuanto a la traducción de textos Symfony ofrece el uso de diccionarios. Un diccionario es un archivo en xml que almacena la traducción de las frases del interfaz a un determinado idioma. Para ello se emplea el formato XLIFF (XML Localization Interchange File Format). Este formato define parejas entrada-valor, donde la entrada se corresponde a la frase utilizada en el interfaz, normalmente en el idioma de la cultura por defecto, y el valor a su traducción en el idioma para el que se define el diccionario.
Por cada nuevo idioma al que deseemos traducir la interfaz deberemos generar uno de estos diccionarios.
Para declarar una frase como traducible se utiliza el helper __(). Symfony sustituye cada frase dentro de este helper por la encontrada en el diccionario correspondiente al idioma indicado en la “cultura del usuario” actual. En el caso de que la cultura actual coincida con la cultura por defecto no se realiza ninguna sustitución.
Esta información se obtuvo del manual de uso de Symfony, Capítulo 13.