public function testProcessTranslationsEnableKey() { $language = CMTest_TH::createLanguage('test'); $languageKey = CM_Model_LanguageKey::create('Hello World'); $this->assertSame(false, $languageKey->getJavascript()); $site = CM_Site_Abstract::factory(); $render = new CM_Frontend_Render(new CM_Frontend_Environment(null, null, $language)); // Check that key is *not* included in the JS translations list $versionJavascript = CM_Model_Language::getVersionJavascript(); $request = new CM_Http_Request_Get($render->getUrlResource('library-js', "translations/{$versionJavascript}.js")); $response = CM_Http_Response_Resource_Javascript_Library::createFromRequest($request, $site, $this->getServiceManager()); $response->process(); $this->assertNotContains('Hello World', $response->getContent()); // Request JS-enabling of language key via RPC call $body = CM_Params::jsonEncode(['method' => 'CM_Model_Language.requestTranslationJs', 'params' => ['Hello World']]); $request = new CM_Http_Request_Post('/rpc', null, null, $body); $response = CM_Http_Response_RPC::createFromRequest($request, $site, $this->getServiceManager()); $response->process(); CMTest_TH::reinstantiateModel($languageKey); $this->assertSame(true, $languageKey->getJavascript()); // Check that key *is* included in the JS translations list $versionJavascript = CM_Model_Language::getVersionJavascript(); $request = new CM_Http_Request_Get($render->getUrlResource('library-js', "translations/{$versionJavascript}.js")); $response = CM_Http_Response_Resource_Javascript_Library::createFromRequest($request, $site, $this->getServiceManager()); $response->process(); $this->assertContains('Hello World', $response->getContent()); }
public function testGetTreeCaching() { $this->assertNull(CM_Model_LanguageKey::getTree()->findNodeById('.foo')); CM_Model_LanguageKey::create('.foo'); $this->assertNotNull(CM_Model_LanguageKey::getTree()->findNodeById('.foo')); }
<?php if (!CM_Model_LanguageKey::exists('Unable to detect location')) { CM_Model_LanguageKey::create('Unable to detect location'); }
public function testRpcRequestTranslationJs() { $languageKey = CM_Model_LanguageKey::create('foo'); $this->assertFalse($languageKey->getJavascript()); CM_Model_Language::rpc_requestTranslationJs('foo'); $languageKey = CM_Model_LanguageKey::findByName('foo'); $this->assertTrue($languageKey->getJavascript()); }
/** * @param string $phrase * @param array|null $variableNames * @param bool|null $skipCacheLocal * @return string */ public function getTranslation($phrase, array $variableNames = null, $skipCacheLocal = null) { $writeCache = false; $phrase = (string) $phrase; $cacheKey = CM_CacheConst::Language_Translations . '_languageId:' . $this->getId(); $cache = CM_Cache_Local::getInstance(); if ($skipCacheLocal || false === ($translations = $cache->get($cacheKey))) { $translations = $this->getTranslations()->getAssociativeArray(); $writeCache = true; } if (!array_key_exists($phrase, $translations)) { CM_Model_LanguageKey::create($phrase, $variableNames); $translations[$phrase] = ['value' => $phrase, 'variables' => $variableNames]; $writeCache = true; } if ($variableNames !== null) { sort($variableNames); if ($variableNames !== $translations[$phrase]['variables']) { $languageKey = CM_Model_LanguageKey::findByName($phrase); $languageKey->setVariables($variableNames); $translations[$phrase]['variables'] = $variableNames; $writeCache = true; } } if ($writeCache && !$skipCacheLocal) { $cache->set($cacheKey, $translations); } if (!isset($translations[$phrase]['value'])) { if (!$this->getBackup()) { return $phrase; } return $this->getBackup()->getTranslation($phrase, $variableNames, $skipCacheLocal); } return $translations[$phrase]['value']; }
public function testSetName() { $language = CMTest_TH::createLanguage(); $key = CM_Model_LanguageKey::create('foo'); $key->setName('bar'); $this->assertSame('bar', $key->getName()); $this->assertTrue(Functional\some($language->getTranslations()->getItems(), function ($translation) { return $translation['key'] === 'bar'; })); }
<?php if (!CM_Model_LanguageKey::exists('No Internet connection')) { CM_Model_LanguageKey::create('No Internet connection'); }