Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/03/2011, 11h16   #1
Invité de passage
 
Inscription : mars 2010
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2010
Messages : 6
Points : 2
Points : 2
Par défaut Internationalisation des messages d'erreur d'un formulaire

Bonjour à tous,

Cette nouvelle conversation fait référence à ce précédent topic.

Je me permets de soulever à nouveau ce soucis, vu qu'aucune réponse n'y a été apporté
J'ai exactement le même problème à savoir, la non traduction des messages d'erreurs de mes formulaires.

Voici le code de mes validateurs (dans /lib/form/) :
Code :
1
2
3
4
$this->setValidators(array('lastname' => new sfValidatorString( 
array('required'   => true,'max_length' => 20),
array('required'   => "Le nom est requis", 
      'max_length' => "Le nom est trop long (20 caracteres maximum)")),
qui fait référence à mon messages.xml (situé dans %app/i18N/en) :
Code :
1
2
3
4
5
 
<trans-unit>
  <source>Le nom est requis</source>
  <target>The first name is required</target>
</trans-unit>
Le header de ce dernier :
Code :
1
2
3
4
5
6
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN" "http://www.oasis-open.org/committees/xliff/documents/xliff.dtd">
<xliff version="1.0">
<file source-language="fr" target-language="en" datatype="plaintext" original="messages" date="2011-01-05T15:29:34Z" product-name="messages">
<header/>
Et mon %app/config/settings.yml:
Code :
1
2
3
4
5
 
default_culture:   fr
i18n:              on
standard_helpers:  [Partial, Cache, I18N]
charset:           utf-8
Donc, lorsque je change de langue (passage en anglais), les messages d'erreurs restent en français.
La "culture" de l'utilisateur passe bien de fr à en.
Les fichiers sont tous enregistrés en utf-8.

Comment résoudre ce soucis ?

Merci !
BatsaxIV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2011, 18h40   #2
Membre régulier
 
Homme
Développeur Web
Inscription : avril 2009
Messages : 90
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2009
Messages : 90
Points : 70
Points : 70
Essaye ça :

Code :
1
2
 
$this->getContext()->getI18N()->__('message à traduire')
Exemple :

Code :
1
2
3
4
5
 
....
array('required'   => $this->getContext()->getI18N()->__('Le nom est requis'), 
 
....
lidaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 11h17   #3
Invité de passage
 
Inscription : mars 2010
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2010
Messages : 6
Points : 2
Points : 2
Ta réponse m'a aidé à trouver le moyen d'arriver à résoudre ce problème :

Il faut en fait utiliser :

Code :
sfContext::getInstance()->getI18N()->__('à traduire');
dans :

Code :
array('required'   => sfContext::getInstance()->getI18N()->__('le champ est requis');
avec les chaînes à traduire présentes dans messages.xml.
BatsaxIV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 14h06   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
L'ensemble des messages utilisés dans les form (widget et validator) sont formatés pour un usage en i18n par le form lui même.

Faire ainsi revient à faire deux fois le travail.
__________________
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 14h08   #5
Invité de passage
 
Inscription : mars 2010
Messages : 6
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mars 2010
Messages : 6
Points : 2
Points : 2
J'en suis bien conscient, sauf que cela ne fonctionne pas si je fais comme c'est préconisé par symfony.
BatsaxIV est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2011, 14h16   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Il faut un fichier XLIFF pour le form avec un nom spécifique qui doit être celui du form (de tête).

De plus il y a un bogue dans le cc de symfony qui ne supprime pas tout pour ce qui est du i18n. Il convient donc, lors des essais ou lors de changement qui ne passent pas, de supprimer manuellement tout le contenu du dossier cache.
__________________
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 10h14   #7
Membre régulier
 
Homme
Développeur Web
Inscription : avril 2009
Messages : 90
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2009
Messages : 90
Points : 70
Points : 70
Citation:
L'ensemble des messages utilisés dans les form (widget et validator) sont formatés pour un usage en i18n par le form lui même.

Faire ainsi revient à faire deux fois le travail.
Je suis d'accord avec toi Michel. pour moi j'en ai pas besoin de traduire les messages des formulaires.
lidaa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h19.


 
 
 
 
Partenaires

Hébergement Web