Nefunguje mi Kdyby/Translation v modelu, konkrétně jej chci použít pro překládání e-mailů. Mám třídu BaseMessage:

namespace App\Model\Emails;

use Nette\Mail\Message;
use Kdyby\Translation;

/**
 * Description of BaseMessage
 *
 * @author Azathoth
 */
class BaseMessage extends Message{
    /** @persistent */
    public $locale;

     /** @var \Kdyby\Translation\Translator */
    protected $translator;

    public function __construct(Translation\Translator $translator) {
        parent::__construct();
        $this->translator = $translator;
    }
}

a třídu ForgottenPasswordMail z ní dědící

namespace App\Model\Emails;

/**
 * Description of ForgottenPasswordMail
 *
 * @author Azathoth
 */
class ForgottenPasswordMail extends BaseMessage{

    public function __construct(Nette\Localization\ITranslator $translator, $email, $password)
    {
        parent::__construct($translator);
        \Tracy\Debugger::fireLog($this->translator);
        $subject = $this->translator->translate('text.e-mail.forgotten_password_subject');
        \Tracy\Debugger::fireLog($subject);

        $this->setFrom('goth@goth.goth')
            ->addTo($email)
            ->setSubject(
                $subject
            )
            ->setBody(
                $this->translator->translate('text.e-mail.forgotten_password_body', NULL, array('password' => $password))
            );
    }

}

a tady je můj config.neon:

php:
        date.timezone: Europe/Prague


nette:
        application:
                errorPresenter: Error
                mapping:
                        *: App\*Module\Presenters\*Presenter

        session:
                expiration: 14 days


services:
        - App\Model\UserHandler
        - App\Model\MailHandler
        - Kdyby\Translation\Translator
        - App\RouterFactory
        router: @App\RouterFactory::createRouter

translation:
    default: en
    whitelist: [en]
    fallback: [en]

extensions:
    translation: Kdyby\Translation\DI\TranslationExtension

a hází mi to Nette\DI\ServiceCreationException, která vyskakuje v compileru, ještě dříve než je zavolán konstruktor


Service '62_Kdyby_Translation_Translator': Multiple services of type Kdyby\Translation\IUserLocaleResolver found: translation.userLocaleResolver.acceptHeader, translation.userLocaleResolver.session, translation.userLocaleResolver

Netuším, co s tím, ocením jakékoli rady a připomínky.

Ahoj, špatně je tenhle řádek

- Kdyby\Translation\Translator

Nic takového vůbec psát nemusíš, všechny potřebné služby registruje extension, tedy tohle

extensions:
    translation: Kdyby\Translation\DI\TranslationExtension

You must first log in to participate in this discussion