Hoi Tweakers,
Ik zit met een onverklaarbaar probleem met betrekking tot het vertalen van foutmeldingen van validatie berichten binnen Symfony2.
Ik gebruik een standaard validator om mijn Entity te valideren en indien een of meerdere velden fout zijn presenteer ik deze aan de gebruiker. Er wordt echter nooit een foutmelding vertaald door symfony. In plaats daarvan krijg ik gewoon de identifier die ik gebruik voor het vertalen terug. Ik verwacht dat niet, omdat Symfony bij het ontbreken van een vertaling terug moet vallen op zijn fallback locale, welke gewoon op Engels staat.
Code
Mijn relevante code is als volgt. Ik heb verkorte namespaces gebruikt om te verduidelijken waar alle code zich bevind.
Validatie van Entity:
Locatie: \CMSBundle\Controllers\AjaxPageController.php
Validator bestand
\CMSBundle\Resources\translations\validators.nl.yml
staat tevens op de volgende plaatsen, en op alle plaatsen ook nogmaals onder de naam 'validators.nl_NL.yml' :
\PageBundle\Resources\translations\validators.nl.yml
app\Resources\translations\validators.nl.yml
Validatie bestand voor 'Page' Entity:
Locatie: \PageBundle\Resources\config\validation.yml
Ik heb meerder malen mijn cache gecleared, dus daar ligt het niet aan. Het resultaat van de foutmeldingen (dus hetgeen ik als foutmeldingen ophaal) wordt teruggestuurd bij een AJAX call, geëncodeerd als JSON.
Het gekke is dat mijn normale vertaal meldingen wel gewoon vertaald worden, via \Bundle\Resources\translations\messages.yml, maar de validator messages dus niet.
Wat ik in plaats daarvan zie is bijvoorbeeld:
Dit is vreemd, want Symfony zou terugmoeten vallen op de fallback locale, welke de standaard Engelse berichten zijn.
Wie o wie kan mij helpen?
Ik zit met een onverklaarbaar probleem met betrekking tot het vertalen van foutmeldingen van validatie berichten binnen Symfony2.
Ik gebruik een standaard validator om mijn Entity te valideren en indien een of meerdere velden fout zijn presenteer ik deze aan de gebruiker. Er wordt echter nooit een foutmelding vertaald door symfony. In plaats daarvan krijg ik gewoon de identifier die ik gebruik voor het vertalen terug. Ik verwacht dat niet, omdat Symfony bij het ontbreken van een vertaling terug moet vallen op zijn fallback locale, welke gewoon op Engels staat.
Code
Mijn relevante code is als volgt. Ik heb verkorte namespaces gebruikt om te verduidelijken waar alle code zich bevind.
Validatie van Entity:
Locatie: \CMSBundle\Controllers\AjaxPageController.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $t = $this -> get('translator'); .... $page = new \PageBundle\Entity\Page(); //Page is mijn Entity .... //hier worden de properties van $page geset .... $validator = $this -> get('validator'); $errors = $validator -> validate($page); foreach($errors as $error) { array_push($errors_readable, array('fieldName' => $t -> trans($error -> getPropertyPath()), 'fieldError' => $error -> getMessage())); } |
Validator bestand
\CMSBundle\Resources\translations\validators.nl.yml
staat tevens op de volgende plaatsen, en op alle plaatsen ook nogmaals onder de naam 'validators.nl_NL.yml' :
\PageBundle\Resources\translations\validators.nl.yml
app\Resources\translations\validators.nl.yml
code:
1
2
3
4
5
6
7
| page: title: notblank: Er is geen titel ingevuld. notnull: Er is geen titel ingevuld. content: notblank: Er is geen inhoud opgegeven. notnull: Er is geen inhoud meegestuurd. |
Validatie bestand voor 'Page' Entity:
Locatie: \PageBundle\Resources\config\validation.yml
code:
1
2
3
4
5
6
7
8
9
10
11
12
| \PageBundle\Entity\Page: constraints: - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: ref properties: name: - NotBlank: { message: "page.title.notblank" } - MaxLength: 128 content: - NotBlank: { message: "page.content.notblank" } - NotNull: { message: "page.content.notnull" } menu: - Valid: ~ |
Ik heb meerder malen mijn cache gecleared, dus daar ligt het niet aan. Het resultaat van de foutmeldingen (dus hetgeen ik als foutmeldingen ophaal) wordt teruggestuurd bij een AJAX call, geëncodeerd als JSON.
Het gekke is dat mijn normale vertaal meldingen wel gewoon vertaald worden, via \Bundle\Resources\translations\messages.yml, maar de validator messages dus niet.
Wat ik in plaats daarvan zie is bijvoorbeeld:
code:
1
2
3
| De pagina kon niet worden opgeslagen. Corrigeer onderstaande fouten en probeer het opnieuw: Titel : page.title.notblank content : page.content.notblank |
Dit is vreemd, want Symfony zou terugmoeten vallen op de fallback locale, welke de standaard Engelse berichten zijn.
Wie o wie kan mij helpen?
[ Voor 29% gewijzigd door Struikrover op 11-08-2012 19:53 ]