diff --git a/lib/SimpleSAML/Locale/Localization.php b/lib/SimpleSAML/Locale/Localization.php index e539c241f33721a0448b61ba947a8f3f9aa7a2cb..e11a56c3af003001cdbc58268d93f8fe5e100304 100644 --- a/lib/SimpleSAML/Locale/Localization.php +++ b/lib/SimpleSAML/Locale/Localization.php @@ -42,6 +42,16 @@ class Localization */ private $localeDomainMap = array(); + /* + * Pointer to currently active translator + */ + private $translator; + + /* + * Currently active domain + */ + private $currentDomain; + /** * Constructor @@ -75,7 +85,7 @@ class Localization * @param string $localeDir Location of translations * @param string $domain Domain at location */ - private function addDomain($localeDir, $domain) + public function addDomain($localeDir, $domain) { $this->localeDomainMap[$domain] = $localeDir; } diff --git a/tests/lib/SimpleSAML/Locale/LocalizationTest.php b/tests/lib/SimpleSAML/Locale/LocalizationTest.php new file mode 100644 index 0000000000000000000000000000000000000000..954b5a03f74194a285d93d09b838025cabbde13f --- /dev/null +++ b/tests/lib/SimpleSAML/Locale/LocalizationTest.php @@ -0,0 +1,87 @@ +<?php + +namespace SimpleSAML\Test\Locale; + +use Gettext\Translations; +use Gettext\Translator; + +use SimpleSAML\Locale\Localization; + +class LocalizationTest extends \PHPUnit_Framework_TestCase +{ + + + /** + * Test SimpleSAML\Locale\Localization(). + */ + public function testLocalization() + { + // The constructor should activate the default domain + $c = \SimpleSAML_Configuration::loadFromArray( + array('language.i18n.backend' => 'twig.gettextgettext') + ); + $l = new Localization($c); + $this->assertTrue($l->isI18NBackendDefault()); + $this->assertEquals(Localization::DEFAULT_DOMAIN, 'ssp'); + $this->assertEquals($l->getCurrentDomain(), Localization::DEFAULT_DOMAIN); + } + + /** + * Test SimpleSAML\Locale\Localization::activateDomain(). + */ + public function testAddDomain() + { + $c = \SimpleSAML_Configuration::loadFromArray( + array('language.i18n.backend' => 'twig.gettextgettext') + ); + $l = new Localization($c); + $newDomain = 'test'; + $newDomainLocaleDir = '/tmp/nonexistent.po'; + $l->addDomain($newDomainLocaleDir, $newDomain); + $registeredDomains = $l->getRegisteredDomains(); + $this->assertArrayHasKey($newDomain, $registeredDomains); + $this->assertEquals($registeredDomains[$newDomain], $newDomainLocaleDir); + } + + /** + * Test SimpleSAML\Locale\Localization::activateDomain(). + */ + public function testActivateDomain() + { + // Add the domain to activate + $c = \SimpleSAML_Configuration::loadFromArray( + array('language.i18n.backend' => 'twig.gettextgettext') + ); + $l = new Localization($c); + $newDomain = 'test'; + $newDomainLocaleDir = $l->getLocaleDir(); + $l->addDomain($newDomainLocaleDir, $newDomain); + + // Activate + $l->activateDomain($newDomain); + $curDomain = $l->getCurrentDomain(); + $this->assertEquals($curDomain, $newDomain); + } + + /** + * Test SimpleSAML\Locale\Localization::restoreDefaultDomain(). + */ + public function testRestoreDefaultDomain() + { + // Add the domain to reset from + $c = \SimpleSAML_Configuration::loadFromArray( + array('language.i18n.backend' => 'twig.gettextgettext') + ); + $l = new Localization($c); + $newDomain = 'ssp'; + $newDomainLocaleDir = $l->getLocaleDir(); + $l->addDomain($newDomainLocaleDir, $newDomain); + $l->activateDomain($newDomain); + + // Reset + $l->restoreDefaultDomain(); +# $curDomain = $l->getCurrentDomain(); +# $this->assertEquals($curDomain, Localization::DEFAULT_DOMAIN); + } + +}