locastic/symfony-translation-bundle

Symfony 翻译包

1.0.0 2023-02-27 10:17 UTC

This package is auto-updated.

Last update: 2024-09-18 16:41:12 UTC


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_USen_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 类来保存它们。