68publishers / translation-bridge
翻译组件集成与 '68publishers bundles' 之间的桥梁。
v2.1.0
2024-08-06 00:35 UTC
Requires
- php: ^8.1
- nette/di: ^3.0.10
- nette/utils: ^3.2.5 || ^4.0
- symfony/translation: ^6.0 || ^7.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- friendsofphp/php-cs-fixer: ^3.13
- mockery/mockery: ^1.5
- nette/bootstrap: ^3.1
- nette/tester: ^2.4.3
- phpstan/phpstan: ^1.9
- phpstan/phpstan-nette: ^1.1
- roave/security-advisories: dev-latest
Suggests
- contributte/translation: For integration with contributte/translation
Conflicts
- contributte/translation: <2.0
README
关于
该软件包包含以下集成到 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