68publishers/translation-bridge

翻译组件集成与 '68publishers bundles' 之间的桥梁。

v2.1.0 2024-08-06 00:35 UTC

This package is auto-updated.

Last update: 2024-09-06 01:14:13 UTC


README

Checks Coverage Status Total Downloads Latest Version PHP Version

关于

该软件包包含以下集成到 symfomy/translation 的桥梁,使其与 Nette 框架 兼容

为什么?因为我们希望我们的软件包独立于特定的集成,以便应用程序可以使用上述任何集成,并且仍然与我们的软件包兼容。

安装

安装 68publishers/translation-bridge 的最佳方式是使用 Composer

$ composer require 68publishers/translation-bridge

配置

extensions:
    # if you are using contributte/translation:
    translation_bridge: SixtyEightPublishers\TranslationBridge\Bridge\Nette\DI\ContributteTranslationBridgeExtension

使用方法

翻译资源提供者

扩展可以提供带有翻译资源的路径。

use Nette\DI\CompilerExtension;
use SixtyEightPublishers\TranslationBridge\Bridge\Nette\DI\TranslationProviderInterface;

final class MyBundleExtension extends CompilerExtension implements TranslationProviderInterface
{
    public function getTranslationResources(): array
    {
        return [
            __DIR__ . '/translations',
        ];
    }
}

翻译器感知

所有实现接口 TranslatorAwareInterface 的服务将自动接收翻译器实例。

<?php

use SixtyEightPublishers\TranslationBridge\TranslatorAwareTrait;
use SixtyEightPublishers\TranslationBridge\TranslatorAwareInterface;

final class MyService implements TranslatorAwareInterface
{
    use TranslatorAwareTrait;

    public function doSomething(): void
    {
        $this->translator->translate('....');
    }
}

前缀翻译器工厂

容器包含一个自动注入的服务类型 PrefixedTranslatorFactoryInterface,用于创建前缀翻译器。

<?php

use Nette\Localization\Translator;
use SixtyEightPublishers\TranslationBridge\PrefixedTranslatorFactoryInterface;

final class MyService
{
    private Translator $translator;

    public function __construct(PrefixedTranslatorFactoryInterface $prefixedTranslatorFactory)
    {
        $this->translator = $prefixedTranslatorFactory->create('MyService');
    }
}

翻译器本地化

容器包含用于操作翻译器区域的类型 TranslatorLocalizerInterface 的服务。

use SixtyEightPublishers\TranslationBridge\Localization\TranslatorLocalizerInterface;

final class MyService
{
    public function __construct(
        private readonly TranslatorLocalizerInterface $localizer
    ) {}

    public function doSomething(): void
    {
        # Get the current locale
        $locale = $this->localizer->getLocale();

        # Set the new locale
        $this->localizer->setLocale('cs_CZ');
    }
}

翻译器区域解析器

可以使用以下方式使用自己的解析器解析翻译器的区域

<?php

use Nette\Localization\Translator;
use SixtyEightPublishers\TranslationBridge\Localization\TranslatorLocaleResolverInterface;

final class MyLocaleResolver implements TranslatorLocaleResolverInterface
{
    public function resolveLocale(Translator $translator) : ?string
    {
        # return a valid locale or NULL
    }
}
services:
	- MyLocaleResolver

贡献

在打开拉取请求之前,请使用以下命令检查您的更改

$ make init # to pull and start all docker images

$ make cs.check
$ make stan
$ make tests.all