2017 © Pedro PelĂĄez
 

symfony-bundle i18n-form-bundle

Translate your doctrine objects easily with some helps

image

koff/i18n-form-bundle

Translate your doctrine objects easily with some helps

  • Friday, January 12, 2018
  • by sadikoff
  • Repository
  • 2 Watchers
  • 5 Stars
  • 2,263 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 1 Open issues
  • 9 Versions
  • 55 % Grown

The README.md

koff/i18n-form-bundle

Build Status Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality StyleCI Coverage Status, (*1)

This bundle is fork of a2lix/TranslationFormBundle, reorganized and optimized to work with symfony flex, (*2)

Requirements

Installation

composer req koff/i18n-form-bundle

Configuration

Full configuration example, (*3)

# config/packages/i18n_form.yaml
i18n_form:
    locales: [en, fr, es, de]
    required_locales: [fr]
    excluded_fields: ['id', 'locale', 'translatable']
    form_theme: 'bootstrap_3' # you can use 'bootstrap_3' or 'bootstrap_4' form template

Usage

Basic example, (*4)

use Koff\Bundle\I18nFormBundle\Form\Type\TranslationsType;
//...
$builder->add('translations', TranslationsType::class);

Advanced example, (*5)

use Koff\Bundle\I18nFormBundle\Form\Type\TranslationsType;
//...
$builder->add('translations', TranslationsType::class, [
    'locales' => ['en', 'fr', 'es', 'de'],          // [1]
    'default_locale' => ['en']                      // [1]
    'required_locales' => ['fr'],                   // [1]
    'fields' => [                                   // [2]
        'description' => [                          // [3.a]
            'field_type' => 'textarea',             // [4]
            'label' => 'descript.',                 // [4]
            'locale_options' => [                   // [3.b]
                'es' => ['label' => 'descripciĂłn']  // [4]
                'fr' => ['display' => false]        // [4]
            ]
        ]
    ],
    'excluded_fields' => ['details']                // [2]
]);
  • [1] Optionnal. If set, override the default value from config.yml
  • [2] Optionnal. If set, override the default value from config.yml
  • [3] Optionnal. If set, override the auto configuration of fields
  • [3.a] Optionnal. - For a field, applied to all locales
  • [3.b] Optionnal. - For a specific locale of a field
  • [4] Optionnal. Common options of symfony forms (max_length, required, trim, read_only, constraints, ...), which was added 'field_type' and 'display'

Additional

TranslationsFormsType

A different approach for entities which don't share fields untranslated. No strategy used here, only a locale field in your entity., (*6)

use Koff\Bundle\I18nFormBundle\Form\Type\TranslationsFormsType;
//...
$builder->add('translations', TranslationsFormsType::class, [
    'locales' => ['en', 'fr', 'es', 'de'],   // [1]
    'default_locale' => ['en']               // [1]
    'required_locales' => ['fr'],            // [1]
    'form_type' => ProductMediaType::class,  // [2 - Mandatory]
    'form_options' => [                      // [2bis]
        'context' => 'pdf'
    ]
]);
  • [1] Optionnal. If set, override the default value from config.yml
  • [2 - Mandatory]. A real form type that you have to do
  • [2bis] Optionnal. - An array of options that you can set to your form

TranslatedEntityType

Modified version of the native 'entity' symfony2 form type to translate the label in the current locale by reading translations, (*7)

use Koff\Bundle\I18nFormBundle\Form\Type\TranslatedEntityType;
//...
$builder->add('medias', TranslatedEntityType::class, [
    'class' => 'App\Entity\Media',      // [1 - Mandatory]
    'translation_property' => 'text',   // [2 - Mandatory]
    'multiple' => true,                 // [3]
]);
  • [1] Path of the translatable class
  • [2] Property/Method of the translatable class that will be display
  • [3] Common options of the 'entity' symfony2 form type (multiple, ...)

Credits

All credits goes to David ALLIX and his a2lix/TranslationFormBundle, (*8)

License

This package is available under the MIT license., (*9)

The Versions