SetLocale podle domény (vlastní config) Kdyby/Translation

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

Zdravím zde na fóru,

měl bych jeden takový problém a nevím jak na to. S kolegou děláme vícejazykový web, ale formou co jazyk to vlastní doména. Tedy 1 zdroj dat a na něj směřované ostatní domény a podle domén se natáhne dodatečný domain.config.neon, který každý má vlastní routy podle jazyku a taky definici defaultu: translation:
default: jazyk dle domény
fallback: cs_CZ, cs Jenže při testu bohužel v panelu mám vždy cs i když jsem třeba na sk doméně atd. V panelu mám jen: Front:Homepage:kontakty cs

LocaleParamResolver NIC (prázdná hodnota)
AcceptHeaderResolver cs

Routy fungují a mám samo: <locale=sk sk<presenter>/<action>

6ádným překlikáním vlaječek ani detekcí header, pouze všichni na dané doméně např.: sk se má nastavit sk a je jedno jakou mají hlavičku jestli rozumíte. V podstatě nic nezmění ani to když na cz nastavím default třeba hu, sk nebo pl – pořád cs.

GEpic
Člen | 566
+
+1
-

Asi bych se spíš spolehl na nastavení persistentního parametru, který by se nastavil podle aktuální domény třeba v BasePresenteru ve startup metodě a poté nastavil translator (pokud ho tedy využíváte)

Používá se to často a tyto věci, co popisuješ nemusíš vůbec řešit.

abstract class BasePresenter extends Nette\Application\UI\Presenter
{
	/** @var string @persistent */
	public $lang = "cz"; // Vychozi hodnota

	public function startup()
	{
		parent::startup();
		$this->lang = /* Zjisteji jazyka dle domeny */;
		$this->translator->setCurrentLang($this->lang); // Pri pouziti LiveTranslatoru
	}
}

Editoval GEpic (11. 5. 2016 23:53)