Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
webda2l authored Jul 2, 2024
1 parent 1e63a32 commit 4ec3165
Showing 1 changed file with 141 additions and 2 deletions.
143 changes: 141 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,153 @@ Translate your doctrine objects easily with some helps
| --- | --- |
| 3.x (master) | [![Build Status][v3_ci_badge]][v3_ci_link] [![Coverage Status][v3_coverage_badge]][v3_coverage_link] |

## Documentation
## Screenshot example

Check out the documentation on the [official website](http://a2lix.fr/bundles/translation-form).
![A2LiX Translation Form Screenshot](/a2lix_translationForm.jpg)

## Support

* `3.x` depends on [AutoFormBundle](https://github.com/a2lix/AutoFormBundle) and has higher requirements (PHP8.1+, Symfony5.4+/6.3+/7.0+). It is compatible with [KnpLabs](https://github.com/KnpLabs/DoctrineBehaviors#translatable), [A2lix](https://github.com/a2lix/I18nDoctrineBundle) and [Prezent](https://github.com/Prezent/doctrine-translatable-bundle)

## Installation

Use composer:

```bash
composer require a2lix/translation-form-bundle
```

After the successful installation, add/check the bundle registration:

```php
// Symfony >= 4.0 in bundles.php
// ...
A2lix\AutoFormBundle\A2lixAutoFormBundle::class => ['all' => true],
A2lix\TranslationFormBundle\A2lixTranslationFormBundle::class => ['all' => true],
// ...

// Symfony >= 3.4 in AppKernel::registerBundles()
$bundles = array(
// ...
new A2lix\AutoFormBundle\A2lixAutoFormBundle(),
new A2lix\TranslationFormBundle\A2lixTranslationFormBundle(),
// ...
```

## Configuration

There is no minimal configuration. Full list of optional parameters:

```yaml
# Symfony >= 4.0. Create a dedicated a2lix.yaml in config/packages with:
# Symfony >= 3.4. Add in your app/config/config.yml:

a2lix_translation_form:
locale_provider: default # [1]
locales: [en, fr, es, de] # [1-a]
default_locale: en # [1-b]
required_locales: [fr] # [1-c]
templating: "@A2lixTranslationForm/bootstrap_4_layout.html.twig" # [2]
```
1. Custom locale provider service id. Default one relies on [1-*] values:
- [1-a] List of translations locales to display
- [1-b] Default locale
- [1-c] List of required translations locales
2. The default template is Twitter Bootstrap compatible. You can redefine your own here
## Usage
### In a classic formType
```php
use A2lix\TranslationFormBundle\Form\Type\TranslationsType;
...
$builder->add('translations', TranslationsType::class);
```

### Advanced examples

```php
use A2lix\TranslationFormBundle\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]
'locale_labels' => [ // [5]
'fr' => 'Français',
'en' => 'English',
],
]);
```

1. Optional. If set, override the default value from config.yml
2. Optional. If set, override the default value from config.yml
3. Optional. If set, override the auto configuration of fields
- [3.a] Optional. - For a field, applied to all locales
- [3.b] Optional. - For a specific locale of a field
4. Optional. Common options of symfony forms (max_length, required, trim, read_only, constraints, ...), which was added 'field_type' and 'display'
5. Optional. Set the labels for the translation tabs. Default to the name of the locale. Translation keys can be used here.

## Additional

### TranslationsFormsType

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

```php
use A2lix\TranslationFormBundle\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. Optional. If set, override the default value from config.yml
2. Mandatory. A real form type that you have to do
- [2bis] Optional. - An array of options that you can set to your form

### TranslatedEntityType

Modified version of the native 'entity' symfony form type to translate the label in the current locale by reading translations

```php
use A2lix\TranslationFormBundle\Form\Type\TranslatedEntityType;
...
$builder->add('medias', TranslatedEntityType::class, [
'class' => 'A2lix\DemoTranslationBundle\Entity\Media', // [1 - Mandatory]
'translation_property' => 'title', // [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' Symfony form type (multiple, ...)

### Example

See [Demo Bundle](https://github.com/a2lix/Demo) for more examples.


## Contribution help

```
Expand Down

0 comments on commit 4ec3165

Please sign in to comment.