12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- namespace support\bootstrap;
- use Symfony\Component\Translation\Translator;
- use Symfony\Component\Translation\Loader\PhpFileLoader;
- /**
- * Class Translation
- * @package support\bootstrap
- * @method static string trans(?string $id, array $parameters = [], string $domain = null, string $locale = null)
- * @method static void setLocale(string $locale)
- * @method static string getLocale()
- */
- class Translation{
- /**
- * @var array
- */
- protected static $_translator = [];
- public static function start()
- {
- if (!class_exists('\Symfony\Component\Translation\Translator')) {
- return;
- }
- $config = config('translation', []);
- static::$_translator = $translator = new Translator($config['locale']);
- $translator->addLoader('phpfile', new PhpFileLoader());
- $translator->setFallbackLocales($config['fallback_locale']);
- if (!$translations_path = realpath($config['path'])) {
- return;
- }
- foreach (glob($translations_path . DIRECTORY_SEPARATOR . '*' . DIRECTORY_SEPARATOR . '*.php') as $file) {
- $domain = basename($file, '.php');
- $dir_name = pathinfo($file, PATHINFO_DIRNAME);
- $locale = substr(strrchr($dir_name, DIRECTORY_SEPARATOR), 1);
- if ($domain && $locale) {
- $translator->addResource('phpfile', $file, $locale, $domain);
- }
- }
- }
- /**
- * @param $name
- * @param $arguments
- * @return mixed
- */
- public static function __callStatic($name, $arguments)
- {
- return static::$_translator->{$name}(... $arguments);
- }
- }
|