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 :

[Tableaux] Optimisation


Sujet :

Langage PHP

  1. #21
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Pfiou, je n'aurais jamais cherché aussi complexe (à développer) pour faire des traductions :/
    J'aime bien les fichiers séparés, pour ma part. La doc PHP préconise l'utilisation de l'extension gettext mais je n'en suis pas fan...

  2. #22
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par Kirkis
    La doc PHP préconise l'utilisation de l'extension gettext mais je n'en suis pas fan...
    Pourquoi ? Ton avis m'intéresse

  3. #23
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Citation Envoyé par Mr N.
    Citation Envoyé par Kirkis
    La doc PHP préconise l'utilisation de l'extension gettext mais je n'en suis pas fan...
    Pourquoi ? Ton avis m'intéresse
    Hmmm, simplement parce que si tu modifies le texte dans la langue par défaut (même une simple coquille, une espace ou quoi que ce soit), tu es obligé de modifier de la même manière absolument tous les fichiers de traduction...
    Si tu utilisais simplement des tableaux associatifs, il est peu probable que tu veuilles un jour changer les clefs de tes tableaux !

    [Edit] Pour faire une analogie approximative, gettext() gère plus ou moins le texte d'une page comme des clefs d'un tableau associatif... Si tu modifies le texte, la clef n'est plus la même et gettext() ne trouve pas la traduction.
    Reprenez-moi si je me trompe !

  4. #24
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Oui je suis d'accord, mais l'avantage est que tu peux lire ton code avec le message à traduire en clair, plutot que de passer par des clefs qui ne sont pas forcément pertinente...

  5. #25
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Dépendament de comment tu arrive a avoir une chaine du genre moto_moto_moto_moto il serait plus efficace de placer au départ tous les mots dans un tableau. À moins bien sûr que ce ne soit pas la même chaine à chaque fois que tu appelle ta fonction.

  6. #26
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Citation Envoyé par FrankOVD
    Dépendament de comment tu arrive a avoir une chaine du genre moto_moto_moto_moto il serait plus efficace de placer au départ tous les mots dans un tableau. À moins bien sûr que ce ne soit pas la même chaine à chaque fois que tu appelle ta fonction.
    C'est une remarque intéressante qui va ouvrir un nouveau débat :-)

    Supposons la situation suivante, j'ai un fichier php avec quelques define
    pour associer des clés à des textes en plusieurs langues, par exemple:

    define('TXT_RED', 'Rouge_Red_Rot');
    ...

    Dans ce cas il faut une fonction comme celle qu'on a débatu dans ce post
    pour extraire le mot dans la bonne langue.

    L'autre approche dont tu parles ressemble à ceci, si j'ai bien compris:

    $traductions['TXT_RED'] = array('Rouge', 'Red', 'Rot');
    ...

    Je pense que la recherche dans un tableau est très rapide.
    Par contre je pense que l'initialisation du tableau $traductions
    est plus lente que des define (c'est une supposition, mais ça me
    parait raisonnable)

    Donc, dans le cas d'un fichier de traduction, il arrive souvent que
    tous les mots qui s'y trouvent ne soient pas utilisés par chaque
    requêtes. pourtant ils sont tous parsés, compilés, instanciés à chaque
    requête.

    Quant à l'utilisation de ces mots, elle est souvent unique, par exemple
    les libellés des champs d'un formulaire d'édition, les messages d'erreur,
    les libellés des boutons.

    Je pense qu'il est préférable d'utiliser des define plutot qu'un tableau associatif pour les traductions, vos avis sur la question m'intéressent :-)

  7. #27
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    +1 ePox
    Et aussi n'inclure que les fichiers de langues spécifiques à l'action effectuée. Par exemple, dans le cas d'un e-commerce, pas la peine d'inclure les fichiers de langues concernant la commande si l'utilisateur affiche la description d'un produit.

  8. #28
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Vos remarques sont tout a fait justifiées. J'utilise
    les fichiers séparés de define pour les mots récurrents, du genre
    ok, annuler, envoyer, supprimer etc...

    A l'autre extrême, il y a les messages d'erreurs, ceux-ci sont très rarement
    affichés et ne devrait pas être chargés tant qu'ils ne sont pas nécessaires.

    La technique des fichiers séparés dans ce cas, produit trop de fichiers. Je
    préfère qqch du genre: die(translate('erreur_error_fehler'));

    Donc ma question initiale ne concernait qu'une partie de mes traductions,
    celle des mots qui ne sont pas assez utilisisés pour être centralisés dans des
    fichiers séparés.

Discussions similaires

  1. [Tableaux] Optimisation de boucles
    Par xdoreau dans le forum Langage
    Réponses: 4
    Dernier message: 12/02/2007, 11h28
  2. [Tableaux] Optimiser la représentation d'un tableau
    Par lun4t1k dans le forum Langage
    Réponses: 1
    Dernier message: 04/02/2007, 18h20
  3. [Tableaux] Optimisation de code
    Par Konrad Florczak dans le forum Langage
    Réponses: 6
    Dernier message: 26/10/2006, 16h25
  4. [Tableaux] optimiser le test if
    Par H-bil dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 11h58
  5. [Tableaux] Optimisation de code
    Par allserv dans le forum Langage
    Réponses: 8
    Dernier message: 07/03/2006, 22h44

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