Problème d’affichage avec “&” pour les chiffres en milliers

  • Statut : non résolu
9 sujets de 16 à 24 (sur un total de 24)
  • Auteur
    Messages
  • #900058
    xavier
    Gestionnaire du forum
    Maître WordPress
    2126 contributions

    J’ai posé la question aux développeurs :
    http://make.wordpress.org/polyglots/2013/06/24/number_format-bug/

    En attendant leur réponse, j’ai remplacé la ” ” de la traduction par une simple espace :
    http://svn.automattic.com/wordpress-i18n/fr_FR/branches/3.5/messages/fr_FR.po

    Merci à tous !

    #900059
    Guy
    Participant
    Maître WordPress
    14833 contributions

    @xavier: ta réponse semble orienter vers un bug de WordPress or il s’agit d’un bug de PHP qui dans les versions antérieures à 5.4 ne prenait que le premier caractère de la chaine de séparation des décimales (pas de multi bytes)

    voir : http://www.php.net/manual/en/function.number-format.php (paragraphe “change log”)

    Dans les versions antérieures des fichiers de traduction de WordPress, la chaine était ”  ” on avait donc :

    PHP < 5.4 : une seule espace normale
    PHP >= 5.4 : deux espaces, une normale, une insécable.

    Une solution serait aussi de remplacer l’espace par un point : 1.586 mais bon… je ne suis pas trop partisan de cela, cela entraine des confusions avec la notation anglo-saxonne.

    #900060
    Quentin@endurotribe
    Membre
    Initié WordPress
    10 contributions

    en tous les cas si mon problème peut servir à corriger quelques bug, tant mieux 😉 Merci pour votre aide

    #900061
    luciole135
    Participant
    Maître WordPress
    13753 contributions
    Guy wrote:
    Une solution serait aussi de remplacer l’espace par un point : 1.586 mais bon… je ne suis pas trop partisan de cela, cela entraine des confusions avec la notation anglo-saxonne.

    Ben oui, ce n’est pas la notation française.
    Il faudrait voir si la fonction WordPress ne peut pas réécrite pour tenir compte du bug de php <5.4
    A mon avis, c’est faisable.
    Où la trouve-t-on ?

    #900062
    xavier
    Gestionnaire du forum
    Maître WordPress
    2126 contributions
    Guy wrote:
    @xavier: ta réponse semble orienter vers un bug de WordPress or il s’agit d’un bug de PHP

    Bien sûr, j’ai bien compris cela, mais ma demande consiste justement à demander aux développeurs dans quelle mesure il est possible que le code de WordPress puisse contourner ce bug de PHP.

    #900063
    Guy
    Participant
    Maître WordPress
    14833 contributions

    tout est possible évidement 🙂
    c’est la fonction number_format_i18n qui se trouve dans le fichier wp-includes/functions.php.

    Le principe serait d’appeler la fonction PHP number_format avec un caractère bidon et de remplacer en sortie de la fonction ce caractère par ce qui était défini dans le fichier de traduction.

    en gros, fait en ligne ici et sans test, cela ferait, remplacer:

    number_format[‘decimal_point’], $wp_locale->number_format[‘thousands_sep’] );
    	return apply_filters( ‘number_format_i18n’, $formatted );
    }

    par

    number_format[‘decimal_point’], $dummySep );
            $formatted = str_replace($dummySep, $wp_locale->number_format[‘thousands_sep’], $formatted);
          return apply_filters( ‘number_format_i18n’, $formatted );
    }

    A tester si c’est interessant et aussi tester dans une version anglaise dont je ne connais pas les valeurs par défaut.

    Voir aussi si il est possible de remplacer l’espace normale dans le fichier .po par Alt+ 0160 (avec Windows), à tester 🙂

    #900064
    xavier
    Gestionnaire du forum
    Maître WordPress
    2126 contributions

    Je crains que cela ne puisse pas être aussi facile…

    Pour Alt+0160, j’ai testé, sur ma config cela affiche “1�234″…

    #900065
    luciole135
    Participant
    Maître WordPress
    13753 contributions

    Ce serait parfait si cette solution (ou une autre) est incluse dans la future 3.6 !

    #900066
    Guy
    Participant
    Maître WordPress
    14833 contributions

    J’ai testé quand même par acquis de conscience 🙂 et parce que j’avais un peu de temps.

    Il a fallu ajouter le séparateur décimal dans la fonction:

    number_format[‘decimal_point’], $formatted);
    	$formatted = str_replace($dummySep, $wp_locale->number_format[‘thousands_sep’], $formatted);
        return apply_filters( ‘number_format_i18n’, $formatted );
    }

    Quelques soient les versions de PHP.

    Valeur testée 1589,45

    Cela fonctionne correctement en anglais (virgule pour les milliers, point pour les decimales)

    En français:
    dans le .po:
    – séparateur décimal :  virgule 
    – séparateur milliers:  sep 
    résultat : 1 sep 589 virgule 45

    avec séparateur “normaux” (virgule et  ) 1 589,45

    Pour moi, les tests sont OK. Les valeurs “bidons” doivent être validées pour ne pas interférer avec d’éventuelles formes existantes.

    Le problème par contre subsistera pour les extensions et thèmes appelant directement la fonction PHP sans passer par l’API WordPress et… je ne me faisais pas beaucoup d’illusions sur le ALT 0160 🙂

9 sujets de 16 à 24 (sur un total de 24)
  • Vous devez être connecté pour répondre à ce sujet.