2015-07-19 53 views
0

我試圖在我的web應用程序中使用silex框架來實現翻譯。所以,我來過了這個silex和樹枝本地化

<?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)默認爲人力資源的語言環境,但我不能讓它的工作。翻譯工作正常,但當我檢查我的樹枝模板中的語言環境時,我得到'en'(我需要該檢查以根據語言環境輸出一些額外的文本)。如果我按照預期顯式輸入語言環境,如mysite.com/hr或mysite.com/en twig寄存器語言環境。

此外,我想知道是否是在主頁上沒有指定語言環境的多語言頁面的良好做法。

回答