|
| |
|
5 mai 2004 13:39
|
> [multilinguisme] gerer la traduction du nom des rubriques
je precise ma question :
une solution envisageable est il de nomer ses rubriques <:nomdelarubrique :> et d’ecrrie leur traduction dans un fichier de lang.
mis a part ca, je vois comment connaitre la langue courament utilisée par le site ($GLOBALS["spip_lang"]), mais je n’arrive pas à la modifier ($GLOBALS["spip_lang"]="en" par exemple ne marche pas).
De la doc sur la mise en place concrete du multilinguisme existe elle ? c’est tres mal documenté sur le site spip.net pour l’instant malheureusement.
|
|
mathieu à bidon.ca
15 mai 2004 10:49
|
> [multilinguisme] gerer la traduction du nom des rubriques
Je ne suis pas sûr si je comprends bien le problème, mais sur mon site multilingue je fais la chose suivante, mais c’est un peu tordu :
Quand je lis un article ou une rubrique, j’utilise la boucle suivante :
<BOUCLE_ma_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_mon_secteur(RUBRIQUES){id_secteur}{racine}>
<BOUCLE_mon_menu(RUBRIQUES){id_parent}{par num titre}>
.... éléments du menu ...
</BOUCLE_mon_menu>
</BOUCLE_mon_secteur>
</BOUCLE_ma_rubrique>
Il y a plusieurs problèmes avec cette solution :
- Il n’y a pas toujours un id_rubrique disponible, par exemple, si tu es sur recherche.php3, auteur.php3, etc.
- Si tu es dans article.html, tu dois extraire le
id_rubrique explicitement pour aller chercher le id_secteur, ce qui donne une des 3 boucles imbriquées ci-dessus.
J’ai réglé le premier problème en forçant la présence d’un id_rubrique ou id_article peu importe où je suis dans le site. Cela inclue recherche.php3, et j’ai tout simplement supprimé auteur.php3, mot.php3, etc. par paresse, mais on peut leur passer un id_rubrique eux aussi (idéalement, le secteur, question d’avoir la langue et supprimer le contexte de la rubrique).
Je ne suis pas très fier de cette solution, et si quelqu’un a quelque chose de mieux à proposer, je suis preneur.. mais ça fonctionne :-)
mathieu
|
|
Vincent
1er août 2005 19:49
|
> [multilinguisme] gerer la traduction du nom des rubriques
Bonjour,
je crois que Mathieu n’a pas compris la question. Il s’agit d’éviter d’avoir à dupliquer l’arborescence d’un site pour chaque langue, ce qui est très contraignant.
Certains suggèrent d’utiliser le tag <multi>[lang1].... [lang2]....</multi> directement dans le titre des rubriques, mais je trouve ça aussi assez lourd - et je ne suis pas le seul.
Ne trouvant pas de solution en ligne à ce problème, j’ai finalement essayé qq chose, et ça marche. J’ai aussi cherché désespérément à contribuer cette solution à un endroit un peu logique et facile à trouver, mais je ne comprends pas comment contribuer facilement en tant que français moyen non développeur. C’est un peu triste, mais bon.
Voici donc la solution, qui consiste à créer deux fonctions avant_typo et apres_typo dans mes_fonctions.php3 :
/***************************************************************
* METHODE POUR TRADUIRE LES CHAMPS DES RUBRIQUES
* SANS AVOIR A CREER UNE ARBORESCENCE PAR LANGUE
*
* Date : 28 juillet 2005
* Auteur : Vincent Henderson
*
* On utilise la fonction apres_typo() pour insérer
* la traduction dans le contenu du champ
* qui va s'afficher. Il faut s'arranger pour
* créer l'expression _T('public/spip/ecrire:xxxxxx')
* à ce moment là, où 'xxxxxx' est une entrée des
* fichiers local_xx.php3. On utilisera les champs
* des rubriques pour y mettre les balises de trad.
* On part du principe que l'on voudra parfois
* mettre un titre de rubrique en traduction
* dynamique, et parfois non. Il suffira donc
* de donner comme titre aux rubriques à traduire
* une balise de traduction, mais en utilisant des
* '[:xxxxxx:]' plutôt que des '<:xxxxxx:>', sinon
* ça met le menu rollover de l'espace privé en
* vrac.
* Par exemple, donc, [:toto:].
* Histoire de garder le bénéfice de la
* numérotation qui sert à ordonner ses rubriques
* (on peut donc intituler une rubrique '03. [:toto:]')
* on passe le filtre supprimer_numero. Ceux qui
* voudraient garder le numéro à l'affichage devront
* regarder ça de plus près et trouver la solution
* pour réintégrer le numéro à l'affichage.
* De plus, noter que le classement alphabétique
* ne se fera plus correctement pour les rubriques
* ainsi traduites.
****************************************************************/
// On met la balise de traduction à l'abri avant traitement de la typo par SPIP
function avant_typo($texte) {
$texte = str_replace("[:","CHAMP_A_TRADUIRE",$texte);
$texte = str_replace(":]","CHAMP_A_TRADUIRE",$texte);
return $texte;
}
// Après le traitement typo, on peut
// maintenant mettre dans notre champ ce qu'on veut
function apres_typo($texte) {
// Si on trouve cette balise, on la retire
if(strpos($texte,"CHAMP_A_TRADUIRE") !== false) {
$texte = str_replace("CHAMP_A_TRADUIRE","",$texte);
// On peut toujours mettre un numéro
// de titre avant la balise pour le tri
// mais maintenant il faut le retirer s'il y en a un
$texte = supprimer_numero($texte);
// On rajoute à la main ce qu'il faut pour aller
// chercher la valeur de la traduction
// Pour ceux qui savent faire ça automatiquement
// et contextuellement, ne vous gênez pas
$texte = "public/spip/ecrire:".$texte;
// Et on retourne le terme grâce à la fonction _T()
return _T($texte);
} else {
return $texte;
}
}
Voilà.
Exemples de sites où ce procédé est utilisé :
www.infomotel.com
www.analysefreudienne.com
En espérant que cela pourra aider d’autres à résoudre ce problème.
|
|
Vincent
2 août 2005 09:14
|
> [multilinguisme] gerer la traduction du nom des rubriques
A propos, ça marche pour n’importe quel champ, pas seulement le titre des rubriques.
On pourrait aussi faire un traitement un peu plus détaillé en isolant la partie taguée, et de façon récursive, de façon à pouvoir même utiliser ce tag dans le corps d’un article. Ca permettrait de gérer une terminologie standard, par exemple, ou de faire des raccoucis texte, par le biais des local_xx.php3.
Moi je n’ai pas le temps.
|
|
22 août 2005 11:19
|
> [multilinguisme] gerer la traduction du nom des rubriques
Bon, finalement, je l’ai fait.
Maintenant, ça remplace [:toto :] n’importe où dans n’importe quel champ par la valeur de ’toto’ dans local_xx.php3.
/**************************************************
* METHODE POUR TRADUIRE LES CHAMPS DES RUBRIQUES
* SANS AVOIR A CREER UNE ARBORESCENCE PAR LANGUE
* Date : 02 août 2005
* Auteur : Vincent Henderson
* On utilise la fonction apres_typo() pour insérer
* la traduction dans le contenu du champ
* qui va s'afficher. Il faut s'arranger pour
* créer l'expression _T('public/spip/ecrire:xxxxxx')
* à ce moment là. Pour des raison de cohérence
* on utilisera les champs des rubriques pour y
* mettre les balises. On part du principe que l'on
* voudra parfois mettre un titre de rubrique en
* traduction dynamique, et parfois non. Il suffira donc
* de donner comme titre aux rubriques à traduire la
* balise de traduction que l'on souhaite, mais en
* utilisant des '[' plutôt que des '<', sinon ça met
* le menu rollover de l'espace privé en vrac.
* Par exemple, donc, [:toto:].
* En plus, on garde le bénéfice des autres
* filtres. C'est bien fait SPIP, quand même.
* En revanche, noter que le classement alphabétique
* ne se fera plus correctement pour les rubriques
* ainsi traduites.
**********************************************/
// On met la balise de traduction à l'abri avant traitement de la typo par SPIP
function avant_typo($texte) {
$texte = str_replace("[:","CHAMP_A_TRADUIRE_G",$texte);
$texte = str_replace(":]","CHAMP_A_TRADUIRE_D",$texte);
return $texte;
}
// Après le traitement typo, on peut maintenant mettre dans notre champ ce qu'on veut
function apres_typo($texte) {
// Si on trouve cette balise, on lance la procédure
if(strpos($texte,"CHAMP_A_TRADUIRE") !== false) {
// je n'ai pas vraiment compris comment accéder à ce paramètre par le code.
// je le mets donc à la main. C'est le chemin des entrées de local_xx.php3,
// et ça marche comme ça sur les deux sites où j'ai appliqué ça.
$acces_local = "public/spip/ecrire:";
// Bon, ensuite, on remplace en utilisant preg_replace_callback().
// Noter que les balises ne peuvent
// contenir que des lettres, des chiffres et des '_'.
// On remplace ce qu'il y a entre les balises par l'entrée correspondante
// dans local_xx.php3, ce qui est possible avec la fonction _T().
// preg_replace_callback() ne marche qu'avec PHP 3.0.9 et supérieurs, si j'ai bien lu.
$texte = preg_replace_callback(
'/(CHAMP_A_TRADUIRE_G)([A-Za-z0-9_]*)(CHAMP_A_TRADUIRE_D)/',
create_function(
'$matches',
'$remplacement = _T($acces_local.$matches[2]);
return $remplacement;'),
$texte);
}
// et zou.
return $texte;
}
|
James
22 août 2005 11:56
|
> [multilinguisme] gerer la traduction du nom des rubriques
Y a un endroit super qui s’appelle spip-contrib, vous le saviez ?
|
|
23 août 2005 14:56
|
> [multilinguisme] gerer la traduction du nom des rubriques
Ben oui, mais je n’arrivais pas à trouver le bouton "Contribuer" sur spip-contrib. C’est chose faite.
J’avais posté un lien vers ce thread de forum dans la faq Multilinguisme du spikini de spip contrib, mais je viens seulement de comprendre comment contribuer directement un article à spip-contrib. C’est donc chose faite également.
|
|
24 août 2005 02:55
|
> [multilinguisme] gerer la traduction du nom des rubriques
Voici la contrib publiée sur spip-contrib :
http://www.spip-contrib.net/Multilinguisme-traduire-les-champs
|
|
Thierry Bothorel
2 septembre 2005 00:02
|
> [multilinguisme] gerer la traduction du nom des rubriques
Voir mon ’guide pas à pas’ pour un site personnel
|
|
wafae
17 octobre 2005 00:00
|
[multilinguisme] gerer la traduction du nom des rubriques
salut je veu envouyer message a un amie sur son portable comment
|
|