/**
  * Configure translator locale.
  */
 public static function configureLocale()
 {
     $localeOption = Validation::option('locale');
     if (!is_array($localeOption)) {
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setLocale($localeOption);
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setFallbackLocales([$localeOption]);
     } else {
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setLocale(array_shift($localeOption));
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         self::$translator->setFallbackLocales($localeOption);
     }
 }
 public function register(Container $app)
 {
     $app['translator'] = function ($app) {
         if (!isset($app['locale'])) {
             throw new \LogicException('You must define \'locale\' parameter or register the LocaleServiceProvider to use the TranslationServiceProvider');
         }
         $translator = new Translator($app['locale'], $app['translator.message_selector'], $app['translator.cache_dir'], $app['debug']);
         $translator->setFallbackLocales($app['locale_fallbacks']);
         $translator->addLoader('array', new ArrayLoader());
         $translator->addLoader('xliff', new XliffFileLoader());
         // Register default resources
         foreach ($app['translator.resources'] as $resource) {
             $translator->addResource($resource[0], $resource[1], $resource[2], $resource[3]);
         }
         foreach ($app['translator.domains'] as $domain => $data) {
             foreach ($data as $locale => $messages) {
                 $translator->addResource('array', $messages, $locale, $domain);
             }
         }
         return $translator;
     };
     $app['translator.listener'] = function ($app) {
         return new TranslatorListener($app['translator'], $app['request_stack']);
     };
     $app['translator.message_selector'] = function () {
         return new MessageSelector();
     };
     $app['translator.resources'] = $app->protect(function ($app) {
         return [];
     });
     $app['translator.domains'] = [];
     $app['locale_fallbacks'] = ['en'];
     $app['translator.cache_dir'] = null;
 }
 public function register()
 {
     $di = $this->getContainer();
     $config = $this->getConfig();
     $di->add($config['message_selector_class']);
     foreach ($config['loaders'] as $name => $class) {
         $di->add($class);
         $di->add('translation.loader.' . $name, $class);
     }
     $di->add('Symfony\\Component\\Translation\\Translator', function () use($di, $config) {
         $selector = $di->get($config['message_selector_class']);
         $translator = new Translator($config['locale'], $selector);
         $translator->setFallbackLocales($config['fallback_locales']);
         foreach ($config['loaders'] as $name => $class) {
             $translator->addLoader($name, $di->get('translation.loader.' . $name));
         }
         foreach ($config['resources'] as $locale => $resources) {
             foreach ($resources as $config) {
                 list($loader, $arg, $domain) = $config + ['array', [], 'messages'];
                 $translator->addResource($loader, $arg, $locale, $domain);
             }
         }
         return $translator;
     }, true);
     $di->add('Laasti\\SymfonyTranslationProvider\\TranslationArray')->withArgument('Symfony\\Component\\Translation\\Translator');
 }
Exemplo n.º 4
0
function configure()
{
    $translator = new Translator("fr_FR", new MessageSelector());
    $translator->setFallbackLocales(array("fr"));
    $translator->addLoader("array", new ArrayLoader());
    $translator->addResource("array", array("Hello World!" => "Bonjour"), "fr");
    Yasc_App::config()->addOption("translator", $translator);
}
 /**
  * @return Translator
  */
 public function create()
 {
     $translator = new Translator(null);
     $translator->addLoader('yml', new YamlFileLoader());
     $translator->setFallbackLocales(['cs']);
     $translator = $this->addResourcesToTranslator($translator);
     return $translator;
 }
 public function runTest()
 {
     $translator = new Translator("fr_FR", new MessageSelector());
     $translator->addLoader("array", new ArrayLoader());
     $translator->addResource("array", array("Hello World!" => "Bonjour", "Symfony is great" => "Symfony est le meuilleur", "Hello %name%" => "Bonjour %name%", "apple.choice" => "Une pomme | %count% pommes"), "fr_FR");
     $translator->setFallbackLocales(array("en"));
     (new TranslationValidator($translator))->validate();
 }
Exemplo n.º 7
0
 public function testTransChoiceFallbackIsLogged()
 {
     $logger = $this->getMock('Psr\\Log\\LoggerInterface');
     $logger->expects($this->once())->method('debug')->with('Translation use fallback catalogue.');
     $translator = new Translator('ar');
     $translator->setFallbackLocales(array('en'));
     $translator->addLoader('array', new ArrayLoader());
     $translator->addResource('array', array('some_message2' => 'one thing|%count% things'), 'en');
     $loggableTranslator = new LoggingTranslator($translator, $logger);
     $loggableTranslator->transChoice('some_message2', 10, array('%count%' => 10));
 }
 public function register(Application $app)
 {
     $config = $this->config;
     //Expose some settings
     $app['default_locale'] = $config['default_locale'];
     $app['fallback_locale'] = $config['fallback_locale'];
     $app['locales'] = $config['locales'];
     $app['devture_localization.url_generator'] = $app->share(function ($app) {
         return new Routing\LocaleAwareUrlGenerator($app, $app['routes'], $app['request_context']);
     });
     if (!isset($app['url_generator'])) {
         //Technically, we don't need either of those.
         //But registering as `url_generator` directly will fail if one of them overwrites it later.
         //Most projects will include one of them anyway, so this ordering requirement shouldn't be a big deal.
         throw new \LogicException('url_generator missing. Register FrameworkBundle (or the UrlGeneratorServiceProvider) before LocalizationBundle.');
     }
     //Replace the url_generator with our own, to enable transparent locale-aware URL generation
     $app->extend('url_generator', function ($current) use($app) {
         return $app['devture_localization.url_generator'];
     });
     $app['devture_localization.locale_listener'] = $app->share(function ($app) use($config) {
         return new EventListener\LocaleListener($config['default_locale'], array_keys($config['locales']), $app['devture_localization.translator']);
     });
     $app['devture_localization.translator'] = $app->share(function ($app) use($config) {
         $translator = new Translator('en', $app['devture_localization.translator.message_selector'], $config['cache_path'], $config['auto_reload']);
         if (isset($app['fallback_locale'])) {
             $translator->setFallbackLocales(array($app['fallback_locale']));
         }
         $translator->addLoader('json', $app['devture_localization.translator.loader']);
         return $translator;
     });
     //Alias it, so services that rely on $app['translator'] (like devture/form's FormExtension) can work.
     //Silex\Provider\TranslationServiceProvider also exports $app['translator'], so this makes us compatible.
     $app['translator'] = $app->share(function ($app) {
         return $app['devture_localization.translator'];
     });
     $app['devture_localization.translator.message_selector'] = $app->share(function () {
         return new MessageSelector();
     });
     $app['devture_localization.translator.resource_loader'] = $app->share(function ($app) {
         return new Translation\ResourceLoader($app['devture_localization.translator'], 'json');
     });
     $app['devture_localization.translator.loader'] = $app->share(function () {
         return new Translation\JsonFileLoader();
     });
     $app['devture_localization.twig.translation_extension'] = $app->share(function ($app) {
         return new TranslationExtension($app['devture_localization.translator']);
     });
     $app['devture_localization.twig.locale_helper_extension'] = $app->share(function ($app) use($config) {
         return new Twig\LocaleHelperExtension($app, $config['locales']);
     });
 }
 /**
  * @param Request $request
  * @return Translator
  */
 public static function createTranslator(Request $request)
 {
     $translator = new Translator($request->getSession()->get('locale'), new MessageSelector());
     $translator->setFallbackLocales(['ru']);
     $translator->addLoader('array', new ArrayLoader());
     $translator->addResource('array', ['username' => 'Имя пользователя', 'date_of_birth' => 'Дата рождения', 'photo' => 'Фото'], 'ru', 'crud_view');
     $translator->addResource('array', ['username' => 'Username', 'date_of_birth' => 'Date of birth', 'photo' => 'Photo'], 'en', 'crud_view');
     $translator->addResource('array', ['hello_user' => 'Привет, %username%!'], 'ru', 'auth');
     $translator->addResource('array', ['hello_user' => 'Hello, %username%!'], 'en', 'auth');
     $translator->addResource('array', ['plural' => '%count% яблоко|%count% яблока|%count% яблок'], 'ru');
     $translator->addResource('array', ['plural' => 'One apple|%count% apples'], 'en');
     return $translator;
 }
Exemplo n.º 10
0
 public function register(Container $app)
 {
     $app['translator'] = function ($app) {
         if (!isset($app['locale'])) {
             throw new \LogicException('You must define \'locale\' parameter or register the LocaleServiceProvider to use the TranslationServiceProvider');
         }
         $translator = new Translator($app['locale'], $app['translator.message_selector'], $app['translator.cache_dir'], $app['debug']);
         $translator->setFallbackLocales($app['locale_fallbacks']);
         $translator->addLoader('array', new ArrayLoader());
         $translator->addLoader('xliff', new XliffFileLoader());
         if (isset($app['validator'])) {
             $r = new \ReflectionClass('Symfony\\Component\\Validator\\Validation');
             $file = dirname($r->getFilename()) . '/Resources/translations/validators.' . $app['locale'] . '.xlf';
             if (file_exists($file)) {
                 $translator->addResource('xliff', $file, $app['locale'], 'validators');
             }
         }
         if (isset($app['form.factory'])) {
             $r = new \ReflectionClass('Symfony\\Component\\Form\\Form');
             $file = dirname($r->getFilename()) . '/Resources/translations/validators.' . $app['locale'] . '.xlf';
             if (file_exists($file)) {
                 $translator->addResource('xliff', $file, $app['locale'], 'validators');
             }
         }
         // Register default resources
         foreach ($app['translator.resources'] as $resource) {
             $translator->addResource($resource[0], $resource[1], $resource[2], $resource[3]);
         }
         foreach ($app['translator.domains'] as $domain => $data) {
             foreach ($data as $locale => $messages) {
                 $translator->addResource('array', $messages, $locale, $domain);
             }
         }
         return $translator;
     };
     if (isset($app['request_stack'])) {
         $app['translator.listener'] = function ($app) {
             return new TranslatorListener($app['translator'], $app['request_stack']);
         };
     }
     $app['translator.message_selector'] = function () {
         return new MessageSelector();
     };
     $app['translator.resources'] = $app->protect(function ($app) {
         return array();
     });
     $app['translator.domains'] = array();
     $app['locale_fallbacks'] = array('en');
     $app['translator.cache_dir'] = null;
 }
Exemplo n.º 11
0
 /**
  * {@inheritdoc}
  */
 public function register()
 {
     $this->app->singleton('Flarum\\Locale\\LocaleManager');
     $this->app->alias('Flarum\\Locale\\LocaleManager', 'flarum.localeManager');
     $this->app->singleton('translator', function () {
         $defaultLocale = $this->app->make('flarum.settings')->get('default_locale');
         $translator = new Translator($defaultLocale, new MessageSelector());
         $translator->setFallbackLocales([$defaultLocale]);
         $translator->addLoader('yaml', new YamlFileLoader());
         return $translator;
     });
     $this->app->alias('translator', 'Symfony\\Component\\Translation\\Translator');
     $this->app->alias('translator', 'Symfony\\Component\\Translation\\TranslatorInterface');
 }
Exemplo n.º 12
0
 protected function setUp(array $install = array(), $language = 'en')
 {
     $translation = new Translator('en_EN', new MessageSelector());
     $translation->setFallbackLocales(array('en'));
     $translation->addLoader('yaml', new YamlFileLoader());
     $translation->addResource('yaml', __DIR__ . '/../../../../../locales/en.yml', 'en');
     $translation->addResource('yaml', __DIR__ . '/../../../../../locales/de.yml', 'de');
     $command = new InstallCommand();
     $command->setInstalls($install)->setTranslator($translation);
     $console = new Application();
     $console->add($command);
     $command = $console->find('api:install');
     $this->command = new CommandTester($command);
     $this->command->execute(array('command' => $command->getName(), 'language' => $language));
 }
Exemplo n.º 13
0
 protected function setUp($dir = '', array $options = array())
 {
     $translation = new Translator('en_EN', new MessageSelector());
     $translation->setFallbackLocales(array('en'));
     $translation->addLoader('yaml', new YamlFileLoader());
     $translation->addResource('yaml', __DIR__ . '/../../../../../locales/en.yml', 'en');
     $translation->addResource('yaml', __DIR__ . '/../../../../../locales/de.yml', 'de');
     $command = new ValidateCommand();
     $command->setConfigDir($dir)->setTranslator($translation);
     $console = new Application();
     $console->add($command);
     $command = $console->find('api:validate');
     $this->command = new CommandTester($command);
     $this->command->execute(array_merge(array('command' => $command->getName()), $options));
 }
Exemplo n.º 14
0
 public function __construct()
 {
     $translator_config = (require APPDIR . 'config/translation.php');
     $this->config = $translator_config;
     $translator = new TranslationProvider($translator_config['default'], new MessageSelector());
     $translator->setFallbackLocales(array($translator_config['default']));
     $translator->addLoader('array', new PhpFileLoader());
     $this->translator = $translator;
     $app = App::instance();
     $app_locale = $app->cookies()->get('app_locale');
     if ($app_locale) {
         if (in_array($app_locale, $this->config['locales'])) {
             $this->setLocale($app_locale);
         } else {
             $this->setLocale($translator_config['default']);
         }
     } else {
         $this->setLocale($translator_config['default']);
     }
 }
Exemplo n.º 15
0
 protected static function createInstance()
 {
     if (config('app.debug') && !config('trans.cache_on_debug')) {
         \Cache::forget('po_cache');
     }
     return \Cache::rememberForever('po_cache', function () {
         $basePath = config('trans.translations_path');
         $locales = config('trans.supported_locales');
         $translator = new SymfonyTranslator(config('app.locale'));
         $translator->addLoader('po', new PoFileLoader());
         $translator->setFallbackLocales([config('app.locale')]);
         foreach ($locales as $locale) {
             $path = base_path($basePath . DIRECTORY_SEPARATOR . $locale . DIRECTORY_SEPARATOR . 'LC_MESSAGES');
             $file = $path . DIRECTORY_SEPARATOR . 'messages.po';
             if (file_exists($file)) {
                 $translator->addResource('po', $file, $locale);
                 $translator->getCatalogue($locale);
             }
         }
         return $translator;
     });
 }
Exemplo n.º 16
0
 public function __construct($request)
 {
     $host = explode('.', $request->getHost());
     $sousDomaines = array_slice($host, 0, count($host) - 2);
     $sousDomaine = "fr";
     if (count($sousDomaines) > 0) {
         $sousDomaine = end($sousDomaines);
     }
     $translator = new Translator($sousDomaine, new MessageSelector());
     $translator->addLoader('yaml', new YamlFileLoader());
     $translator->setFallbackLocales(array('fr'));
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/common.fr.yml', 'fr', 'common');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/common.' . $sousDomaine . '.yml', $sousDomaine, 'common');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/menu.fr.yml', 'fr', 'menu');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/menu.' . $sousDomaine . '.yml', $sousDomaine, 'menu');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/map.fr.yml', 'fr', 'map');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/map.' . $sousDomaine . '.yml', $sousDomaine, 'map');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/grade.fr.yml', 'fr', 'grade');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/grade.' . $sousDomaine . '.yml', $sousDomaine, 'grade');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/item_attr.fr.yml', 'fr', 'itemAttr');
     $translator->addResource('yaml', BASE_ROOT . '/core/translations/item_attr.' . $sousDomaine . '.yml', $sousDomaine, 'itemAttr');
     $this->objInstance = $translator;
 }
 public function register(Application $app)
 {
     $app['translator'] = $app->share(function ($app) {
         $translator = new Translator($app['locale'], $app['translator.message_selector']);
         // Handle deprecated 'locale_fallback'
         if (isset($app['locale_fallback'])) {
             $app['locale_fallbacks'] = (array) $app['locale_fallback'];
         }
         $translator->setFallbackLocales($app['locale_fallbacks']);
         $translator->addLoader('array', new ArrayLoader());
         $translator->addLoader('xliff', new XliffFileLoader());
         foreach ($app['translator.domains'] as $domain => $data) {
             foreach ($data as $locale => $messages) {
                 $translator->addResource('array', $messages, $locale, $domain);
             }
         }
         return $translator;
     });
     $app['translator.message_selector'] = $app->share(function () {
         return new MessageSelector();
     });
     $app['translator.domains'] = array();
     $app['locale_fallbacks'] = array('en');
 }
Exemplo n.º 18
0
 public function testPrimaryAndFallbackCataloguesContainTheSameMessagesRegardlessOfCaching()
 {
     /*
      * As a safeguard against potential BC breaks, make sure that primary and fallback
      * catalogues (reachable via getFallbackCatalogue()) always contain the full set of
      * messages provided by the loader. This must also be the case when these catalogues
      * are (internally) read from a cache.
      *
      * Optimizations inside the translator must not change this behaviour.
      */
     /*
      * Create a translator that loads two catalogues for two different locales.
      * The catalogues contain distinct sets of messages.
      */
     $translator = new Translator('a', null, $this->tmpDir);
     $translator->setFallbackLocales(array('b'));
     $translator->addLoader('array', new ArrayLoader());
     $translator->addResource('array', array('foo' => 'foo (a)'), 'a');
     $translator->addResource('array', array('foo' => 'foo (b)'), 'b');
     $translator->addResource('array', array('bar' => 'bar (b)'), 'b');
     $catalogue = $translator->getCatalogue('a');
     $this->assertFalse($catalogue->defines('bar'));
     // Sure, the "a" catalogue does not contain that message.
     $fallback = $catalogue->getFallbackCatalogue();
     $this->assertTrue($fallback->defines('foo'));
     // "foo" is present in "a" and "b"
     /*
      * Now, repeat the same test.
      * Behind the scenes, the cache is used. But that should not matter, right?
      */
     $translator = new Translator('a', null, $this->tmpDir);
     $translator->setFallbackLocales(array('b'));
     $translator->addLoader('array', new ArrayLoader());
     $translator->addResource('array', array('foo' => 'foo (a)'), 'a');
     $translator->addResource('array', array('foo' => 'foo (b)'), 'b');
     $translator->addResource('array', array('bar' => 'bar (b)'), 'b');
     $catalogue = $translator->getCatalogue('a');
     $this->assertFalse($catalogue->defines('bar'));
     $fallback = $catalogue->getFallbackCatalogue();
     $this->assertTrue($fallback->defines('foo'));
 }
Exemplo n.º 19
0
<?php

use Tikomatic\Registry;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;
use Symfony\Component\Translation\Loader\PoFileLoader;
$registry = Registry::getInstance();
//Read language from config
$config = $registry->get('config');
//Setup Translator
$translator = new Translator($config->get('language'));
$translator->setFallbackLocales(array('en'));
//$translator->addLoader('array', new ArrayLoader());
$translator->addLoader('pofile', new PoFileLoader());
/*$translator->addResource('array', array(
    'Symfony is great!' => 'J\'aime Symfony!',
), 'fr_FR');*/
$translator->addResource('pofile', APP_BASEPATH . '/../locale/fr_FR/LC_MESSAGES/default.po', 'fr_FR');
$translator->addResource('pofile', APP_BASEPATH . '/../locale/en/LC_MESSAGES/default.po', 'en');
//Insert translator into Registry
$registry->set('translator', $translator);
Exemplo n.º 20
0
 public function testTransChoiceFallbackWithNoTranslation()
 {
     $translator = new Translator('ru', new MessageSelector());
     $translator->setFallbackLocales(array('en'));
     $translator->addLoader('array', new ArrayLoader());
     // consistent behavior with Translator::trans(), which returns the string
     // unchanged if it can't be found
     $this->assertEquals('some_message2', $translator->transChoice('some_message2', 10, array('%count%' => 10)));
 }
Exemplo n.º 21
0
};
// Config
$container['config'] = function ($c) {
    if (file_exists(DATABASE . DS . 'config.yml')) {
        $config = $c->get('yaml')->parse(file_get_contents(DATABASE . DS . 'config.yml'));
    } else {
        $config = $c->get('yaml')->parse(file_get_contents(DATABASE . DS . 'config.yml.dist'));
    }
    return $config;
};
// Translator
$container['translator'] = function ($c) {
    $config = $c->get('config');
    $lingua = $config['lingua'];
    $translator = new Translator($lingua, new MessageSelector());
    $translator->setFallbackLocales(['it_IT']);
    $translator->addLoader('yaml', new YamlFileLoader());
    foreach (glob(LANGUAGE . DS . $lingua . DS . '*.' . $lingua . '.yml') as $f) {
        $translator->addResource('yaml', $f, $lingua);
    }
    return $translator;
};
// Twig
$container['view'] = function ($c) {
    $config = $c->get('config');
    $settings = $c->get('settings');
    $tema = $config['tema'];
    $view = new Slim\Views\Twig($settings['view']['template_path'] . DS . $tema, $settings['view']['twig']);
    // Add extensions
    $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri()));
    $view->addExtension(new Twig_Extension_Debug());
 /**
  * Returns the container object.
  *
  * @param string $rootDir The root directoy
  *
  * @return ContainerBuilder The object instance
  */
 public static function create($rootDir)
 {
     $container = new ContainerBuilder();
     // Set up the kernel parameters
     $container->setParameter('kernel.root_dir', $rootDir);
     $container->setParameter('kernel.cache_dir', $rootDir . '/cache/install');
     $container->setParameter('kernel.debug', false);
     // Load the parameters.yml file
     if (file_exists($rootDir . '/config/parameters.yml')) {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml'));
     } else {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml.dist'));
     }
     // Add the parameters to the container
     foreach ($parameters['parameters'] as $name => $value) {
         $container->setParameter($name, $value);
     }
     // Add the Contao upload path
     $container->setParameter('contao.upload_path', 'files');
     // Set up the request stack
     $request = Request::createFromGlobals();
     $requestStack = new RequestStack();
     $requestStack->push($request);
     $container->set('request_stack', $requestStack);
     // Create the session bag
     $bag = new ArrayAttributeBag('_contao_be_attributes');
     $bag->setName('contao_backend');
     // Start the session
     $session = new Session();
     $session->registerBag($bag);
     $session->start();
     $container->set('session', $session);
     // Set up the database connection
     $container->set('database_connection', ConnectionFactory::create($parameters));
     // Resolve the locale
     $translationsDir = __DIR__ . '/../Resources/translations';
     $resolver = new LanguageResolver($requestStack, $translationsDir);
     $locale = $resolver->getLocale();
     // Set up the translator
     $translator = new Translator($locale);
     $translator->setFallbackLocales(['en']);
     $translator->addLoader('xlf', new XliffFileLoader());
     $translator->addResource('xlf', $translationsDir . '/messages.en.xlf', 'en');
     if ('en' !== $locale) {
         $translator->addResource('xlf', $translationsDir . '/messages.' . $locale . '.xlf', 'en');
     }
     $container->setParameter('locale', $locale);
     $container->set('translator.default', $translator);
     // Set up Twig
     $twig = new \Twig_Environment(new \Twig_Loader_Filesystem(__DIR__ . '/../Resources/views'));
     $twig->addGlobal('path', $request->getBasePath());
     $twig->addGlobal('language', str_replace('_', '-', $locale));
     $twig->addGlobal('ua', Environment::get('agent')->class);
     $twig->addFunction(new \Twig_SimpleFunction('asset', function ($path) use($request) {
         return '/' . ltrim($request->getBasePath() . '/' . $path, '/');
     }));
     $twig->addFilter(new \Twig_SimpleFilter('trans', function ($message, $params = []) use($translator) {
         return $translator->trans($message, $params);
     }));
     $container->set('twig', $twig);
     // Add the kernel bundles
     $kernel = new UnbootableKernel('prod', false);
     $kernel->setRootDir($rootDir);
     $kernel->setBundles($kernel->registerBundles());
     $bundles = [];
     foreach ($kernel->getBundles() as $bundle) {
         $bundles[$bundle->getName()] = get_class($bundle);
     }
     $container->set('kernel', $kernel);
     $container->setParameter('kernel.bundles', $bundles);
     // Add the file system
     $container->set('filesystem', new Filesystem());
     // Add the Contao resources paths
     $pass = new AddResourcesPathsPass();
     $pass->process($container);
     // Add the Contao resource finder
     $container->set('contao.resource_finder', new ResourceFinder($container->getParameter('contao.resources_paths')));
     // Add the Contao resource locator
     $container->set('contao.resource_locator', new FileLocator($container->getParameter('contao.resources_paths')));
     // Add the installer services
     $container->set('contao.installer', new Installer($container->get('database_connection'), $container->get('contao.resource_finder'), $container->get('translator.default')));
     $container->set('contao.install_tool', new InstallTool($container->get('database_connection'), $rootDir));
     $container->set('contao.install_tool_user', new InstallToolUser($container->get('session')));
     return $container;
 }
Exemplo n.º 23
0
 /**
  * Gets the translator required for checking the DoubleLocale tests (en_UK etc)
  */
 private function getNonRedirectingHostMapRouter($config = 'routing.yml')
 {
     $container = new Container();
     $container->set('routing.loader', new YamlFileLoader(new FileLocator(__DIR__ . '/Fixture')));
     $translator = new Translator('en_UK', new MessageSelector());
     $translator->setFallbackLocales(array('en'));
     $translator->addLoader('yml', new TranslationLoader());
     $translator->addResource('yml', __DIR__ . '/Fixture/routes.en_UK.yml', 'en_UK', 'routes');
     $translator->addResource('yml', __DIR__ . '/Fixture/routes.en_US.yml', 'en_US', 'routes');
     $translator->addResource('yml', __DIR__ . '/Fixture/routes.nl.yml', 'nl', 'routes');
     $translator->addResource('yml', __DIR__ . '/Fixture/routes.en.yml', 'en', 'routes');
     $container->set('i18n_loader', new I18nLoader(new DefaultRouteExclusionStrategy(), new DefaultPatternGenerationStrategy('custom', $translator, array('en_UK', 'en_US', 'nl_NL', 'nl_BE'), sys_get_temp_dir(), 'routes', 'en_UK')));
     $router = new I18nRouter($container, $config);
     $router->setRedirectToHost(false);
     $router->setI18nLoaderId('i18n_loader');
     $router->setDefaultLocale('en_UK');
     $router->setHostMap(array('en_UK' => 'uk.test', 'en_US' => 'us.test', 'nl_NL' => 'nl.test', 'nl_BE' => 'be.test'));
     return $router;
 }
Exemplo n.º 24
0
 /**
  * (Symfony translator wrapper metódus) Sets the fallback locales.
  *
  * @param array $locales The fallback locales
  *
  * @throws \InvalidArgumentException If a locale contains invalid characters
  */
 public function setFallbackLocales(array $locales)
 {
     $this->translator->setFallbackLocales($locales);
 }
 /**
  * @dataProvider dataProviderGetMessages
  */
 public function testGetMessages($resources, $locale, $expected)
 {
     $locales = array_keys($resources);
     $_locale = null !== $locale ? $locale : reset($locales);
     $locales = array_slice($locales, 0, array_search($_locale, $locales));
     $translator = new Translator($_locale, new MessageSelector());
     $translator->setFallbackLocales(array_reverse($locales));
     $translator->addLoader('array', new ArrayLoader());
     foreach ($resources as $_locale => $domainMessages) {
         foreach ($domainMessages as $domain => $messages) {
             $translator->addResource('array', $messages, $_locale, $domain);
         }
     }
     $result = $translator->getMessages($locale);
     $this->assertEquals($expected, $result);
 }
Exemplo n.º 26
0
 /**
  * @expectedException \InvalidArgumentException
  */
 public function testTransChoiceFallbackWithNoTranslation()
 {
     $translator = new Translator('ru', new MessageSelector());
     $translator->setFallbackLocales(array('en'));
     $translator->addLoader('array', new ArrayLoader());
     $this->assertEquals('10 things', $translator->transChoice('some_message2', 10, array('%count%' => 10)));
 }
Exemplo n.º 27
0
 /**
  * {@inheritdoc}
  */
 public function setFallbackLocales(array $locales)
 {
     parent::setFallbackLocales($locales);
     $this->fallbackResolver->setFallbackLocales($locales);
 }
Exemplo n.º 28
0
 */
// include the composer autoloader
require './vendor/autoload.php';
// Use the ridiculously long Symfony namespaces
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Component\Translation\Loader\PhpFileLoader;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Translator;
// Instantiate and setup Slim application instance
$app = new \Slim\Slim(array('view' => new \Slim\Views\Twig(), 'templates.path' => './views'));
// ONLY FOR EXAMPLE, DON'T DO THIS
$language = $_GET["lang"];
// First param is the "default language" to use.
$translator = new Translator($language, new MessageSelector());
// Set a fallback language incase you don't have a translation in the default language
$translator->setFallbackLocales(['en_US']);
// Add a loader that will get the php files we are going to store our translations in
$translator->addLoader('php', new PhpFileLoader());
// Add language files here
$translator->addResource('php', './lang/no_NB.php', 'no_NB');
// Norwegian
$translator->addResource('php', './lang/en_US.php', 'en_US');
// English
// Get the view
$view = $app->view();
// Add the parserextensions TwigExtension and TranslationExtension to the view
$view->parserExtensions = array(new \Slim\Views\TwigExtension(), new TranslationExtension($translator));
// setup a home route
$app->get("/", function () use($app) {
    // Render a twig view
    $app->render("example.twig");
Exemplo n.º 29
0
 /**
  * Returns the container object.
  *
  * @param KernelInterface $kernel
  * @param Request         $request
  *
  * @return ContainerBuilder
  */
 public static function create(KernelInterface $kernel, Request $request)
 {
     $rootDir = $kernel->getRootDir();
     $cacheDir = dirname($rootDir) . '/var/cache/' . $kernel->getEnvironment();
     $logsDir = dirname($rootDir) . '/var/logs';
     $container = new ContainerBuilder();
     $container->setParameter('kernel.root_dir', $rootDir);
     $container->setParameter('kernel.cache_dir', $cacheDir);
     $container->setParameter('kernel.logs_dir', $logsDir);
     $container->setParameter('kernel.debug', false);
     $parameters = [];
     // Load the parameters.yml file
     if (file_exists($rootDir . '/config/parameters.yml')) {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml'));
     } elseif (file_exists($rootDir . '/config/parameters.yml.dist')) {
         $parameters = Yaml::parse(file_get_contents($rootDir . '/config/parameters.yml.dist'));
     }
     // Add the parameters to the container
     if (!empty($parameters['parameters'])) {
         foreach ($parameters['parameters'] as $name => $value) {
             $container->setParameter($name, $value);
         }
     }
     // Add the Contao parameters
     $container->setParameter('contao.upload_path', 'files');
     $container->setParameter('contao.image.target_path', 'assets/images');
     // Set up the request stack
     $requestStack = new RequestStack();
     $requestStack->push($request);
     $container->set('request_stack', $requestStack);
     // Create the session bag
     $bag = new ArrayAttributeBag('_contao_be_attributes');
     $bag->setName('contao_backend');
     // Start the session
     $session = new Session();
     $session->registerBag($bag);
     $session->start();
     $container->set('session', $session);
     // Set up the database connection
     $container->set('database_connection', ConnectionFactory::create($parameters));
     // Resolve the locale
     $translationsDir = __DIR__ . '/../Resources/translations';
     $resolver = new LanguageResolver($requestStack, $translationsDir);
     $locale = $resolver->getLocale();
     // Update the request locale
     $request->setLocale($locale);
     // Set up the translator
     $translator = new Translator($locale);
     $translator->setFallbackLocales(['en']);
     $translator->addLoader('xlf', new XliffFileLoader());
     $translator->addResource('xlf', $translationsDir . '/messages.en.xlf', 'en');
     if ('en' !== $locale) {
         $translator->addResource('xlf', $translationsDir . '/messages.' . $locale . '.xlf', 'en');
     }
     $container->set('translator', $translator);
     // Set up Twig
     $twigLoader = new \Twig_Loader_Filesystem();
     $twigLoader->addPath(__DIR__ . '/../Resources/views', 'ContaoInstallation');
     $twig = new \Twig_Environment($twigLoader);
     $twig->addExtension(new AnsiExtension());
     $twig->addFunction(new \Twig_SimpleFunction('asset', function ($path) use($request) {
         return '/' . ltrim($request->getBasePath() . '/' . $path, '/');
     }));
     $twig->addFilter(new \Twig_SimpleFilter('trans', function ($message, $params = []) use($translator) {
         return $translator->trans($message, $params);
     }));
     $container->set('twig', $twig);
     $kernelBundles = [];
     foreach ($kernel->getBundles() as $bundle) {
         $kernelBundles[$bundle->getName()] = get_class($bundle);
     }
     $container->set('kernel', $kernel);
     $container->setParameter('kernel.bundles', $kernelBundles);
     // Add the file system
     $container->set('filesystem', new Filesystem());
     // Add the Contao resources paths
     $pass = new AddResourcesPathsPass();
     $pass->process($container);
     // Add the Contao resource finder
     $container->set('contao.resource_finder', new ResourceFinder($container->getParameter('contao.resources_paths')));
     // Add the Contao resource locator
     $container->set('contao.resource_locator', new FileLocator($container->getParameter('contao.resources_paths')));
     // Add the Contao cache
     $container->set('contao.cache', new FilesystemCache($cacheDir . '/contao/cache', '', 022));
     // Add the installer services
     $container->set('contao.installer', new Installer($container->get('database_connection'), $container->get('contao.resource_finder'), $container->get('translator')));
     $container->set('contao.install_tool', new InstallTool($container->get('database_connection'), $rootDir));
     $container->set('contao.install_tool_user', new InstallToolUser($container->get('session')));
     return $container;
 }