簡體   English   中英

Silex:翻譯不在Twig工作

[英]Silex: translation not working in Twig

目前,我使用PHP微框架Silex開發了一個網站。 現在我嘗試使用“ TranslationServiceProvider ”將我的網站翻譯成不同的語言。 為此,我設置了“ locale ”參數:

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

然后,在我的控制器中,我調用函數“setLocale”,如下所示:

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

現在,如果我顯示,總是在我的控制器中,翻譯的結果可以正常工作:

$app['translator']->trans("hello"); // return "Buongiorno" 
$app['translator']->getLocale(); // return "it"

但是,如果我在我的模板Twig中調用相同的函數,則轉換不起作用:

{{ app.translator.trans('hello') }} // return: "Olá"
{{ app.request.locale }} // return: "pt"

所以,我不明白:我的控制器中的翻譯工作正常,但是當我想在Twig中訪問翻譯時,沒有任何反應。

你對發生了什么有什么想法嗎?

最后,我找到了解決問題的解決方案。 在我的“app.php”文件中,我添加了以下代碼:

$app->before(function () use ($app) {
    if ($locale = $app['request']->get('lang') or $locale  = $app['request']->getSession()->get('_locale')) {
        $app['locale'] = $locale;
        $app['request']->setLocale($locale);
    }
});

然后,我在我的控制器中編寫了一個函數來改變語言:

public function changeLanguageAction(Request $request, Application $app, $language)
{
    $app['request']->getSession()->set('_locale', $language);

    return $app->redirect($app["url_generator"]->generate('index'));
}

現在,當我調用“changeLanguage”函數時,所有的翻譯工作正常。

我不知道這個解決方案是否是一個好的做法,但它有效......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM