[spip-dev] format des dates en arabe

Bonjour,

Je voudrais modifier la présentation des dates en arabe. Actuellement, spip utilise simultanément deux dénominations des mois, l'une en standard, et l'équivalent dans la deuxième dénomination entre parenthèses. Je voudrais me contenter d'une seule dénomination pour les mois. Quel fichier dois-je modifier ?

Cordialement,

GLG

P.S.: SPIP 2.0.3 [13596]

Question subsidiaire : Dans de nombreux pays arabes (hors Maghreb), on utilise des chiffres indiens pour l'affichage des nombres. Est-il possible d'améliorer la localisation des dates en affichant les nombres (jour, année) en chiffres indiens ? Quels fichiers faut-il tripatouiller ? Je peux m'y essayer éventuellement.

Merci.

GLG

Gandalf a écrit :

Gandalf wrote:

possible d'améliorer la localisation des dates en affichant les nombres (jour, année) en chiffres indiens ? Quels fichiers faut-il tripatouiller

On peut surcharger les fichiers de langues pour avoir une présentation alternative. Voir comme cela a été fait ici, par exemple :

Paolo

Gandalf a écrit :

Dans de nombreux pays arabes (hors Maghreb), on utilise des chiffres indiens pour l'affichage des nombres. Est-il possible d'améliorer la localisation des dates en affichant les nombres (jour, année) en chiffres indiens ?

je te propose un filtre à placer dans 'mes_fonctions.php' :
   function arabe_2_hindi($une_date) {
     if (!defined('_ARABE_TO_HINDI')) {
       return $une_date;
     }
     $to_hindi = array('0'=>'٠', '1'=>'١',
                       '2'=>'٢', '3'=>'٣',
                       '4'=>'٤', '5'=>'٥',
                       '6'=>'٦', '7'=>'٧',
                       '8'=>'٨', '9'=>'٩'
                      );
     return strtr($une_date, $to_hindi);
   }

et à appeler ainsi (par exemple) sur la balise date :
   [(#DATE|affdate{'Y-m'}|arabe_2_hindi)]

j'ai placé une vérification par constante.
pour que ce filtre soit actif, la déclarer, dans 'mes_options.php' :
   define('_ARABE_TO_HINDI', 1);

ainsi le jour où tu veux retrouver le format 'arabe' (0,1,2...),
plutôt que d'aller supprimer tous les filtres de tes squelettes,
tu commentes juste la définition de cette constante
dans ton 'mes_options.php'

Merci, cette solution marche bien pour renommer les mois à ma guise. Mais elle ne résout pas le problème des chiffres en hindi, notamment pour les années (pas de tableau associatif dans ce cas). Plutôt un filtre comme proposé par denisb. Merci à tous les deux.

GLG

Paolo a écrit :

Merci pour ce filtre qui fait pile poil ce que je cherche.

Sur un site multilingue, je voudrais appliquer ce filtre de manière conditionnelle : en fonction de la valeur du critère {lang}. Si la langue sélectionnée est l'arabe, il s'applique. Sinon, je garde les dates telles quelles.

Par exemple, comment faire ça sur la boucle ci-dessous du fichier sommaire.html de la dist ? Je peux sans doute créer un sommaire.ar.html appliquant le filtre sur les dates. Qui dit mieux ?

<BOUCLE_articles_recents(ARTICLES) {lang}{par date}{inverse} {pagination 5}>
<li class="hentry">
          [(#LOGO_ARTICLE_RUBRIQUE|#URL_ARTICLE|image_reduire{150,100})]
<h3 class="entry-title"><a href="#URL_ARTICLE" rel="bookmark">#TITRE</a></h3>
<small><abbr class="published"[ title="(#DATE|date_iso)"]>[(#DATE|affdate_jourcourt)]</abbr>[, <:par_auteur:> (#LESAUTEURS)]</small>
[<div class="#EDIT{intro} introduction entry-content">(#INTRODUCTION)</div>]
</li>
</BOUCLE_articles_recents>

Merci de vos lumières.

GLG

Hi

Puisque le sujet a ete aborde j'utilise exactement la meme fonction pour mes dates (sans la variable de mes_options mais cette variable est une tres bonne idee).
Mon probleme est que j'aimerai aussi que les chiffres des textes des articles soit en hindi aussi mais en appliquant une fonction de ce genre sur le texte, les chiffres des leins hypertexte et des notes de bas de page sont aussi convertis, et ca, ca ne va pas. Une idee?

George

Quoting denisb <denisb@laposte.net>:

Hello,

J'ai aussi remarqué que le filtre mangeait les entités HTML comportant des chiffres (typiquement le nom du mois en lettres codé en HTML), ce qui n'est pas top non plus. J'ai contournée en saucissonnant la date avant d'appliquer le filtre.

Pour les chiffres en plein texte, il y a sans doute moyen d'utiliser une expression régulière bien sentie et une autre fonction PHP au lieu de strtr, comme preg_replace pour ne remplacer que les séquences de chiffres entourés de blancs par exemple... Il faut voir si ça couvre tous les cas et si on n'a pas de séparateurs de milliers ou autres particularités typographiques dont il faut tenir compte.

GLG

P.S.: On pourrait en faire une contrib intéressante. :wink:

george@diwanalarab.com a écrit :

Gandalf a écrit :

Sur un site multilingue, je voudrais appliquer ce filtre de manière conditionnelle : en fonction de la valeur du critère {lang}. Si la langue sélectionnée est l'arabe, il s'applique. Sinon, je garde les dates telles quelles.

[(#LANG|==^{ar}|?{' ',''})
   [(#DATE|affdate_jourcourt|arabe_2_hindi)]
]
[(#LANG|==^{ar}|?{'',' '})
   [(#DATE|affdate_jourcourt)]
]

on ne touche pas, bien sûr, à '|date_iso' qui est une norme.

Sur un site multilingue, je voudrais appliquer ce filtre de manière
conditionnelle : en fonction de la valeur du critère {lang}. Si la langue
sélectionnée est l'arabe, il s'applique. Sinon, je garde les dates telles
quelles.

[(#LANG|==^{ar}|?{' ',''})
[(#DATE|affdate_jourcourt|arabe_2_hindi)]
]
[(#LANG|==^{ar}|?{'',' '})
[(#DATE|affdate_jourcourt)]
]

le ^ me paraît bizarre ici :slight_smile:

Mais sinon le filtre |arabe_2_hindi pourrait de lui-même regarder la
langue courante, dans $GLOBALS['spip_lang'] :

function arabe_2_hindi($date) {
  if ($GLOBALS['spip_lang'] !== 'ar') return $date;

  // ici faire les transformations dans le cas de la langue arabe

}

-- Fil

Fil a écrit :

le ^ me paraît bizarre ici :slight_smile:

hé hé
on a déjà cpf_hat, it_fem...
je prévois les variantes ar_mgh, ar_prs, ar_sad...