我不明白为什么当我使用Symfony时,它会返回密钥,而不是消息。我正在使用symfony 2.7,这是我的配置:我已经在我的config.yml文件中启用了翻译程序:
translator: { fallback: ["%locale%"] }这是我在控制器内的功能:
/**
* @Route("/consult", name="showConsult")
* @Template("AppBundle:Admin:consult.html.twig")
*/
public function showConsult(Request $request)
{
$request->setLocale('fr');
var_dump($this->get('translator')->trans("login.version"));
return array();
}这是应用程序/参考资料/翻译中的翻译文件
#messages.fr.yml
login.version: Version APP我也尝试过使用树枝功能:
{{"login.version"|trans}}
{%trans%}'login.version'{%endtrans%}编辑:,我还清除了chache,EDIT2: Ok,我发现$request->setLocale()不起作用。如果我在config.yml中强制区域设置,它就能工作。你知道我怎么能解决这个问题吗?我读过this,但他们没有为我工作。我正在使用Windows 10,输出始终是关键。我得到了"login.version“而不是”版本应用“,有人能帮我吗?提前感谢
发布于 2015-11-08 18:31:54
你的yaml文件应该是..。
#messages.fr.yml
login:
version: Version APP发布于 2016-08-29 08:47:00
我知道这已经很长时间了,但我把它作为一个参考,因为我有一个类似的问题,就在今天。
我必须实现一个侦听器来设置区域设置值,如session.html中所述
基本上,你必须:
1)创建一个Listener
// src/AppBundle/EventListener/LocaleListener.php
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class LocaleListener implements EventSubscriberInterface
{
private $defaultLocale;
public function __construct($defaultLocale = 'en')
{
$this->defaultLocale = $defaultLocale;
}
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if (!$request->hasPreviousSession()) {
return;
}
// try to see if the locale has been set as a _locale routing parameter
if ($locale = $request->attributes->get('_locale')) {
$request->getSession()->set('_locale', $locale);
} else {
// if no explicit locale has been set on this request, use one from the session
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
}
}
public static function getSubscribedEvents()
{
return array(
// must be registered after the default Locale listener
KernelEvents::REQUEST => array(array('onKernelRequest', 15)),
);
}
}2)在Listener上注册src/AppBundle/Resources/config/config-yml
services:
app.locale_listener:
class: AppBundle\EventListener\LocaleListener
arguments: ['%kernel.default_locale%']
tags:
- { name: kernel.event_subscriber }3)在任何请求中添加一个_locale参数,该区域设置对于所有用户的工作会话都是粘性的。
https://stackoverflow.com/questions/33597003
复制相似问题