Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
20.00% |
1 / 5 |
CRAP | |
37.50% |
9 / 24 |
| LocaleTranslation | |
0.00% |
0 / 1 |
|
20.00% |
1 / 5 |
61.85 | |
37.50% |
9 / 24 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
7 / 7 |
|||
| getStringTranslation | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 6 |
|||
| canTranslateEnglish | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 3 |
|||
| reset | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| destruct | |
0.00% |
0 / 1 |
7.46 | |
40.00% |
2 / 5 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\locale\LocaleTranslation. | |
| */ | |
| namespace Drupal\locale; | |
| use Drupal\Core\Cache\CacheBackendInterface; | |
| use Drupal\Core\Config\ConfigFactoryInterface; | |
| use Drupal\Core\DestructableInterface; | |
| use Drupal\Core\Language\LanguageInterface; | |
| use Drupal\Core\Language\LanguageManagerInterface; | |
| use Drupal\Core\Lock\LockBackendInterface; | |
| use Drupal\Core\StringTranslation\Translator\TranslatorInterface; | |
| use Symfony\Component\HttpFoundation\RequestStack; | |
| /** | |
| * String translator using the locale module. | |
| * | |
| * Full featured translation system using locale's string storage and | |
| * database caching. | |
| */ | |
| class LocaleTranslation implements TranslatorInterface, DestructableInterface { | |
| /** | |
| * Storage for strings. | |
| * | |
| * @var \Drupal\locale\StringStorageInterface | |
| */ | |
| protected $storage; | |
| /** | |
| * The configuration factory. | |
| * | |
| * @var \Drupal\Core\Config\ConfigFactoryInterface | |
| */ | |
| protected $configFactory; | |
| /** | |
| * Cached translations. | |
| * | |
| * @var array | |
| * Array of \Drupal\locale\LocaleLookup objects indexed by language code | |
| * and context. | |
| */ | |
| protected $translations = array(); | |
| /** | |
| * The cache backend that should be used. | |
| * | |
| * @var \Drupal\Core\Cache\CacheBackendInterface | |
| */ | |
| protected $cache; | |
| /** | |
| * The lock backend that should be used. | |
| * | |
| * @var \Drupal\Core\Lock\LockBackendInterface | |
| */ | |
| protected $lock; | |
| /** | |
| * The translate english configuration value. | |
| * | |
| * @var bool | |
| */ | |
| protected $translateEnglish; | |
| /** | |
| * The language manager. | |
| * | |
| * @var \Drupal\Core\Language\LanguageManagerInterface | |
| */ | |
| protected $languageManager; | |
| /** | |
| * The request stack. | |
| * | |
| * @var \Symfony\Component\HttpFoundation\RequestStack | |
| */ | |
| protected $requestStack; | |
| /** | |
| * Constructs a translator using a string storage. | |
| * | |
| * @param \Drupal\locale\StringStorageInterface $storage | |
| * Storage to use when looking for new translations. | |
| * @param \Drupal\Core\Cache\CacheBackendInterface $cache | |
| * The cache backend. | |
| * @param \Drupal\Core\Lock\LockBackendInterface $lock | |
| * The lock backend. | |
| * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory | |
| * The config factory. | |
| * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager | |
| * The language manager. | |
| * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack | |
| * The request stack. | |
| */ | |
| public function __construct(StringStorageInterface $storage, CacheBackendInterface $cache, LockBackendInterface $lock, ConfigFactoryInterface $config_factory, LanguageManagerInterface $language_manager, RequestStack $request_stack) { | |
| $this->storage = $storage; | |
| $this->cache = $cache; | |
| $this->lock = $lock; | |
| $this->configFactory = $config_factory; | |
| $this->languageManager = $language_manager; | |
| $this->requestStack = $request_stack; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getStringTranslation($langcode, $string, $context) { | |
| // If the language is not suitable for locale module, just return. | |
| if ($langcode == LanguageInterface::LANGCODE_SYSTEM || ($langcode == 'en' && !$this->canTranslateEnglish())) { | |
| return FALSE; | |
| } | |
| // Strings are cached by langcode, context and roles, using instances of the | |
| // LocaleLookup class to handle string lookup and caching. | |
| if (!isset($this->translations[$langcode][$context])) { | |
| $this->translations[$langcode][$context] = new LocaleLookup($langcode, $context, $this->storage, $this->cache, $this->lock, $this->configFactory, $this->languageManager, $this->requestStack); | |
| } | |
| $translation = $this->translations[$langcode][$context]->get($string); | |
| return $translation === TRUE ? FALSE : $translation; | |
| } | |
| /** | |
| * Gets translate english configuration value. | |
| * | |
| * @return bool | |
| * TRUE if english should be translated, FALSE if not. | |
| */ | |
| protected function canTranslateEnglish() { | |
| if (!isset($this->translateEnglish)) { | |
| $this->translateEnglish = $this->configFactory->get('locale.settings')->get('translate_english'); | |
| } | |
| return $this->translateEnglish; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function reset() { | |
| unset($this->translateEnglish); | |
| $this->translations = array(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function destruct() { | |
| foreach ($this->translations as $context) { | |
| foreach ($context as $lookup) { | |
| if ($lookup instanceof DestructableInterface) { | |
| $lookup->destruct(); | |
| } | |
| } | |
| } | |
| } | |
| } |