翻译symfony 2正在返回键,而不是翻译
我不明白为什么当我与Symfony交易时,它会返回给我钥匙,而不是交易信息。我使用的是symfony 2.7,这是我的配置: 我已在config.yml文件中启用转换器:翻译symfony 2正在返回键,而不是翻译,symfony,twig,translation,Symfony,Twig,Translation,我不明白为什么当我与Symfony交易时,它会返回给我钥匙,而不是交易信息。我使用的是symfony 2.7,这是我的配置: 我已在config.yml文件中启用转换器: translator: { fallback: ["%locale%"] } 这是我在控制器内的功能: /** * @Route("/consult", name="showConsult") * @Template("AppBundle:Admin:consult.html.twig") */ public
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();
}
这是我在app/Resources/translations中的翻译文件
#messages.fr.yml
login.version: Version APP
我也尝试过细枝功能:
{{"login.version"|trans}}
{%trans%}'login.version'{%endtrans%}
编辑:我也有明显的疼痛
EDIT2:好的,我发现$request->setLocale()不起作用。如果我在config.yml中强制使用区域设置,它就会工作。你知道我怎样才能解决这个问题吗?我读过,但它们对我不起作用。我正在使用Windows 10
输出始终是关键。我得到的是“login.version”而不是“version-APP”
有人能帮我吗?提前感谢您的yaml文件应该是
#messages.fr.yml
login:
version: Version APP
我知道这已经有很长时间了,但我把它作为参考发布,因为我今天遇到了类似的问题 我必须实现一个侦听器来设置区域设置值,如中所述 基本上,你必须: 1) 创建一个
侦听器
:
// 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) 在src/AppBundle/Resources/config/config yml
上注册Listener
:
services:
app.locale_listener:
class: AppBundle\EventListener\LocaleListener
arguments: ['%kernel.default_locale%']
tags:
- { name: kernel.event_subscriber }
3) 在您的任何请求上同时添加一个
\u locale
参数,该区域设置将在用户的所有工作会话中保持不变。文件位于何处?确保它与所需的结构相匹配;尝试删除yml的所有部分,并确保其中没有yml解析错误;还要尝试设置“translator:~”,这样它就可以使用默认值了。看起来很明显,但只是以防万一:您是否清理了缓存(php应用程序/控制台缓存:clean--env=dev
)?什么文件?我已经编写了eh translations.yml文件的路径。我还尝试了mybundlefolder/Resources/translations。config.yml文件是app/Resources/config。我已尝试使用translator:~但不起作用。@AlainTiemblo我已多次清除缓存。我甚至尝试过直接删除文件夹中的内容,很抱歉我忘了对其进行注释。{fallback:[%locale%]}
:如果您将%locale%
替换为fr
?顺便说一下,我无法在新安装中重现您的问题:,给我正确的字符串(12)“版本应用程序”
实际上与login.Version或与您一样的子元素无关。实际上,您可以使用完整的字符串,如“登录版本”:“我的翻译”。这只是“更干净”的方式;)