Translator podle kuchařky v nette 2.1dev

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

Zdravím, funguje vám prosím translator podle kuchařky v dev verzi nette? Mně to totiž spadne na:

Service 'params': Unknown or deprecated key 'lang' in definition of service.

Odkaz na kuchařku: https://componette.org/search/?…

enumag
Člen | 2118
+
0
-

Ukaž config.neon.

miler
Člen | 75
+
0
-

Smazal jsem z něj DB, v nette 2.0 to funguje.

common:
	parameters:
		lang: en

	php:
		date.timezone: Europe/Prague
		# session.save_path: "%tempDir%/sessions"
		# zlib.output_compression: yes


	nette:
		session:
			autoStart: smart

	services:
		translator:
			create: NetteTranslator\Gettext::getTranslator

			setup:
				- addFile(%appDir%/lang, frontend)
				- NetteTranslator\Panel::register


	factories:

production < common:

development < common:
enumag
Člen | 2118
+
0
-

Možná je problém v tom že v Nette 2.1 se nějak rušily sekce, respektive jsou deprecated. Nevím ale jak je to se zpětnou kompatibilitou. Zkus config upravit dle sandboxu, možná ještě bootstrap.

miler
Člen | 75
+
0
-

Možná jsem mohl doplnit na čem to tu chybu hlásí ($lang = $container->params['lang'];):

	/**
* Constructor
*
* @param array $files
* @param string $lang
*/
public function __construct(Nette\DI\Container $container, array $files = NULL, $lang = NULL)
{
	$this->container = $container;
	$this->session = $storage = $container->session->getSection(static::SESSION_NAMESPACE);
	$this->cache = new Nette\Caching\Cache($container->cacheStorage, static::SESSION_NAMESPACE);

	if (count($files) > 0) {
		foreach($files as $identifier => $dir) {
			$this->addFile($dir, $identifier);
		}
	}

	if(empty($lang))
		$lang = $container->params['lang'];
	$this->lang = $lang;
	if (empty($this->lang))
		throw new Nette\InvalidStateException('Language must be defined.');
	if(!isset($storage->newStrings) || !is_array($storage->newStrings))
		$storage->newStrings = array();
	}
}
enumag
Člen | 2118
+
0
-

Tos tedy mohl. Použij $lang = $container->parameters['lang'];. ;-)

miler
Člen | 75
+
0
-

Hlavně jsem to mohl vyzkoušet sám :-) Pomohlo to, díky. Nicméně je mi to stejně divné když jsem config neměnil a ve 2.0.8 to běží.

enumag
Člen | 2118
+
0
-

Ono už ve 2.0 je Container::$params deprecated, ve 2.1 byl tento deprecated pozůstatek úplně odebrán, toť vše.

miler
Člen | 75
+
0
-

Děkuju moc.