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.
This question was answered by Filip Procházka, you can jump directly to the answer
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