Blog

Buenas prácticas Drupal. Poner en marcha un proyecto

23/05/2016

En ASPgems estamos redefiniendo nuestras buenas prácticas de desarrollo y debatiendo sobre ellas. Cada muy poco tiempo surgen nuevas herramientas y nuevas técnicas que facilitan que la puesta en marcha de un proyecto sea más rápido y efectivo. Además, nos ayudan a estandarizar procesos y a coordinarnos, lo que aumenta nuestra productividad.

1. Organizando los ficheros de traducción con Drupal

Hay varios módulos que facilitan las traducciones.

  1. Traducción desde la administración de Drupal. Es una interfaz con buscador y filtros que nos permite localizar y traducir cadenas. Esta funcionalidad viene en el core.
  2. l10n_client Es un módulo más enfocado al usuario. Al navegar por el sitio aparece una ventana en la parte inferior que nos permite buscar y traducir. Tiene atajo de teclado. Además podemos configurarlo de modo que las traducciones sean enviadas a un servidor de traducciones.
  3. Módulos como lingotek. Enfocado a empresas de traducción y gestores de sitios. Se puede crear workflow en el proceso de traducción. Lingotek permite que las traducciones estén conectadas a servicios automáticos, al propio servicio de traductores de lingotek (hecho por personas) y a otras empresas de traducción.

Estos módulos hacen transparentes los ficheros a los traductores.

2. Internacionalización en Drupal

En Drupal distinguimos dos tipos de traducciones: Interfaz y contenido.

Para la interfaz va en base de datos. Se pueden utilizar ficheros para importar y exportar traducciones. Son ficheros po para las traducciones a idiomas, y pot para plantillas basados en Gettext. Hay un servidor http://localize.drupal.org/ en el que existe las traducciones del core y los módulos contrib, utilizando el módulo localization update se pueden incorporar a nuestro sitio. También se puede montar un servidor propio y utilizarlo como repositorio de traducciones. Internamente estos servidores utilizan ficheros po que sincronizan las traducciones.
También se puede traducir la interfaz directamente en la admin del sitio.

La organización de las traducciones depende del proyecto. La mayoría se traduce utilizando la admin del sitio.

Estamos en camino de encontrar una interfaz de traducción amigable para el cliente. En algunos proyectos el cliente traduce la interfaz y las páginas y plugins no son amigables para el usuario final, o no funcionan finos. Esto es algo que queremos incorporar por defecto en nuestro proyectos, aunque influye mucho el tipo de proyecto para afrontar la interfaz de un modo u otro.

Para la traducción del contenido Drupal ofrece varios módulos que facilitan diferentes workflows, permisos por roles, sincronización entre idiomas por campos, etc. Este es el módulo de partida: https://www.drupal.org/project/i18n, además de locale que está en core.

En Drupal 8 la internacionalización viene integrado en el core, por lo que es el que utilizamos.

3. Ficheros de configuración en Drupal

En los proyectos Drupal 7 esto se hace con el fichero settings.php.

En los últimos proyectos se versiona sólo el código del desarrollo, para los módulos contrib y el core utilizamos makes. Las configuraciones específicas de entornos no están versionadas.

En D8 los ficheros de configuración son yml.

4. Crear una plantilla para montar un nuevo entorno de desarrollo

Muchas veces al pedir un entorno de pruebas o de producción olvidamos pedir cosas, haciendo muy tedioso el proceso con peticiones recurrentes y a destiempo y alterando el flujo de trabajo del equipo de sistemas.

Es por ello que para optimizar este proceso hemos creado unas plantillas (una para los entornos de producción y otras para integración) para que desarrolladores y gestores de proyecto, en colaboración con el PO, es decir, el cliente, las rellenen y quede documentada la petición.

5. Docker y Vagrant para arrancar un proyecto desde 0 sobre Linux

Utilizamos Vagrant para nuestros entornos de desarrollo. Puedes echarle un vistazo a nuestra charla «Vagrant es fácil» de la DrupalCamp Spain de Valencia. Para montar la máquina de desarrollo utilizamos un fork del proyecto VDD. Ampliado con algunas recetas propias que nos facilita nuestro flujo de trabajo.

Las herramientas de automatización como Chef nos permiten provisionar las máquinas Vagrant y los entornos de integración y producción. Junto a scripts customizados haciendo uso de Drush (herramienta de consola de Drupal), los despliegues son tareas automáticas. Con todo esto conseguimos arrancar un proyecto desde cero en 25 minutos en entornos Linux/Mac/Windows ya que Vagrant es portable.

Con la llegada de Drupal 8 comenzamos a tabajar en incorporar Docker y los servicios asociados a esta tecnología: repositorio de imágenes DockerHub y el servicio de DockerCloud, que permite la integración continua.

Las ventajas son innegables:

  • Todos usamos exactamente las mismas versiones de todo, instalado de la misma manera. Además los entornos de desarrollo son iguales a los de integración y producción.
  • El tiempo de montar un entorno de desarrollo para alguien que entra en el proyecto se reduce sustancialmente. 
  • Los propios scripts (Recetas de Chef/Dockerfiles) que se usan para generar las imágenes y los contenedores a su vez sirven de «guía de instalación».
  • El cambio de un proyecto a otro es inmediato y se evitan los posibles problemas de versiones, por ejemplo el típico de tener versiones distintas de SOLR en dos proyectos.

En el futuro inmediato, se nos plantean los siguientes retos:

  • Cómo lo integramos con los diferentes IDEs que utilizamos.
  • Cómo debugueamos.
  • Quién es responsable de crear un docker nuevo (desarrollo o sistemas).

La semana que viene seguiremos hablando de buenas prácticas de desarrollo de software y seguiremos compartiendo nuestros debates y conclusiones.

 

 

También te puede gustar…

Caso de éxito: Fronda

Caso de éxito: Fronda

Fronda, es una cadena de centros de jardinería que cuenta con una tienda online que opera por toda España con la que hemos colaborado.

ASPgems icon
C/ Sextante, 9
28023 Madrid,
España

Hablemos.

A %d blogueros les gusta esto: