[spip-dev] Dates dans plusieurs langues

Bonjour,

  J'ai écrit des filtres qui permettent de choisir la langue quand on
affiche des dates. Ces filtres ont été écrits à partir de fonctions qui
étaient dans les fichiers 'ecrire/inc_lang.php3'
'ecrire/inc_version.php3' et 'ecrire/inc_filtres.php3'.
  Ces filtres fonctionnent comme 'jour', 'nom_jour', 'nom_mois', etc ...
et leurs noms sont 'jour_l', 'nom_jour_l', 'nom_mois_l', etc ... .

Fonctionnement :
   Ils fonctionnent exactement pareil s'il n'y a pas de paramètre. Par
contre, ils peuvent prendre en paramètre le code de la langue et
afficher la date dans cette langue.
Exemples :
[(#DATE|nom_jour_l{en})] -> Nom du jour en anglais
[(#DATE|nom_mois_l{it})] -> Nom du jour en italien
[(#DATE|saison_l{es})] -> Nom de la saison en Espagnol
[(#DATE|saison_l)] -> Nom de la saison dans la langue du site
etc ...

Chez moi, ils fonctionnent avec SPIP 1.6 .

J'ai mis ces fonctions dans 'mes_fonctions.php3' mais je pense qu'elles
peuvent facilement être intégrées à SPIP si elles interessent les
devellopeurs de SPIP.

J'ai joint le fichier à ce mail (il est tout petit).

au revoir,

Sébastien Mirabel

mes_fonctions.php3.gz (1.42 KB)

Bonne idée. On peut sans difficulté ajouter une langue aux filtres de date, plus proprement que ce que tu proposes, en modifiant directement inc_filtres.php3. La question est : est-ce que ça vaut le coup, en sachant que ça risque de faire un code moins facile à maintenir à long terme... ? Je ne sais pas.

-- Fil

Excellente idée.

Ici au Québec, il est très fréquent que nous ayons à développer des sites
bilingues (comme c'est probablement le cas en Belgique, en Suisse, et
ailleurs...).

Comme beaucoup d'autres sites multilingues sous SPIP, nous divisons le
contenu par secteur: secteur 1 = français ; secteur 2 = anglais ; etc...

Dans le cas de sites bilingues, pour maintenir un seul jeu de squelettes,
j'ai l'intention d'utiliser systématiquement pour le texte statique, dans
les squelettes, le code php suivant - évidemment, à l'intérieur de boucles -
rubriques, articles, brèves, etc...:

<?=(#ID_SECTEUR == 2 ? 'Briefs' : 'Br&egrave;ves')?>
<?=(#ID_SECTEUR == 2 ? 'Published on' : 'Publi&eacute; le')?>
[...]
Le contenu anglais se trouvant dans le secteur 2 et le contenu français dans
le secteur 1.

Le problème des dates demeure toutefois entier.

Avec le filtre proposé par Sébastien Mirabel (sous forme
"mes_fonctions.php3" ou intégré à "inc_filtres.php3"), serait-il
envisageable de filtrer ainsi les dates:

[(#DATE|nom_jour_l{<?=(#ID_SECTEUR == 2 ? 'en' : 'fr')?>})]

Ayant comme résultat:
[(#DATE|nom_jour_l{en})] -> Nom du jour en anglais dans le secteur 2
[(#DATE|nom_jour_l{fr})] -> Nom du jour en français dans le secteur 1

OU ENCORE MIEUX

[(#DATE|affdate{<?=(#ID_SECTEUR == 2 ? 'en' : 'fr')?>})]

Est-ce que ça fait du sens en attendant une gestion multilingue de l'espace
public?

André Vincent
http://www.alternatives.ca

PS - Le 24 juin, c'est la fête nationale, ici. Bonne St-Jean Baptiste !!!

[(#DATE|nom_jour_l{<?=(#ID_SECTEUR == 2 ? 'en' : 'fr')?>})]

Non, ça ne marchera pas.

Est-ce que ça fait du sens en attendant une gestion multilingue de l'espace
public?

Pour une gestion des langues secteur par secteur, on peut déjà faire mieux
que ça. Mais ça n'est pas à proprement parler utilisable :wink:

Sur www.spip.net chaque secteur a sa langue propre, et les dates et
formulaires s'y adaptent. L'astuce utilisée est un peu sale (on règle la
langue dans un premier squelette qui ne fait que ça, puis on fait une
inclusion du squelette "normal" ; cf. squelette ci-dessous), mais comme ça
n'avait l'air d'intéresser personne de travailler cette partie, je n'ai pas
poussé plus loin...

Squelette "multilingue" :

<BOUCLE_lang(RUBRIQUES){id_secteur}{id_parent=0}>
<?php
    include_ecrire('inc_lang.php3');
    changer_langue('[(#TITRE*|extraire_langue)]');
?>
</BOUCLE_lang>
<BOUCLE_article(ARTICLES){id_article}>
<BOUCLE_l(BOUCLE_lang)></BOUCLE_l>
<?php $fond = 'article'; ?>
<INCLURE(inc-public.php3){id_article}>
</BOUCLE_article><BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_l2(BOUCLE_lang)></BOUCLE_l2>
<?php $fond = 'rubrique'; ?>
<INCLURE(inc-public.php3){id_rubrique}>
</BOUCLE_rubrique>

-- Fil

Hello,

je reviens sur le squelette sioux de Fil ...

Squelette "multilingue" :
[...]
<BOUCLE_article(ARTICLES){id_article}>
<BOUCLE_l(BOUCLE_lang)></BOUCLE_l>
<?php $fond = 'article'; ?>
<INCLURE(inc-public.php3){id_article}>
</BOUCLE_article><BOUCLE_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_l2(BOUCLE_lang)></BOUCLE_l2>
<?php $fond = 'rubrique'; ?>
<INCLURE(inc-public.php3){id_rubrique}>
</BOUCLE_rubrique>

Plutôt que :

<?php $fond = 'article'; ?>
<INCLURE(inc-public.php3){id_article}>

Pourquoi ne pas avoir fait ça :

<INCLURE(article.php3){id_article}>

Je dois avoir loupé quelque chose ... :wink:

-Nicolas

Plutôt que :
<?php $fond = 'article'; ?>
<INCLURE(inc-public.php3){id_article}>

Pourquoi ne pas avoir fait ça :
<INCLURE(article.php3){id_article}>

Bonne question !

Dans article.php3, il est précisé $fond='langue'... on tournerait en rond,
donc, si on faisait ce que tu dis. J'aurais pu créer un article2.php3 qui
précise $fond='article', mais ça me saoûlait de multiplier les fichiers,
alors j'ai (un peu) hacké.

-- Fil

Bonjour!

Je n'ai pas tout à fait compris comment utiliser le squelette multilingue de
spip.net fournit par Fil (voir plus bas). Je vois que le squelette de langue
se charge d'appeler les " vrais " squelettes, mais je ne vois pas où je dois
placer ce squelette multilingue, comment le nommer (si c'est important) et
comment SPIP saura l'utiliser lorsque j'utilise les balises #URL_RUBRIQUE et
#URL_ARTICLE.

PS : Existe-il un endroit expliquant comment utiliser correctement cette
liste ainsi que les protocoles et autres éléments de politesse particulière
à cette liste? (ex. les questions qui devraient être posées sur le forum et
celles qui ont leur place ici, devons-nous répondre à l'auteur du message
original et inclure l'adresse de la liste en CC?, etc.)

Merci d'avance!

Thierry Gagnon
http://thierry.gagnon.com/

-----Message d'origine-----

Je n'ai pas tout à fait compris comment utiliser le squelette multilingue
de spip.net fournit par Fil (voir plus bas). Je vois que le squelette de
langue se charge d'appeler les " vrais " squelettes, mais je ne vois pas
où je dois placer ce squelette multilingue, comment le nommer (si c'est
important) et comment SPIP saura l'utiliser lorsque j'utilise les balises
#URL_RUBRIQUE et #URL_ARTICLE.

En fait, pour www.spip.net, j'ai mis $fond='langue' dans article.php3 et
dans rubrique.php3 ; le squelette en question est langue.html, et c'est lui
qui appelle les "vrais" squelettes article.html et rubrique.html, après
avoir réglé la langue en fonction du secteur. Mais ça n'est qu'une première
approche.

PS : Existe-il un endroit expliquant comment utiliser correctement cette
liste

Non, il n'y a pas de "charte" très précise, car ça entraîne souvent plus de
discussions sur la charte que ça n'élimine de nuisances. Les formes
habituelles de la "nétiquette" s'appliquent ici comme ailleurs. Ce qu'il
faut essayer de faire, c'est, en gros :
- ne pas poster pour rien ou hors-sujet
- mettre l'adresse de la liste dans le champ To: ou Cc:
- ne pas citer exagérément le message auquel on répond
- ne pas recopier la signature de la liste
- dire des choses intéressantes :wink:

-- Fil

Plutôt que :
<?php $fond = 'article'; ?>
<INCLURE(inc-public.php3){id_article}>

Pourquoi ne pas avoir fait ça :
<INCLURE(article.php3){id_article}>

Bonne question !

Dans article.php3, il est précisé $fond='langue'...

OK, c'est compris ! :wink:

-Nicolas