Konfigurace lokálních odlišností v mezinarodni aplikaci a statické metody

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

Ahoj,
jedna nette aplikace beží na více doménách pro různé země. Napříč zeměma je spousta věcí, který se lišej – měny, api klíče, formát čísel, bankovní účty a mnoho dalšího.

Jak to funguje teď

Teď pro každou zemi existuje jeden config neon soubor s těmahle hodnotama, ten je použit jako parametr služby countryConfig, ktery se pak injectuje, kde je potreba.

countryConfig:
    class: \Config\CountryConfig
    arguments: [%countryConfig%]

Kde to naráží

Problém je ve statických metodách, priklad webalize(), kdy je potreba, aby se v kazde zemi nektere znaky prekladaly trochu odlisne. Otazkou je, jak dostat do staticke metody lokalni konfiguraci pro zemi a obecne tak predejit situacim jako je tahle.

public static function webalize($str)
{
	if (AppEnvironment::getCountry() === 1) {
		$replace = ['a', 'b', 'c'];
		$to = [1, 2, 3];
	} else {
		$replace = ['a', 'b', 'c'];
		$to = [10, 20, 30];
	}

	$replaced = str_replace($replace, $to, $str);

	return $replaced;
}

Jak tohle řešíte vy?

Díky za náměty :)

CZechBoY
Člen | 3608
+
+2
-

Udělal bych si svoji službu na webalize, tý bych předal nějakou konfiguraci země/lokalizace přímo v konstruktoru.

Tuhle službu bych potom samozřejmě používal tam, kde teď používáš webalize. Taky je potřeba nahradit Latte filtr (pokud používáš).

Editoval CZechBoY (17. 8. 2017 10:19)