Sitio Multilingue

Hola a tod@s:

Tengo un sitio en donde estoy utilizando la función de multiliguismo
(4 idiomas). Todo hasta el minuto resulta excelente solo que no sé
como hacer un menú por idioma.
Estoy más encima utilizando la versión 1.9.2 y la documentación sobre
esto e de la 1.7 y es bastante enredada.
He intentado hacerlo en inc_rubrique, pero no me imagino un boucle en
donde se muestren sólo las secciones correspondientes al idioma del
artículo. ¿o es más fácil?

Saludos
Pablo Moya

--
"Hasta la Victoria Siempre"
www.feuach.cl
www.zoronkalatribu.cl
www.raluya.org
www.softwarelibre.cl
www.surda.cl

Para ver todas las traducciones de un articulo podrias hacer un bucle
asi dentro del bucle de article.html

<B_trad1>
<ul>
    <BOUCLE_trad1(ARTICLES){traduction}{exclus}>
<li>[<a href="#URL_ARTICLE"dir="#LANG_DIR">(#LANG|traduire_nom_langue)</a>]</li>
    </BOUCLE_trad1>
</ul>
</B_trad1>

el criterio importante es {traduction} que es el que devuelve todas
las "versiones" (traducciones) de un articulo en curso. {exclus} sirve
para excluir el idioma del articulo actual.

Si lo que queres es un menu, depende lo que quieras hacer y como
tengas las estructuras de tus secciones. Por ejemplo yo tengo un menu
de idioma que me remite siempre a la portada pero en el idioma
seleccionado. Mis idiomas, son los distintos sectores del sitio, o sea
la "racine"

<BOUCLE_lang(RUBRIQUES){racine}>
<li><a href="#URL_SITE_SPIP/?lang=#LANG"
title="<:portada:>">[(#LANG|traduire_nom_langue)]</a></li>
</BOUCLE_lang>

Por ultimo, un bucle un poco mas complejo es mostrar un menu que
devuelva todas las traducciones de una seccion. Esto, claro está, es
porque SPIP no vincula a las secciones (no existe en la base de datos
la informacion de que una seccion es "traduccion" de otra.).

Pero se puede resolver con la siguiente logica: La seccion que tenga
las versiones traducidas de los articulos de la seccion actual, será
la traduccion de esta seccion.

hete aqui el bucle.

<BOUCLE_h_rub(HIERARCHIE){id_rubrique}>
  </BOUCLE_h_rub>
   <BOUCLE_article_dependant(ARTICLES){branche}{0,1}>
    <BOUCLE_traduc(ARTICLES){traduction}{exclus}{par lang}>
      <BOUCLE_art_trad(HIERARCHIE) {id_article} {#_h_rub:TOTAL_BOUCLE,1}>
        <li><a href="#URL_RUBRIQUE">
        <BOUCLE_secteur(RUBRIQUES){id_rubrique=#ID_SECTEUR}{doublons}>
          [(#LANG|traduire_nom_langue)]
        </BOUCLE_secteur>
        </a></li>
      </BOUCLE_art_trad>
    </BOUCLE_traduc>
      [(#REM)il n'y a pas de lien]
    <//B_traduc>
   </BOUCLE_article_dependant>
  </B_h_rub>

Por ultimo, estos usando una contrib viejita de Dani, para detectar el
idioma preferido del navegador del usuario. Yo lo coloco al principio
de sommaire.html

Pero en realidad, aunque no lo he probado, ahora hay un plugin para
realizar esta tarea

<?php
/*
* Construir la tabla $idiomas con los idiomas preferidos del
* navegador del visitante
*/
if(!isset($_GET['lang'])){

$idiomas = split(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach( $idiomas as $lg ) {
/*
* para cada idioma preferido por el visitante
*/
<BOUCLE_sectores_idioma(RUBRIQUES){racine}>
        /*
         * Un bucle de los sectores, es decir de los idiomas del
         * sitio
         */

  if (substr($lg,0,2) == "#LANG") {
  /*
   * si el idioma preferido (sin variante) es igual
         * al idioma del sector, redirigir al sector
   */
    header("Location: #URL_SITE_SPIP/?lang=#LANG");
    exit;
  };
</BOUCLE_sectores_idioma>
}
  /*
   * si ninguno de los idiomas preferidos existe en el sitio
   * redirigir al sector del idioma principal (el primero)
   */
header("Location: #URL_SITE_SPIP/?lang=es");
}
?>

Todos estos bucles los estoy laburando en http://www.vosbuenosaires.com/pruebas/

espero haber ayudado.
un abrazo.
tin

El 23/04/07, Pablo Moya <pabmoyan@gmail.com> escribió:

Hola a tod@s:

Tengo un sitio en donde estoy utilizando la función de multiliguismo
(4 idiomas). Todo hasta el minuto resulta excelente solo que no sé
como hacer un menú por idioma.
Estoy más encima utilizando la versión 1.9.2 y la documentación sobre
esto e de la 1.7 y es bastante enredada.
He intentado hacerlo en inc_rubrique, pero no me imagino un boucle en
donde se muestren sólo las secciones correspondientes al idioma del
artículo. ¿o es más fácil?

Saludos
Pablo Moya

--
"Hasta la Victoria Siempre"
www.feuach.cl
www.zoronkalatribu.cl
www.raluya.org
www.softwarelibre.cl
www.surda.cl
_______________________________________________
Spip-es@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-es

--
¡EXIGIMOS LA APARICION CON VIDA DE JULIO LOPEZ! JUICIO Y CASTIGO A LOS
CULPABLES DEL GENOCIDIO.

Hola Pablo,

¿Cómo organizaste el sitio? Realmente hacer un menú de secciones por idioma es muy complicado porque SPIP no considera la traducción de la sección (bueno, no he probado esto con las versiones 1.9)

La solución no está en el bucle sino en la arquitectura de la información, lo que yo hago es que creo las secciones o en la raíz del sitio (o sectores) uno por idioma. Después pongo a mano, enlaces entre cada sección y su correspondiente en los demás idiomas....

El trabajo inicial de organizar las secciones y poner las cosas en orden, en especial eso de hacer los enlaces a otras secciones es un poco engorroso, pero después no tienes que preocuparte más. El bucle del menú es sencillo
<BOUCLE_secciones_idioma(RUBRIQUES) {id_parent} {par titre}>

Esa es la forma en que está estructurado el sitio de SPIP.net que está en 22 idiomas y funciona muy bien, allí a partir de evaluar cuáles son los artículos traducidos, se determina cuál es la traducción de las sección. Apenas acabo de "robarme" el bucle de http://www.spip.net/squelettes/inc-trad-rub.html
Hay que estudiarlo un poco pero suena interesante:

[(#REM) Traductions de la rubrique, a partir des traductions des articles ]

                <B_enfants>
                <div class="traductions">
                    <p><:trad_rubrique_traduction:></p>
                    <ul>
                    <BOUCLE_enfants(ARTICLES){id_rubrique}>
                        <BOUCLE_trad_enfants(ARTICLES){traduction}{lang!=#ENV{lang}}>
                            <BOUCLE_rubrique_traduite(RUBRIQUES){id_rubrique}{doublons trad_rub}>
                                <li lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR">&#91;<a href="#URL_RUBRIQUE" rel="alternate" hreflang="#LANG" title="[(#LANG|afficher_nom_langue)][ - (#TITRE|couper{70}|texte_backend)]">[(#LANG|replace{'_.*$',''})]</a>&#93;</li>

                            </BOUCLE_rubrique_traduite>
                        </BOUCLE_trad_enfants>
                    </BOUCLE_enfants>
                        </ul>
                </div>
                </B_enfants>

Espero que te sirva.

P.S. Voy a estar en Argentina y Chile en las dos primeras semanas de mayo, estaré en Mendoza y en Santiago principalmente.

Germán

Pablo Moya escribió:

Hola a tod@s:

Tengo un sitio en donde estoy utilizando la función de multiliguismo
(4 idiomas). Todo hasta el minuto resulta excelente solo que no sé
como hacer un menú por idioma.
Estoy más encima utilizando la versión 1.9.2 y la documentación sobre
esto e de la 1.7 y es bastante enredada.
He intentado hacerlo en inc_rubrique, pero no me imagino un boucle en
donde se muestren sólo las secciones correspondientes al idioma del
artículo. ¿o es más fácil?

Saludos
Pablo Moya

--

Germán Bustos
german_bustos@gmx.net
http://www.atarraya.org/german