翻译不起作用Symfony

时间:2015-06-10 08:34:53

标签: php symfony

我正在尝试翻译我的平台。首先,我做了一个简单的布局来尝试反射功能。当我确定它时,我将为真实情况做出准备。你可以看到控制器,index.html.twig,config.yml,messages.es和messages.en:

....

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Translation\Translator;

class DummyController extends Controller
{
    /**
     * @Route("/prova",name="role_public_dummy")
     * @Template()
     */
    public function indexAction(Request $request)
    {
        //$locale = $request->getLocale();
        $request=$this->getRequest();
        $locale = $request->getPreferredLanguage();//catching browser language
        $request->setLocale($locale);
        $this->get('session')->set('_locale', $locale);

        return array();

    }

}

index.html.twig

{% trans %}index.1{% endtrans %}

config.yml

framework:
    #esi:             ~
    translator:      { fallback: "%locale%" }
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
        #assets_version: SomeVersionScheme
    default_locale:  "%locale%"
    trusted_hosts:   ~
    trusted_proxies: ~
    session:
        # handler_id set to null will use default session handler from php.ini
        handler_id:  ~
    fragments:       ~
    http_method_override: true

messages.es

index.1: "CASA"

messages.en

index.1: "HOME"

所以,我不明白为什么symfony在使用'trans'函数时总是使用locale'en'。它就像它没有捕获会话的区域设置。

1 个答案:

答案 0 :(得分:0)

您正尝试将区域设置设置为Request对象,但在控制器中它对Translator服务没有任何影响,因为它已经在之前配置过。 我想您应该尝试直接为Translator服务设置区域设置,或者创建单独的操作,您只需将区域设置设置为会话并重定向到其他操作。