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

Symfony PHP Discussion :

i18n et langue par défaut


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 25
    Points
    25
    Par défaut i18n et langue par défaut
    Bonjour,
    J'aimerais connaitre le comportement de symfony dans le cas de la gestion i18n.
    En effet, faut il gerer la langue par défaut ou il y a il un comportement particulier deja geré ?
    Aussi, sur les embedI18n, si on ne traduit pas une langue, on ne peut pas enregistrer le formulaire, existe il une façon simple de contourner ce comportement.

    merci encore pour votre aide.

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Citation Envoyé par guil182 Voir le message
    En effet, faut il gerer la langue par défaut ou il y a il un comportement particulier deja geré ?
    Oui et non...

    Si tu "utilises" le I18N sans rien paramétrer, tu auras un comportement "normal" de ton application, mais aucun gain, sauf peut-être la gestion des pluriels dans la fonction __().

    Par défaut le language est en anglais. A toi, en fonction de ton application, de voir comment le gérer. Tu trouveras sur le net des exemples qui permettent, à l'initialisation d'une session, de récupérer la langue de l'explorateur et de la configurer comme langue.

    Tu trouveras aussi un plugin qui permet de rajouter facilement un système de changement de langue pour l'utilisateur.

    Tu peux aussi stocker cette information dans le profil, sauvegardé, d'un utilisateur, ou encore, dans un cookie s'il ne s'authentifie pas...

    Pour le rendu, si symfony ne trouve pas de traduction pour la langue, il va utiliser le texte entré dans le template comme texte par défaut. C'est ici qu'il faut se poser plusieurs questions. Quel langage utiliser dans le template, qui sera LA langue par défaut pour le site. Je m'explique, ton site utilise du I18N sans configuration le langage est à "en" mais tes templates sont en français, il va donc afficher... du français ! (pas de traduction automatique).

    La principale difficulté de la langue des template est le choix de la langue, vu que tous les fichiers de traduction vont s'appuyer dessus. Imaginons que tu utilises le français comme langue de base des templates. Tu constates un accent circonflexe qui devrait être aigu, tu le corrige et tu es bon pour corriger tous les XLIFF qui font références à ce libellé. C'est valable pour toutes les langues. Une deuxième solution, celle que j'utilise, est d'utiliser un pseudo langage pour les templates, basé sur l'anglais (ex: dans le template je vais avoir X_address_X et dans le fichier de traduction français "Adresse habituel" alors que dans l'anglais j'aurais "Usual address", le X_address_X ne devrait jamais apparaître, mais s'il apparait, il reste suffisamment explicite pour qu'un utilisateur puisse s'en sortir.


    Attention, symfony est fâché avec le cache et l'I18N, il faut parfois vider manuellement (effacement du dossier) le cache pour voir les traductions apparaître.


    Pour la deuxième question, je suis désolé, mais je n'ai aucune idée.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Points : 25
    Points
    25
    Par défaut
    merci pour toutes ces precisions.
    ne t'excuses pas, c'est déjà très gentil à toi.
    Les explications sont valables pour le template, mais qu'en est il des champs basés ?
    Par exemple, je suis en espagnol, et dans ma table j'ai la traduction en francais et en anglais....qu'est il affiché ?

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    La langue par défaut de l'application, qui doit donc toujours être renseignée.

    Du moins, c'est la théorie que j'ai lu, mais je n'ai jamais testé la réalité. Surtout sur une requête groupée.

    En effet, si tu prends un objet avec une traduction partiel, tu vas générer, de base, deux requêtes pour récupérer les informations (une pour l'objet international, une pour la traduction), tu peux, en triturant la requête d'origine tous récupérer, mais je ne sais pas alors comment il réagit pour les parties manquantes, d'autre requêtes ?

    Faudrait décompiller le moteur doctrine.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/11/2008, 12h50
  2. Session pour la langue par défaut
    Par gtraxx dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2008, 00h43
  3. Réponses: 1
    Dernier message: 19/01/2008, 09h17
  4. Langage du site avec langue par défaut
    Par CaZaE dans le forum Langage
    Réponses: 5
    Dernier message: 19/12/2007, 13h21
  5. [Cookies] Langue par défaut sur un site web
    Par Jet-Li dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2005, 20h52

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