68publishers / translation-bridge
Bridges between integrations of translation component and '68publishers bundles.
Package info
github.com/68publishers/translation-bridge
pkg:composer/68publishers/translation-bridge
Requires
- php: ^8.3
- nette/di: ^3.1.3
- nette/utils: ^3.2.10 || ^4.0.1
- symfony/translation: ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- friendsofphp/php-cs-fixer: ^3.70
- mockery/mockery: ^1.6.12
- nette/bootstrap: ^3.1
- nette/tester: ^2.4.3
- phpstan/phpstan: ^2.0
- phpstan/phpstan-nette: ^2.0
- roave/security-advisories: dev-latest
Suggests
- contributte/translation: For integration with contributte/translation
Provides
None
Conflicts
- contributte/translation: <2.0
Replaces
None
This package is auto-updated.
Last update: 2026-10-28 15:09:02 UTC
README
About
The package contains bridges for the following integrations of symfomy/translation into Nette Framework:
Why? Because we want to keep our bundles independent of specific integrations so applications can use any of the integrations mentioned above and will be still compatible with our bundles.
Requirements
- PHP 8.3 or higher
nette/di3.1.3+,nette/utils3.2.10+ or 4.0.1+,symfony/translation6, 7 or 8contributte/translation2.x for the Contributte bridge (2.0.7+ withsymfony/translation8)
Installation
The best way to install 68publishers/translation-bridge is using Composer:
$ composer require 68publishers/translation-bridge
Configuration
extensions: # if you are using contributte/translation: translation_bridge: SixtyEightPublishers\TranslationBridge\Bridge\Nette\DI\ContributteTranslationBridgeExtension
Usage
Translation Resources Provider
Extensions can provide paths with translation resources.
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', ]; } }
Translator Aware
All services that implement an interface TranslatorAwareInterface will automatically receive the Translator instance.
Services that are not regular service definitions (e.g. services with imported: true) are skipped. Call setTranslator() on them before they use the translator.
<?php use SixtyEightPublishers\TranslationBridge\TranslatorAwareTrait; use SixtyEightPublishers\TranslationBridge\TranslatorAwareInterface; final class MyService implements TranslatorAwareInterface { use TranslatorAwareTrait; public function doSomething(): void { $this->translator->translate('....'); } }
Prefixed Translator Factory
The Container contains an autowired service of type PrefixedTranslatorFactoryInterface for creating prefixed translators.
<?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'); } }
Translator Localizer
The Container contains the service of type TranslatorLocalizerInterface for manipulating with the Translator locale.
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'); } }
Translator Locale Resolver
The Translator's locale can be resolved with own resolvers like this:
<?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
Upgrade
From 2.x to 3.0
- The minimal PHP version is 8.3.
- The minimal versions of
nette/diandnette/utilsare3.1.3and3.2.10/4.0.1(older releases cannot be installed on PHP 8.3). - Translator-aware services that are not regular service definitions (e.g.
imported: true) no longer fail the container compilation, they are skipped and must receive the translator throughsetTranslator(). - There are no changes in the API or the configuration.
Contributing
Before opening a pull request, please check your changes using the following commands
$ make init # to pull and start all docker images
$ make cs.check
$ make stan
$ make tests.all