/** * Returns the translators collection instance. It can be used * for getting specific translators based of their name and locale * or to configure some aspect of future translations that are not yet constructed. * * @return \Aura\Intl\TranslatorLocator The translators collection. */ public static function translators() { if (static::$_collection !== null) { return static::$_collection; } static::$_collection = new TranslatorRegistry(new PackageLocator(), new FormatterLocator(['sprintf' => function () { return new SprintfFormatter(); }, 'default' => function () { return new IcuFormatter(); }]), new TranslatorFactory(), static::locale()); if (class_exists('Cake\\Cache\\Cache')) { static::$_collection->setCacher(Cache::engine('_cake_core_')); } return static::$_collection; }
/** * Registers a new package by passing the register loaded function for the * package name. * * @param string $name The name of the translator package * @param string $locale The locale that should be built the package for * @return \Aura\Intl\TranslatorInterface A translator object. */ protected function _getFromLoader($name, $locale) { $loader = $this->_loaders[$name]($name, $locale); $package = $loader; if (!is_callable($loader)) { $loader = function () use($package) { return $package; }; } if ($name !== 'default') { $loader = function () use($loader) { $package = $loader(); if (!$package->getFallback()) { $package->setFallback('default'); } return $package; }; } $this->packages->set($name, $locale, $loader); return parent::get($name, $locale); }
/** * Registers a new package by passing the register loaded function for the * package name. * * @param string $name The name of the translator package * @param string $locale The locale that should be built the package for * @return \Aura\Intl\TranslatorInterface A translator object. */ protected function _getFromLoader($name, $locale) { $loader = $this->_loaders[$name]($name, $locale); $package = $loader; if (!is_callable($loader)) { $loader = function () use($package) { return $package; }; } $loader = $this->setLoaderFallback($name, $loader); $this->packages->set($name, $locale, $loader); return parent::get($name, $locale); }