Kdyby/translation nejde rozjet

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lazius
Člen | 9
+
0
-

Zdravím,

zdědil jsem jeden webový projekt a potřebuji na něm rozjet kdyby/translation. Z toho co jsem vyčetl tady na fóru a různě na netu i v dokumentaci jsem udělal toto.

  1. pomocí composeru jsem nainstaloval verzi kdyby/translation 0.10.4 jelikož používám verzi nette 2.0
  2. v config.neon to mám takto

    nette:
    extensions:
    translation: Kdyby\Translation\DI\TranslationExtension

    translation:
    default: cs
    fallback: [cs_CZ, cs]

3. v BasePresenter.php jsem přidal toto

<?php
/** @persistent */
public $locale;

/** @var \Kdyby\Translation\Translator @inject */
public $translator;
 ?>

4. v presenteru kde chci použít překlad volám toto $this->translator->translate($message);, kde místo $message použiji přímo nějaký název ze souboru ms.cs_CZ.neon, v tom jsem se ale ještě nepitval, jelikož si myslím, že se to ani správně neimplmenetuje

No a teď ten problém. Hlásí mi to tuto chybu. A hlásí to u každé funkce, kterou volam pomocí $this->translator

Call to a member function translate() on null

Upozorňuji, že nette používám chvíli, tak je možné, že jsem udělal i základní chybu.

Předem děkuji za všechny rady.

David Matějka
Moderator | 6445
+
0
-

@inject anotace jsou podporovane myslim az od 2.1, ve starsi verzi pouzij inject metodu

Lazius
Člen | 9
+
0
-

Zkusil jsem tedy

 /** @var translator */
public $translator;

public function injectTranslator(\Kdyby\Translation\Translator $service)
{
    $this->translator = $service;
}

a pro změnu

Service of type Kdyby\Translation\Translator needed by Method BasePresenter::injectTranslator() not found. Did you register it in configuration file?

jiri.pudil
Nette Blogger | 1032
+
0
-

V Nette 2.0 není ještě ani konfigurační sekce extensions, takže musíš to rozšíření zaregistrovat v bootstrapu (před vytvořením containeru):

Kdyby\Translation\DI\TranslationExtension::register($configurator);