locastic / symfony-translation-bundle
Symfony 翻译包
1.0.0
2023-02-27 10:17 UTC
Requires
- php: >=7.4 || >=8.1
- doctrine/doctrine-bundle: ^2.5
- doctrine/doctrine-migrations-bundle: ^3.2
- pagerfanta/pagerfanta: ^2.6 || ^3.6 || ^4.0
- symfony/console: 5.4.* || 6.*
- symfony/form: 5.4.* || 6.*
- symfony/http-kernel: 5.4.* || 6.*
- symfony/property-access: 5.4.* || 6.*
- symfony/translation: 5.4.* || 6.*
- symfony/yaml: 5.4.* || 6.*
- twig/twig: 2.15.* || ^3.5
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.13
README
Locastic 翻译包
此包为从任何管理面板翻译消息提供基础。您现在可以创建翻译迁移,就像创建数据库迁移一样。它还提供了一些服务来帮助您展示和管理翻译。
安装
composer require locastic/symfony-translation-bundle
配置
imports: - { resource: "@LocasticSyliusTranslationPlugin/Resources/config/config.yaml" } locastic_sylius_translation: default_locale: en # The default locale to use locales: # The list locales supported by your application - en
注意:此包支持区域设置的方式与 Symfony 相同,这意味着 en
将是 en_US
和 en_GB
的后备。
使用方法
创建翻译迁移
<?php declare(strict_types=1); namespace App\TranslationMigrations; use Locastic\SymfonyTranslationBundle\Provider\ThemesProviderInterface; use Locastic\SymfonyTranslationBundle\TranslationMigration\AbstractTranslationMigration; final class Version20230201074700 extends AbstractTranslationMigration { public function up(): void { $this->addTranslation('test.translation', 'messages', 'en', 'This is a test translation', ThemesProviderInterface::NAME_DEFAULT); } }
然后您可以使用以下命令运行迁移
bin/console locastic:symfony-translation:migration:migrate
注意:迁移尚未支持 down。
展示翻译
您需要创建一个控制器来展示您的翻译。以下是一个示例
<?php declare(strict_types=1); namespace App\Controller; use Locastic\SymfonyTranslationBundle\Form\Type\SearchTranslationType; use Locastic\SymfonyTranslationBundle\Model\SearchTranslation; use Locastic\SymfonyTranslationBundle\Utils\SearchTranslationsUtilsInterface; use Symfony\Component\Form\FormFactoryInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Twig\Environment; final class IndexTranslationAction { public function __construct( private SearchTranslationsUtilsInterface $searchTranslationsUtils, private Environment $twig, private FormFactoryInterface $formFactory, ) { } public function __invoke(Request $request): Response { $search = new SearchTranslation(); $searchForm = $this->formFactory->create(SearchTranslationType::class, $search); $searchForm->handleRequest($request); $pagerFanta = $this->searchTranslationsUtils->searchTranslationsFromRequest($request, $search, $searchForm); return new Response($this->twig->render('{yourTemplate}', [ 'translations' => $pagerFanta, 'resources' => $pagerFanta, 'searchForm' => $searchForm->createView(), ])); } }
然后创建一个模板来展示您的翻译。建议通过 AJAX 保存翻译,并使用 SaveTranslationsAction
类来保存它们。