本文整理匯總了PHP中i18n::include_by_locale方法的典型用法代碼示例。如果您正苦於以下問題:PHP i18n::include_by_locale方法的具體用法?PHP i18n::include_by_locale怎麽用?PHP i18n::include_by_locale使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類i18n
的用法示例。
在下文中一共展示了i18n::include_by_locale方法的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: setUp
function setUp() {
parent::setUp();
$this->alternateBasePath = $this->getCurrentAbsolutePath() . "/_fakewebroot";
$this->alternateBaseSavePath = TEMP_FOLDER . '/i18nTextCollectorTest_webroot';
FileSystem::makeFolder($this->alternateBaseSavePath);
Director::setBaseFolder($this->alternateBasePath);
// Push a template loader running from the fake webroot onto the stack.
$templateManifest = new SS_TemplateManifest($this->alternateBasePath, false, true);
$templateManifest->regenerate(false);
SS_TemplateLoader::instance()->pushManifest($templateManifest);
$this->_oldTheme = SSViewer::current_theme();
SSViewer::set_theme('testtheme1');
$classManifest = new SS_ClassManifest($this->alternateBasePath, true, 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');
}
示例2: enable_custom_translations
protected static function enable_custom_translations()
{
$locale = i18n::get_locale();
$lang = i18n::get_lang_from_locale($locale);
$profileDir = self::getProfileDir();
$translators = array_reverse(i18n::get_translators(), true);
// Make sure to include base translations
i18n::include_by_locale($lang);
foreach ($translators as $priority => $translators) {
foreach ($translators as $name => $translator) {
/* @var $adapter Zend_Translate_Adapter */
$adapter = $translator->getAdapter();
// Load translations from profile
$filename = $adapter->getFilenameForLocale($lang);
$filepath = Director::baseFolder() . "/mysite/lang/" . $profileDir . '/' . $filename;
if ($filename && !file_exists($filepath)) {
continue;
}
$adapter->addTranslation(array('content' => $filepath, 'locale' => $lang));
}
}
}
示例3: setUp
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);
// Replace old template loader with new one with alternate base path
$this->_oldLoader = ThemeResourceLoader::instance();
ThemeResourceLoader::set_instance(new ThemeResourceLoader($this->alternateBasePath));
$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');
}
示例4: register_translator
/**
* @param Zend_Translate Needs to implement {@link i18nTranslateAdapterInterface}
* @param String If left blank will override the default translator.
* @param Int
*/
public static function register_translator($translator, $name, $priority = 10)
{
if (!is_int($priority)) {
throw new InvalidArgumentException("register_translator expects an int priority");
}
// Ensure it's not there. If it is, we're replacing it. It may exist in a different priority.
self::unregister_translator($name);
// Add our new translator
if (!isset(self::$translators[$priority])) {
self::$translators[$priority] = array();
}
self::$translators[$priority][$name] = $translator;
// Resort array, ensuring highest priority comes first
krsort(self::$translators);
i18n::include_by_locale('en_US');
i18n::include_by_locale('en');
}
示例5: _t
/**
* This is the main translator function. Returns the string defined by $class and $entity according to the currently set locale.
*
* @param string $entity Entity that identifies the string. It must be in the form "Namespace.Entity" where Namespace will be usually
* the class name where this string is used and Entity identifies the string inside the namespace.
* @param string $string The original string itself. In a usual call this is a mandatory parameter, but if you are reusing a string which
* has already been "declared" (using another call to this function, with the same class and entity), you can omit it.
* @param string $priority Optional parameter to set a translation priority. If a string is widely used, should have a high priority (PR_HIGH),
* in this way translators will be able to prioritise this strings. If a string is rarely shown, you should use PR_LOW.
* You can use PR_MEDIUM as well. Leaving this field blank will be interpretated as a "normal" priority (less than PR_MEDIUM).
* @param string $context If the string can be difficult to translate by any reason, you can help translators with some more info using this param
*
* @return string The translated string, according to the currently set locale {@link i18n::set_locale()}
*/
static function _t($entity, $string = "", $priority = 40, $context = "") {
global $lang;
// get current locale (either default or user preference)
$locale = i18n::get_locale();
// parse $entity into its parts
$entityParts = explode('.',$entity);
$realEntity = array_pop($entityParts);
$class = implode('.',$entityParts);
// if language table isn't loaded for this locale, get it for each of the modules
if(!isset($lang[$locale])) i18n::include_by_locale($locale);
// fallback to the passed $string if no translation is present
$transEntity = isset($lang[$locale][$class][$realEntity]) ? $lang[$locale][$class][$realEntity] : $string;
// entities can be stored in both array and literal values in the language tables
return (is_array($transEntity) ? $transEntity[0] : $transEntity);
}
示例6: testIncludeByLocaleWithoutFallbackLanguage
public function testIncludeByLocaleWithoutFallbackLanguage()
{
$classManifest = new SS_ClassManifest($this->alternateBasePath, true, true, false);
SS_ClassLoader::instance()->pushManifest($classManifest);
$adapter = i18n::get_translator('core')->getAdapter();
$this->assertTrue($adapter->isAvailable('en'));
$this->assertFalse($adapter->isAvailable('mi'));
// not defined at all
$this->assertFalse($adapter->isAvailable('mi_NZ'));
// defined, but not loaded yet
$this->assertFalse($adapter->isTranslated('i18nTestModule.ENTITY', 'mi'), 'Existing unloaded entity not available before call');
$this->assertFalse($adapter->isTranslated('i18nTestModule.ENTITY', 'mi_NZ'), 'Non-existing unloaded entity not available before call');
i18n::include_by_locale('mi_NZ');
$this->assertFalse($adapter->isAvailable('mi'));
$this->assertTrue($adapter->isAvailable('mi_NZ'));
$this->assertTrue($adapter->isTranslated('i18nTestModule.ENTITY', null, 'mi_NZ'), 'Includes module files');
SS_ClassLoader::instance()->popManifest();
}
示例7: testIncludeByLocale
function testIncludeByLocale() {
// Looping through modules, so we can test the translation autoloading
// Load non-exclusive to retain core class autoloading
$classManifest = new SS_ClassManifest($this->alternateBasePath, true, true, false);
SS_ClassLoader::instance()->pushManifest($classManifest);
$adapter = i18n::get_translator('core')->getAdapter();
$this->assertTrue($adapter->isAvailable('en'));
$this->assertFalse($adapter->isAvailable('de'));
$this->assertFalse($adapter->isTranslated('i18nTestModule.ENTITY', 'de'),
'Existing unloaded entity not available before call'
);
$this->assertFalse($adapter->isTranslated('i18nTestModule.ENTITY', 'af'),
'Non-existing unloaded entity not available before call'
);
i18n::include_by_locale('de');
$this->assertTrue($adapter->isAvailable('en'));
$this->assertTrue($adapter->isAvailable('de'));
$this->assertTrue($adapter->isTranslated('i18nTestModule.ENTITY', null, 'de'), 'Includes module files');
$this->assertTrue($adapter->isTranslated('i18nTestTheme1.LAYOUTTEMPLATE', null, 'de'), 'Includes theme files');
$this->assertTrue($adapter->isTranslated('i18nTestModule.OTHERENTITY', null, 'de'), 'Includes submodule files');
SS_ClassLoader::instance()->popManifest();
}
示例8: i18n_entry_exists
/**
* Determine if an i18n entry is already present in the project
*
* @param string The namespace of the translation
* @param string The entity of the translation
* @return boolean
*/
public static function i18n_entry_exists($namespace, $entity)
{
global $lang;
$loc = i18n::get_locale();
if (!isset($lang[$loc])) {
i18n::include_by_locale($loc);
}
$arr = $lang[$loc];
if (isset($arr[$namespace]) && is_array($arr[$namespace])) {
return isset($arr[$namespace][$entity]);
}
return false;
}
示例9: testCollectMergesWithExisting
public function testCollectMergesWithExisting()
{
$defaultlocal = i18n::default_locale();
$local = i18n::get_locale();
i18n::set_locale('en_US');
i18n::set_default_locale('en_US');
i18n::include_by_locale('en');
i18n::include_by_locale('en_US');
$c = new i18nTextCollector();
$c->setWriter(new i18nTextCollector_Writer_Php());
$c->basePath = $this->alternateBasePath;
$c->baseSavePath = $this->alternateBaseSavePath;
$entitiesByModule = $c->collect(null, true);
$this->assertArrayHasKey('i18nTestModule.ENTITY', $entitiesByModule['i18ntestmodule'], 'Retains existing entities');
$this->assertArrayHasKey('i18nTestModule.NEWENTITY', $entitiesByModule['i18ntestmodule'], 'Adds new entities');
}