Affichage langue arabe

Bonjour, je travaille actuellement dans un pays de langue arabe (langue nationale) et j'utilise pluxml pour des sites simples de contenu. Ça se passe bien sauf que je dois impérativement afficher les contenus et le site en multilingue et notamment en langue arabe. Le problème se pose sur l'affichage du contenu de droite à gauche (comme le menu) et ce, de manière fiable et propre. J'ai travaillé le code des classes de pluxml (plx.show), notamment pour sur les fonctions liées aux pages statics en langue arabe en ajoutant une balide "<p dir="rtl"> devant l'affichage des textes. Mais ce n'est pas satisfaisant et la structure de pluxml est mal adaptée à cela (ou alors passer par un CSS spécifique ?). A noter que je souhaite avoir aussi d'autres langues possibles pour le site (notamment anglaise).
Ce que je recherche c'est un nouveau plugin qui permettrait de faire cela, couplé avec le plugin multilingue éventuellement (Multilingue v0.7.1).
Y a t-il une réflexion actuellement sur le sujet ? Cela pourrait donner un bon coup de fouet (dans le bon sens du terme) à Pluxml... :-) qui reste intéressant pour les petits sites à contenu.
Je peux aider à la réalisation de ce plugin éventuellement.

Réponses

  • de souvenir PluXml est déjà bien avancé pour faire des site localisé et de même les extensions profitent de ces effets.
    un des bases des sites avec plusieurs langues est d'encoder tous les textes en UTF-8. cela ne te pose pas de problème pour ça ?

    ensuite montre un exemple de problème que tu rencontres, peut-être qu'on trouvera des solutions petits pas par petits pas.
  • En fait mon problème ne réside pas sur l’écriture des textes en langue arabe mais leur affichage sur le site et les autres éléments tels que les menus, etc. Prenons un exemple, ce fameux menu de pluxml (standard), s'affiche normalement pour les langues occidentales, de gauche à droite ; par exemple, "HOME" est affiché à gauche, puis une autre option à sa droite, etc.... En affichage arabe, le menu doit démarrer à droite pour se terminer à gauche (alignement right pour le texte). J'ai commencé à modifier la classe plx.show en y ajoutant la fonction suivante :

    [em] **/
    public function defaultAffiche() {

    if ($this->plxMotor->aConf == "eg")
    return " dir='rtl'";
    }
    [/em]

    Cette fonction permet d'initialiser la directive RTL afin d'aligner à droite un texte qui aurait comme balise <p dir='rtl'>. Par exemple, ligne 1358, ça donne :

    [em]echo "<p ".$this->defaultAffiche().">" . L_STATICCONTENT_INPROCESS.'</p>';[/em]

    Mais le pb est qu'il faille modifier la lib de pluxml et cela ne devient plus standard. Néanmoins, je suis parti sur cette option et donc à chaque fois qu'il y a un affichage, je vais devoir placer cette variable juste après "echo"... pas top, j'en conviens !
    Avez-vous une autre idée ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour
    Et si tu changes l'ordre d'affichage des pages statiques en modifiant la valeur dans la colonne "Ordre" sur la page de gestion des pages statiques.
    Est-ce que ça ne pourrait pas faire l'affaire ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • en ce qui concerne l'ajout de "dir=rtl", si la page entière est en arabe, l'ajout ne suffit pas s'il est un seule fois dans "<html>" ou "<body>" ?
  • Cela va changer en effet l'ordre (c'est déjà ca :-), mais pas le fait que le menu devra commencer à droite de la ligne... (c'est cela le pb). Et il faut aussi qu'en sélectionnant une autre langue (option de l'internaute), le menu puisse se ré afficher de droite à gauche (pour une langue occidentale).

    En fait, il faudrait changer le template/thème/css en cliquant sur la langue désirée...
  • Moi je penserais à quelque chose de comme ça :
    HTML : <p class="menu <? echo $lang;?>"" </p>
    avec lang = fr ou ar
    Côté CSS
    .fr{
      float:left;
    }
    .ar{
      float:right;
    }
    
    Je ne connais pas dir='rtl'
  • StéphaneStéphane Member, Former PluXml Project Manager
    Tu peux faire une feuille de style différente en fonction de la langue (ex: fr-theme.css, ar-theme.css) en ne mettant dedans que les règles css pour formater l'affichage en fonction de la langue. Celles communes à chaque langue tu les laisses dans theme.css

    Au niveau du fichier header.php tu pourrais donc avoir
    <link rel="stylesheet" href="<?php $plxShow->template(); ?>/css/theme.css" media="screen"/>
    <link rel="stylesheet" href="<?php $plxShow->template(); ?>/css/<?php $plxShow->defaultLang() ?>-theme.css" media="screen"/>
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Rubén a écrit:
    Je ne connais pas dir='rtl'

    direction = right to left

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Oui oui avec le contexte je me doutais mais je ne connais pas ses effets sur l'affichage.
  • L'option de Stéphane est la bonne, je pense, d'exécuter un CSS spécifique et de le préciser dans le header. Je vais adopter cela. Je pense qu'un CSS spécifique devrait suffire à tout.
    Merci. :)
  • lebuzz35 a écrit:
    L'option de Stéphane est la bonne, je pense, d'exécuter un CSS spécifique et de le préciser dans le header. Je vais adopter cela. Je pense qu'un CSS spécifique devrait suffire à tout.
    Merci. :)
    Oui, cela devrait suffire. Avec des "float" dans ta css, tu peux avoir des affichages inversés assez facilement pour les menus par exemple.
Connectez-vous ou Inscrivez-vous pour répondre.