定制 a2lix/translation-form-bundle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

a2lix/translation-form-bundle

最新稳定版本:4.0.1

Composer 安装命令:

composer require a2lix/translation-form-bundle

包简介

Translate your doctrine objects easily with some helpers

README 文档

README

Latest Stable Version Latest Unstable Version Total Downloads License Build Status

A small, flexible Symfony bundle that helps you build forms to manage translations for Doctrine entities. It integrates with common translation strategies (Gedmo Personal Translation and Knp DoctrineBehaviors) and provides form types, helpers and Twig components to make working with multilingual data easier.

Key features

  • Easy form handling for translatable entities (Knp & Gedmo strategies).
  • Support for one-record-per-locale patterns via TranslationsFormsType.
  • TranslatedEntityType for entity choice labels using translations.
  • Centralized locale configuration via LocaleProvider.
  • Twig helpers and a LocaleSwitcher component.

Note

Use A2lixAutoFormBundle for automatic form generation and customization.

Tip

A complete demonstration is also available at a2lix/demo.

Screenshot example

A2LiX Translation Form Screenshot

Installation

  • Install the bundle with Composer:
composer require a2lix/translation-form-bundle

Basic configuration

Add a minimal configuration in config/packages/a2lix.yaml:

a2lix_translation_form:
    enabled_locales: [en, fr, de]   # Optional. Default from framework.enabled_locales
    default_locale: en   # Optional. Default from framework.default_locale
    required_locales: [en]   # Optional. Default []
    # templating: "@A2lixTranslationForm/bootstrap_5_layout.html.twig"

If you keep the default setup, the bundle will automatically prepend the chosen form theme (Bootstrap 5 layout by default) into Twig's form_themes.

Compatibility: Gedmo & Knp

  • Gedmo PersonalTranslation: Fully supported. When using Gedmo's personal translation mapping, the bundle renders translation fields as separate translation objects and manages creation and removal of Gedmo translation entities.
  • KnpDoctrineBehaviors: Fully supported. For Knp-style translations (one translation object per locale), fields are bound directly to locale forms.

Usage examples

TranslationsType (Knp or Gedmo)

use A2lix\TranslationFormBundle\Form\Type\TranslationsType;
use Symfony\Component\Form\Extension\Core\Type\FormType;

$builder->add('translations', TranslationsType::class, [
    'translatable_class' => App\Entity\Post::class,
    // Optional:
    // 'locale_labels' => ['en' => 'English', 'fr' => 'Français'],
    // 'theming_granularity' => 'field', // or 'locale_field'
]);

TranslationsFormsType (one-record-per-locale)

use A2lix\TranslationFormBundle\Form\Type\TranslationsFormsType;

$builder->add('medias', TranslationsFormsType::class, [
    'form_type' => App\Form\CompanyMediaType::class,
    'form_options' => [
        'data_class' => App\Entity\CompanyMediaLocale::class,
    ],
]);

TranslatedEntityType (entity choices with translation labels)

use A2lix\TranslationFormBundle\Form\Type\TranslatedEntityType;

$builder->add('category', TranslatedEntityType::class, [
    'class' => App\Entity\Category::class,
    'translation_property' => 'title',
]);

Locale selection widget

use A2lix\TranslationFormBundle\Form\Type\TranslationsLocalesSelectorType;

$builder->add('locales', TranslationsLocalesSelectorType::class, [
    // uses the bundle's LocaleProvider to populate choices
]);

Twig helpers & components

Locale rendering function:

{{ locale_render('en') }}                     {# -> 'English' (localized) #}
{{ locale_render('en', 'locale_upper') }}     {# -> 'EN' #}
{{ locale_render('fr', 'locale_name_title') }}{# -> 'Français' #}

LocaleSwitcher component:

{# Render basic badges #}
<twig:A2lixTranslationForm:LocaleSwitcher render="basic" />

{# Render dropdown #}
<twig:A2lixTranslationForm:LocaleSwitcher render="dropdown" />

LocaleProvider

The bundle centralizes locale configuration through a LocaleProviderInterface. By default, SimpleLocaleProvider is registered and configured from bundle settings. You can replace it with your own service by changing locale_provider in the bundle configuration.

Integration with AutoFormBundle

This bundle integrates cleanly with a2lix/auto-form-bundle. When using AutoType with translatable entities, TranslationsType and TranslationsFormsType can be automatically configured and rendered based on entity metadata and bundle options.

License

This package is available under the MIT license — see the LICENSE file.

统计信息

  • 总下载量: 6.7M
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 339
  • 点击次数: 3
  • 依赖项目数: 57
  • 推荐数: 2

GitHub 信息

  • Stars: 332
  • Watchers: 11
  • Forks: 138
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固