Symfony i18n con gettext

Publicado en Frameworks, Programación el 5 de December de 2009 por Manel Pérez Mata
Tags: | Añadir comentario

Symfony permite varios métodos para internazionalizar nuestra aplicación. Por defecto, utilizan el formato XLIFF sin embargo, personalmente me gusta más gettext.

¿Cómo configurar symfony para usar gettext?

Para configurar symfony para que utilice gettext seguiremos los siguientes pasos:

1) Activamos el módulo I18N modificando el archivo settings.yml:

#apps/<appName>/config/settings.yml
all:
  .settings:
    charset:                utf-8
    i18n:                   on
    standard_helpers:       [ [TUS_HELPERS_ACTIVADOS]..., I18N]

2) Abrimos el archivo factories.yml y añadimos la entrada i18n:

#apps/<appName>/config/factories.yml
all:
  i18n:
    class: sfI18N
    param:
      default_culture:  en_US
      source:           gettext</pre>

3) Crearemos una carpeta i18n dentro de apps//:

apps/<appName>/i18n/<lang>

Donde <lang> será el idioma en dos letras (en, es, fr…) y dentro tendremos los ficheros messages.po y messages.mo.

Ahora podemos utilizar la función __( ‘texto_a_traducir’ ) con doble underscore [ _ ] en lugar del simple utilizado normalmente.

¿Cómo generar automáticamente nuestros ficheros po y mo?

Symfony trae una serie de herramientas que nos permiten generar los archivos po y mo de manera automática. Invocando el comando:

symfony i18n:extract frontend en --auto-save

Se recorrerá todos los archivos php de nuestra aplicación (código y templates) y sacará los textos que encuentre en las funciones __().

También se puede utilizar el mismo comando de la siguiente manera:

symfony i18n:extract frontend en --auto-delete

para eliminar las cadenas de texto que ya no existen.

Pasar segundos a horas:minutos:segundos

Publicado en Programación el 5 de November de 2009 por Manel Pérez Mata
Tags: , | Añadir comentario

Una sencilla función que dado un número de segundos, nos devuelve el tiempo en formato hh:mm:ss


protected function makeTimeFromSeconds( $total_seconds )
{
    $horas              = floor ( $total_seconds / 3600 );
    $minutes            = ( ( $total_seconds / 60 ) % 60 );
    $seconds            = ( $total_seconds % 60 );

    $time['horas']      = str_pad( $horas, 2, "0", STR_PAD_LEFT );
    $time['minutes']    = str_pad( $minutes, 2, "0", STR_PAD_LEFT );
    $time['seconds']    = str_pad( $seconds, 2, "0", STR_PAD_LEFT );

    $time               = implode( ':', $time );

    return $time;
}

Espero os sea de utilidad.

La clase sfConfig de Symfony

Publicado en Frameworks, Programación el 10 de October de 2009 por Manel Pérez Mata
Tags: , | Añadir comentario

Aquí os dejo algo de información sobre como solicitar variables de configuración en symfony además de un listado muy útil con todas las variables que Symfony trae predefinidas.

Cómo pedir variables definidas

Se puede llamar a la función estática get del objeto sfConfig para solicitar cualquier variable definida pasándo dos valores. El primero indica el nombre de la variable solicitada y el segundo, el valor que retornará en caso de no existir dicha variable.

sfConfig::get('sf_config_variable', 'The default value'); // The default is optional

… Seguir Leyendo

Si las webs fueran personas…

Publicado en Internet, Web el 5 de October de 2009 por Manel Pérez Mata
Tags: , , , | (1 Comentario)

Veo en el blog de 20 minutos la siguiente viñeta que identifica las webs más populares del momento con personas.blog-silaswebsfuerangente-d

Cómo optimizar tus aplicaciones Web

Publicado en Navegadores, Programación el 2 de October de 2009 por Manel Pérez Mata
Tags: , , | Añadir comentario

Optimizar aplicaciones PHPManuel Aguilar publicó una magnífica presentación sobre cómo optimizar aplicaciones Web dada en la PHP Barcelona Conference 2008 y he considerado interesante recopilar a modo de resumen las ideas más importantes de ese artículo, en cualquier caso, recomiendo la lectura del mismo para recoger toda su esencia y ampliar información.

Partiendo de un estudio de Yahoo! que dice que el 80% del tiempo de carga de una web corresponde al lado del cliente, podemos seguir una serie de reglas que aumentarán significativamente la percepción de velocidad del usuario. … Seguir Leyendo

Implementando un sistema de caché en PHP

Publicado en Programación el 21 de September de 2009 por Manel Pérez Mata
Tags: , | Añadir comentario

Hace unos días, os comentaba que es una caché y como entenderla en el marco de la programación web. Para seguir con el aprendizaje de este sistema, he desarrollado una pequeña clase que permite cachear información (strings, arrays, resultados de base de datos, objetos…) en nuestra máquina y descongestionar así el motor de base de datos, por poner un ejemplo.

Lo primero que debemos hacer es pensar en que necesitamos para su correcto funcionamiento, así que, manos a la obra.

Como sabemos, una caché es un sistema al que le pasamos un objeto X y él lo almacenará en su sistema de una manera determinada, por lo tanto, necesitaremos una función que dado un identificador único y unos datos, guardará la información. Además de esto, necesitamos indicarle un tiempo de vida (ttl) a esa información cacheada, sino estaremos devolviendo eternamente el valor almacenado. … Seguir Leyendo

Google compra ReCaptcha para impulsar Google Books

Publicado en Internet el 19 de September de 2009 por Manel Pérez Mata
Tags: | Añadir comentario

recaptcha-exampleGoogle vuelve a ser noticia, esta vez por la compra de la empresa ReCaptcha encargada de facilitar un sistema rápido y eficaz de captcha a webmasters para utilizar en sus proyectos web. Con esta adquisición, Google pretende acelerar el proceso de digitalización de libros para Google Books, proyecto en el que lleva trabajando varios años. … Seguir Leyendo

Test-Driven Development

Publicado en Programación el 17 de September de 2009 por Manel Pérez Mata
Tags: , | Añadir comentario

test-driven_development

Hace algún tiempo, os hablaba de la importancia de usar Unit Testing en nuestros desarrollos para tender localizados los posibles errores en cada una de nuestras funciones y, de ese modo, hacer un cambio en cualquier función no nos será crítico, ya que el test nos informará si la función está devolviendo los resultados esperados para cada cualquier.

Pero ¿y si al desarrollar el test me he dejado algún punto por comprobar? A menudo, tener una covertura del 100% resulta complicado debido al error humano, pero una vez detectado un error, debemos solventarlo y modificar el test para que no vuelva a darse ese error, y yendo un poco más allá, ¿por qué no pensar en los posibles errores que puede tener la función que desarrollemos antes de programarla? y ya que los hemos pensado, ¿por qué no realizar el test aunque todavía no hayamos desarrollado la función en questión? Pues precisamente, esa es la idea del Test-Driven Development (TDD a partir de ahora).

En resumen, podemos decir que el TDD es una práctica a la hora de programar que implica el desarrollo del test unitario antes de haber picado una sola línea del código de la función a testear… Pero, ¿qué ventajas tiene? ¿cuál es el workflow de esta práctica? … Seguir Leyendo

Qué es una Caché y como aplicarla a la programación Web

Publicado en Programación el 14 de September de 2009 por Manel Pérez Mata
Tags: , , , | (1 Comentario)

Vamos a ver que es una caché con un ejemplo muy ilustrativo que leí hace algún tiempo. Supongamos que estamos trabajando en una centralita que facilita números de teléfono de un pueblo relativamente pequeño; para ello, tenemos un listín telefónico común con todos los teléfonos del pais.

Cada vez que recibimos una llamada, cogemos el listín, realizamos la búsqueda y facilitamos el número encontrado al usuario. Al poco tiempo, nos damos cuenta que la gente suele pedir los teléfonos de los mismos restaurantes y comercios una y otra vez, así que cogemos una libreta pequeña y vamos anotando los números de teléfono que nos solicitan ordenados alfabéticamente para poder acceder a ellos de manera más rápida la próxima vez… felicidades, acabas de crear una caché! … Seguir Leyendo

PHP Barcelona Conference 2009

Publicado en Programación el 12 de September de 2009 por Manel Pérez Mata
Tags: , , | Añadir comentario

phpbarcelonaconference2009Después del éxito obtenido la pasada edición, el grupo PHPBarcelona ha vuelto a organizar una conferencia para este año. El lugar de encuentro será el CitiLab de Cornellà los días 30 y 31 de Octubre.

Ya se ha abierto la venta anticipada de entradas a un precio increiblemente bajo: 25€ un día y 40€ los dos. Puedes adquirir las entradas desde la web oficial.

Según anuncian: “Este año el evento viene cargado de muchas e interesantes novedades: dos días de duración (Viernes y Sábado), distintas actividades entremezcladas (ponencias teóricas, talleres prácticos, concursos de programación, etc.), dos líneas de idioma (español e inglés), nuevos y potentes patrocinadores, más celebridades invitadas, divertidos regalos y mucho más!”

Realmente este año los chicos de PHPBarcelona se han puesto las pilas, pues en el cartel de charlas aparecen nombres tan importantes como Rasmus Lerdorf (Uno de los creadores de PHP), Fabien Potencier (Lead Developer de Symfony), Derick Rethans (XDebug) y Sebastian Bergmann (Creador de PHPUnit).