IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

ngettext avec zéro


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut ngettext avec zéro
    Bonjour à tous
    J'ai un petit problème avec la fonction ngettext.
    Si on utilise 1 ou plus, pas de soucis ça marche très bien, mais avec zéro on obtient toujours le mot (ou l'expression) au pluriel:
    Par exemple:

    ngettext("absence","absences",1) = > absence
    ngettext("absence","absences",2) = > absences
    ngettext("absence","absences",0) = > absences

    J'ai lu quelque part que suivant la langue on écrit pour zéro soit au pluriel, soit au singulier.
    Mais même en déclarant la langue, ça ne change pas.

    setlocale(LC_ALL, 'fr_FR');
    ngettext("absence","absences",0) = > absences


    Je n'ai pas encore regardé le problème des termes traduits, mais déjà en français ça ne marche pas :-(

    Est-ce que quelqu'un à une idée ou au moins une piste ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En français l'absence de quelque chose peut être un pluriel ou un singulier selon le contexte.
    Il n'y a donc pas d'automatisme.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Aie !!
    J'ai un peu de mal à écrire sur le site:
    0 absences cette semaine.

    C'est correcte ça ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je ne suis pas professeur de français mais on peut dire zéro absences.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Pour terminer cette discussion, voici la solution que j'ai finalement mis en place, Ce n'est peut-être pas l'idéal, mais ça marche et c'est adaptable à toutes les langues.

    Mise en place d'un fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function plurielGettext($singulier, $pluriel, $nombre){
    	if(empty($nombre)) return _($singulier);
    	else return ngettext($singulier, $pluriel, $nombre);
    }
    La 1ere ligne peut être conditionnée suivant la langue, c'est là l'intérêt.
    Voilà j'ai bien galéré pour trouver une solution qui paraît somme toute très simple.

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Je ne suis pas professeur de français mais on peut dire zéro absences.
    non pas du tout, le français et le portugais brésilien sont les seuls cas où le zéro utilise le singulier :
    http://www.gnu.org/software/gettext/...ral-forms.html

    marochlo, est ce que tu as bien chargé le fichier ".mo" avec les traductions ? montre nous le code complet d'un test qui ne fonctionne pas

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il y mieux que la doc de gettext pour vérifier l'usage du français.
    En français quand on écrit l'absence de quelque chose, il peut s'agir d'un pluriel ou d'un singulier selon le cas.
    exemple : Il y a des bonbons / Il n'y a pas de bonbons

    Dans le cas de "0 absence" ce n'est pas une phrase alors bon il n'y a pas de règle de français.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Bonjour
    Citation Envoyé par mathieu Voir le message
    marochlo, est ce que tu as bien chargé le fichier ".mo" avec les traductions ? montre nous le code complet d'un test qui ne fonctionne pas
    Il n'y a pas de fichier .mo pour le français, c'est la langue de base du site.
    Le ngettext prend bien sans problème le pluriel ou le singulier des expressions (sauf pour 0).
    Le problème ne se trouve pas dans le .mo ou dans l'expression, mais bien dans le principe de fonctionnement de ngettext.
    C'est un problème uniquement pour le français (et je viens d'apprendre que pour le portugais aussi) avec une règle de grammaire particulière.

    Lorsqu'on cherche un peu sur le net, on s’aperçoit que c'est un vaste débat qui dépasse très largement le cadre de l'informatique et encore plus celui du gettext

    Merci pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Effectuer un calcul jusqu’à cellule avec zéro
    Par evo84 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2014, 09h05
  2. Réponses: 1
    Dernier message: 09/09/2011, 20h44
  3. Format avec Zéro devant
    Par fred_bel dans le forum SAS Base
    Réponses: 1
    Dernier message: 04/07/2008, 10h16
  4. Affichage d'un chiffre avec zéros significatifs
    Par Trebor_ dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2008, 09h55
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo