silex和twig本地化

问题描述 投票:0回答:1

我正在尝试使用silex框架在我的Web应用程序中实现翻译。所以,我想出了这个

<?php

require_once __DIR__.'/../vendor/autoload.php';

$app = new Silex\Application();
$app['debug'] = true;

$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/../views',
));

$app->register(new Silex\Provider\TranslationServiceProvider(array(
    'locale_fallbacks' => array('hr'),
)));


$app['translator'] = $app->share($app->extend('translator', function($translator) {

    $translator->addLoader('xlf', new \Symfony\Component\Translation\Loader\XliffFileLoader());

    $translator->addResource('xlf', __DIR__.'/../locales/hr.xlf', 'hr');
    $translator->addResource('xlf', __DIR__.'/../locales/en.xlf', 'en');
    $translator->addResource('xlf', __DIR__.'/../locales/sl.xlf', 'sl');

    return $translator;
}));


$app->get('/', function () use ($app) {

    $app['translator']->setLocale('hr');

    return $app['twig']->render('home.twig', array('d' => $app['translator']->getLocale()));

});


$app->get('/{_locale}/', function() use ($app) {
    $app['translator']->setLocale($app['request']->get('locale'));

    return $app['twig']->render('home.twig', array('d' => $app['translator']->getLocale()));
});



$app->run();

基本上,我希望我的主页(mysite.com)默认为hr locale,但我无法让它工作。翻译工作正常但是当我在我的树枝模板中检查区域设置时,我得到'en'(我需要检查以根据区域设置输出一些额外的文本)。如果我明确地输入locale,如mysite.com/hr或mysite.com/en,twig会按预期注册语言环境。

另外,我想知道在主页上是否有多语言页面没有指定的语言环境是一个好习惯。

localization translation silex
1个回答
0
投票

尝试

$app['locale'] = 'hr';

Silex默认语言环境设置为“en”。

更多信息在silex translation documentation

© www.soinside.com 2019 - 2024. All rights reserved.