Oversett velge alternativer i Symfony2 klasse skjemaer

stemmer
27

Jeg bruker en klasse form i Symfony2 Beta3 som følger:

namespace Partners\FrontendBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class ConfigForm extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('no_containers', 'choice', array('choices' => array(1 => 'yes', 0 => 'no')));
        ...

Jeg ønsker å oversette 'ja' og 'nei' alternativer, men jeg vet ikke hvordan de skal bruke oversetteren her.

Publisert på 31/05/2011 klokken 13:03
kilden bruker
På andre språk...                            


4 svar

stemmer
82

Du kan bruke oversettelses ressursene som vanlig. Dette fungerte for meg:

    $builder->add('sex', 'choice', array( 
        'choices'   => array(
            1 => 'profile.show.sex.male', 
            2 => 'profile.show.sex.female',
        ),
        'required' => false,
        'label'     => 'profile.show.sex.label',
        'translation_domain' => 'AcmeUserBundle'
    ));

Og deretter legge oversettelser til ressurser-> oversettelser katalog av din Bundle.

Oppdatere fra @CptSadface:

I symfony 2,7 , ved hjelp av CHOICE_LABEL argument, kan du angi oversettelsen domene som dette:

'choice_label' => 'typeName',
'choice_translation_domain' => 'messages',

Uten å spesifisere domenet, er alternativene ikke oversatt.

Svarte 04/01/2013 kl. 02:00
kilden bruker

stemmer
4

Jeg søkte en stund å finne et svar, men til slutt fant jeg ut hvordan Symfony overs skjema innhold. Den enkleste måten i ditt tilfelle synes å være å bare legge en oversettelse for "ja" og "nei" ved å legge en YAML eller XLIFF oversettelse filen på program (f.eks app / Resources / oversettelser / messages.de.yml) eller bunt . Dette er beskrevet her: http://symfony.com/doc/current/book/translation.html

Problemet - etter min mening - er at du ikke ser ut til å være i stand til å bruke tilpassede oversettings nøkler. Gutta fra FOSUserBundle løse dette (eller lignende) problem med "Form Tema" ( http://symfony.com/doc/2.0/cookbook/form/form_customization.html ). Her er to viktige linjer med kode for å oppnå bruk av skjemaet element id som oversettelsesnøkkel:

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/views/Registration/register_content.html.twig#L1 / https://github.com/FriendsOfSymfony/FOSUserBundle/blob/50ab4d8fdfd324c1e722cb982e685abdc111be0b/Resources/views/ form.html.twig # L4

Ved å legge til et skjema tema du er i stand til å endre stort sett alt av former i malene - dette synes å være den riktige måten å gjøre dette.

(Sorry, jeg måtte dele to av lenkene b / c jeg ikke har nok rykte til å legge inn mer enn to linker. Sad.)

Svarte 18/08/2011 kl. 18:14
kilden bruker

stemmer
3

I symfony 2,7, ved hjelp av CHOICE_LABEL argument, kan du angi oversettelsen domene som dette:

'choice_label' => 'typeName',
'choice_translation_domain' => 'messages',

Uten å spesifisere domenet, er alternativene ikke oversatt.

Svarte 31/07/2015 kl. 09:33
kilden bruker

stemmer
0

CptSadface svar var hva som hjalp meg med å oversette mine foretakets valg.

$builder
    ->add(
        'authorizationRoles',
        null,
        [
            'label' => 'app.user.fields.authorization_roles',
            'multiple' => true,
            'choice_label' => 'name', // entity field storing your translation key
            'choice_translation_domain' => 'messages',
        ]
    );
Svarte 08/09/2015 kl. 11:46
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more