Tutoriales

Traducir la interfaz

Uno de los escenarios más interesantes y complicados al desarrollar en Drupal es el de usar varios idiomas, en la nueva versión 6 se solucionan muchos problemas al tener integrada toda la funcionalidad para tener un sitio en más de un idioma, en el caso de Drupal 5 se tiene que usar el modulo i18n, que soluciona buena parte de la traducción de los textos de un idioma a otro ¿pero que hacer si el tema desarrollado incluye un menú que esta hecho de imágenes? lamentablemente no se produce ningúna traducción.
La solución es un snippet que detecta que idioma se tiene y despliega un html diferente en cada caso.

El código es el siguiente:

<?php 
   
global $i18n_langpath;
    if (
$i18n_langpath == fr) {
     print
"HTML français ici";
     } else {
     print
"English HTML here";
     }
?>

Este código lo encontré en la sección de snippets de i18n.

 

i18n, Instalación y configuración

Una de las opciones que más importancia esta tomando en el desarrollo de Drupal es la posibilidad de crear sitio en varios idiomas, en la versión 5 existen dos modulos que permiten tener contenido en varios idiomas: i18n y Localizer.

El modulo 18n parece ser el más completo aun que su instalación y configuración resultan un tanto confusas, por suerte encontré un tutorial que explica bastante bien como instalar y configurar el modulo. Este tutorial esta originalmente en ingles y fue escrito por Dave Myburgh, con permiso de el lo traduzco.


Instalación

1. Bajar y extraer el module i18n, dentro de la instalación de Drupal en: sites/all/modules (se creara un folder con el nombre i18n).

2. Bajar las traducciones que se vayan a usar por ejemplo la de español, por default Drupal ya tiene el idioma ingles.

3. Ir a Administration > Site building > Modules y activar los siguientes modules que forma parte de i18n:

• Internationalization
• i18n - blocks
• i18n - taxonomy (only if you're going to use categories)
• Translation

modulo i18n

4. Ir a Administration > Site configuration > Localization y tocar el boton de importar

5. Tocar Browse (navegar) y encontrar el archivo(s) del idioma español (y otros idiomas que se quieran habilitar) estos archivos tienen la terminación .po

6. Seleccionar el idioma que se quiere importar.

7. Regresar a la pagina de administración de los idiomas (Administration > Site configuration > Localization) y habilitar los idiomas importandos, poniendo el nombre adecuado en el idioma original. Salvar los resultados.

Estos son los pasos basicos para dejar funcionando el modulo i18n.


Parametros Basicos


1. Los parametros de el modulo i18n se localizan en Administration > Site configuration > Multilingual system.

detectar el idioma

2. Generalmente se activa la opción de Browser language detection, de esta manera se detecta automáticamente el idioma en que esta el navegador que usa el visitante.

3. En la sección de Advanced settings generalmente se deja la opción que trae por default de Only current language and no language (solamente el idioma actual y ningún otro idioma). Las otras opciones permiten mostrar artículos de diferentes lenguas al mismo tiempo.

4. En la pestaña de Traducción (Translation tab) Generalmente se deja la opción de Language Management to Interface language depends on content. De esta manera La interfaz de Drupal cambia junto con el contenido. Se sugiere usar las otras opciones solo si se muestra todo el contenido (in Advanced settings).

5. Los parámetros de Links to node (ligas a nodos) es una preferencia personal. Si se selecciona esta opción aparece una liga que permite ir a la traducción del articulo directamente.

6. Para el flujo de trabajo de la traducción (workflow) generalmente no se activa, pero si varias personas van a hacer la traducción se debe activar para dejar indicado en que paso de la traducción se encuentra el articulo (node).

Una vez hechos estos cambios a la configuración del modulo i18n es posible empezar a crear nodos, bloques y terminos en categorias. La traducción de menus se tiene que hacer de una manera especfica. El module i18n se supone que traduce automaticamente los menus pero es resulta algo temperamental (por no decir incompleta) la manera que lo hace.


Activar la traducción en los Nodos

Un ultimo e importante parametro, es el de activar la traducción para los diferentes tipos de nodos.

1. Ir a Administer > Content management > Content types y tocar el boton de editar al lado del tipo de nodo que se quiera editar (por ejemplo page o image).

tipo de contenido

2. Bajar en la pantalla hasta donde están los parámetros de Multilingual support seleccionar Normal o extended. Generalmente la opción de Normal es la más usada, pero se puede activar la opción de extended en las situaciones en las que se quiera tener el idioma activado hasta que las traducciones esten hechas.

3. Después de salvar estos cambios en el tipo de contenido, cuando se cree un nuevo nodo de este tipo apareceran nuevas opciones que son la de poder seleccionar un idioma para el nuevo nodo y la de seleccionar un flujo de trabajo (workflow) para la traducción del mismo. Las opciones del flujo de trabajo permiten categorizar el contenido de manera que se pueda saber que articulos se estan traduciendo. para ver los articulos en sus diferentes estados de traducción se tiene que ir a la sección de Administer > Content management > Translations.

nuevas opciones de publicación

Idioma nativo

Este es un pequeño cambio que se puede hacer al utilizar el modulo i18n que sirve para crear sitios con varios idiomas.

En la sección de localización (locale) se puede hacer el cambio de que idioma aparecera cada uno al deplegarse en cualquie bloque que use el modulo i18n.

native name

Usando Clean URLs


Drupal tiene la opción de cambiar la manera en que se muestran las direcciones dentro del sitio, generalmente una pagina (node) tiene una dirección más o menos así:


http://www.drupalmexico.com/node/9

con la opción de Clean url se puede cambiar la dirección a algo así:

http://www.drupalmexico.com/warnerdrupal

Resulta más facil de leer y se supone ayuda a que los buscadores pongan la pagina en mejor lugar de resultados.

Para hacer que funcione esta opción se requieren dos pasos, primero una pequeña modificación en el servidor apache, para la mayoria que usamos servidores compartidos y no podemos ajustar directamente el servidor, este ajuste se hace en el archivo .htaccess que generalmente esta en la carpeta donde se intalo druapal (si no se tiene que crear) en el cual se escribe el siguiente script:


# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment and adapt the following:
# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Rewrite URLs of the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

Como veran el script viene documentado, en mi caso solo necesite pegar el script y salvar el archivo para que funcionara, en otros casos tiene uno que quitar las lineas de comentario // para que alguna opción se aplique, sobre todo en cuanto a la dirección donde se encuentra Drupal dentro del servidor.

Una vez que se hizo este cambio se entra a la sección de administración de Drupal y en la sección de modulos se activa el modulo de path (es un modulo que trae por defualt Drupal) despues en la secció de administración se tiene que buscar las opciones de Clean URLs y tocar el boton de hacer una prueba si no se toca esta opción no se activa el boton para activar los urls limpios.

Si todo salio bien ya se pueden cambiar las dirección de los nodos, existen tres maneras, la primera y más sencilla es al crear un nodo nuevo o modificar uno existente, aparece como nueva opción la de URL path settings que es un campo donde se le asigna nombre a la dirección es mportante no poner acentos o una eñe asi como no poner espacios.

La otra manera es hacer reglas más generales con URL Aliases, en el area de administración esta esta opción al crear una nueva regla se indica el url como estaba antes y como quedaria despues en el caso de Drupal mexico sirve para mostrar las sección de temas con el nombre de cada sección: tutoriales, cometnarios etc.

FInalmente esta el modulo Pathauto que se supone sirve para crear estas direcciones de manera automatica, por el momento no he acabado de lograr que funcione correctamente.

en este momento tengo funcionando esta opción de clean url en Drupalmexico, me hace falta implementarlo en sitios algo más comlicados por ejemplo que usen varios templates que cambia por la categoria en que esten y ver si no existe ningun comflicto entre modulos.

Dejo ligas a la documentación en el sitio de Drupal que resulta de gran ayuda:

Esta primera explica a detalle como usar la opción de Clean URL:
http://drupal.org/node/15365

Esta segunda es una colección de script para modificar el archivo .htaccess. no todos son para cambiar el url:

http://cvs.drupal.org/viewvc.py/drupal/drupal/.htaccess?view=markup

Trabajando con video

A veces uno se contenta con trabajar con lo que ya se sabe, pero a veces es interesante salir un poco de lo ya conocido para implementar nuevas cosas.
En las ultimas semanas estuve actualizando el sitio de un festival cultural. Es el segundo año que se actualiza y se hace una cobertura de este festival, pero este año probamos colocar pequeños clips de vídeo, para hacer esto me dedique a buscar de que manera se podía integrar vídeo a Drupal. Por el momento me fui con la opción obvia que es el modulo de vídeo.

Este modulo funciona agregando un nuevo tipo de nodo a la lista. este nuevo tipo de nodo se llama obviamente vídeo y es similar a cualquiera de las otra formas para crear contenido dentro de drupal, solo cambiando en la información especifica de vídeo, es agradable la opción en el campo de la ruta al archivo (path) el que se permita poner el código de un vídeo en youtube y con solo eso el vídeo se puede integrar a el nodo que se va a crear.

Lo que resulta un tanto chocante es tener que poner las medida del vídeo así como la duración (en el caso de youtube no es necesario) es un poco como pasos extras que uno cree seria normal no tener que hacerlo.

pantalla de video en drupal

Finalmente una sugerencia, en las opción del modulo, trae por default el reproducir el vídeo en una segunda pestaña dentro del nodo ya publicado, me parece que es más fácil poner el que corra el vídeo directamente entrando al nodo, con esto solo hace falta ligar desde otro nodo para tener por ejemplo una nota del evento y una liga a otro nodo con el vídeo, tal vez faltaría una opción para abrir el archivo de vídeo en un pop up.

Detalle en las fechas

Estoy renovando la información de el sitio de un festival. La información nueva se tiene que organizar no solo por tema (música, teatro etc.) si no también por día, cronológicamente.

lamentablemente empece a crear los nodos con la información de cada día en el orden contrario como debían ir, al componer esto descubrí que en la forma para editar el nodo (casi igual que la forma para crear un nodo nuevo) se puede cambiar la fecha de creación y la posición de los nodos en la pagina principal al borrar la fecha empieza uno con la fecha en la que se creo el nodo

fecha en la publicación

Y al borrar la fecha se vuelve a poner el nodo al inicio de la pagina principal:

sin fecha

Los nodos

Hablemos de el componente básico de Drupal, digamos que de la célula básica: Los nodos. Cuando uno se inicia en Drupal se encuentra que los manuales para usarlos hablan de nodos. Un nodo puede ser una forma de contacto o un articulo, o un producto de una tienda, podemos decir que el termino de nodo lo usaron como una manera general de nombrar cualquier contenido dentro de drupal.

Por cierto al publicar este texto la dirección dira node (nodo) y y un numero que se le asigna a cada nodo dentro del sitio.

Avisando a directorios

MultiPing

Estoy probando un modulo que se llama multiPing que sirve para avisar la actualización del sitio. Drupal trae por default un modulo de Ping que manda la actualización a el servicio de pingomatic que a su vez entera a directorios de blogs como son Technorati, el problema claro esta es que no se incluyen directorios como blogsmexico que obviamente solo concierne a este país. Con multiping parece solucionarse el problema ya que permite seleccionar y agregar a que directorios realmente quiere uno mandar la noticia que a sido actualizado el sitio o blog.


Nota varios dias despues: El modulo funciona bastante bien solo que con blogsmexico.com no acab de funcionar tendre que entrar en contacto con ellos para ver por que no funciona/

Un manual para usar CCK

Me acabo de encontrar con un buen texto que explica como usar el modulo CCK con el cual se puede crear nuevos tipos de contenidos que sirvan para tipos especificos de funciones.

 El manual esta en http://manualdrupal.investic.net/cck
 


Theme & Icons by N.Design Studio
drupal mexico 2007
Un proyecto de Medioyforma.info

Add to Technorati Favorites

Sindicar contenido