silverstripe-framework/tests/i18n/i18nSSLegacyAdapterTest.php

91 lines
3.0 KiB
PHP

<?php
/**
* @package framework
* @subpackage i18n
*/
class i18nSSLegacyAdapterTest extends SapphireTest {
public function setUp() {
parent::setUp();
$this->alternateBasePath = $this->getCurrentAbsolutePath() . "/_fakewebroot";
$this->alternateBaseSavePath = TEMP_FOLDER . '/i18nTextCollectorTest_webroot';
FileSystem::makeFolder($this->alternateBaseSavePath);
Config::inst()->update('Director', 'alternate_base_folder', $this->alternateBasePath);
// Push a template loader running from the fake webroot onto the stack.
$templateManifest = new SS_TemplateManifest($this->alternateBasePath, null, false, true);
$templateManifest->regenerate(false);
SS_TemplateLoader::instance()->pushManifest($templateManifest);
$this->_oldTheme = Config::inst()->get('SSViewer', 'theme');
Config::inst()->update('SSViewer', 'theme', 'testtheme1');
$classManifest = new SS_ClassManifest($this->alternateBasePath, false, true, false);
SS_ClassLoader::instance()->pushManifest($classManifest);
$this->originalLocale = i18n::get_locale();
// Override default adapter to avoid cached translations between tests.
// Emulates behaviour in i18n::get_translators()
$this->origAdapter = i18n::get_translator('core');
$adapter = new Zend_Translate(array(
'adapter' => 'i18nSSLegacyAdapter',
'locale' => i18n::default_locale(),
'disableNotices' => true,
));
i18n::register_translator($adapter, 'core');
$adapter->removeCache();
i18n::include_by_locale('en');
}
public function tearDown() {
SS_TemplateLoader::instance()->popManifest();
SS_ClassLoader::instance()->popManifest();
i18n::set_locale($this->originalLocale);
Config::inst()->update('Director', 'alternate_base_folder', null);
Config::inst()->update('SSViewer', 'theme', $this->_oldTheme);
i18n::register_translator($this->origAdapter, 'core');
parent::tearDown();
}
public function testTranslate() {
i18n::set_locale('en_US');
$this->assertEquals(
'Legacy translation',
// defined in i18nothermodule/lang/en_US.php
i18n::_t('i18nOtherModule.LEGACY'),
'Finds original strings in PHP module files'
);
$this->assertEquals(
'Legacy translation',
// defined in themes/testtheme1/lang/en_US.php
i18n::_t('i18nOtherModule.LEGACYTHEME'),
'Finds original strings in theme files'
);
i18n::set_locale('de_DE');
$this->assertEquals(
'Legacy translation (de_DE)',
// defined in i18nothermodule/lang/de_DE.php
i18n::_t('i18nOtherModule.LEGACY'),
'Finds translations in PHP module files'
);
$this->assertEquals(
'Legacy translation (de_DE)',
// defined in themes/testtheme1/lang/de_DE.php
i18n::_t('i18nOtherModule.LEGACYTHEME'),
'Finds original strings in theme files'
);
// TODO Implement likely subtags solution
// i18n::set_locale('de');
// $this->assertEquals(
// 'Legacy translation (de_DE)',
// // defined in i18nothermodule/lang/de_DE.php
// i18n::_t('i18nOtherModule.LEGACY'),
// 'Finds translations in PHP module files if only language locale is set'
// );
}
}