Search by

68publishers / translation-bridge

Jelen

Bridges between integrations of translation component and '68publishers bundles.

Package info

github.com/68publishers/translation-bridge

pkg:composer/68publishers/translation-bridge

Statistics

Installs: 6 575

Dependents: 5

Suggesters: 1

Stars: 0

Open Issues: 0

v3.0.0 2026-10-28 15:08 UTC

README

Checks Coverage Status Total Downloads Latest Version PHP Version

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/di 3.1.3+, nette/utils 3.2.10+ or 4.0.1+, symfony/translation 6, 7 or 8
  • contributte/translation 2.x for the Contributte bridge (2.0.7+ with symfony/translation 8)

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/di and nette/utils are 3.1.3 and 3.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 through setTranslator().
  • 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