Symfony 4 部署后找不到翻译文件
Posted
技术标签:
【中文标题】Symfony 4 部署后找不到翻译文件【英文标题】:Symfony 4 does not find translation files after deploy 【发布时间】:2021-10-08 12:44:08 【问题描述】:我们已将 Symfony 4.4 配置为使用翻译,并且在本地一切似乎都运行良好。我可以更改语言,找到翻译文件,整个过程就像一个魅力。但是在部署完所有字符串后是翻译的关键,而不是我们添加到系统中的自定义翻译。 我们使用 docker 和 k8s 进行部署,因此一切都运行在与本地相同的版本和相同的容器上。
这里还有翻译的配置: Translations.yaml
parameters:
locale: 'sv'
app_locales: 'sv|en'
framework:
default_locale: 'sv'
translator:
default_path: '%kernel.project_dir%/translations'
fallbacks:
- 'sv'
这里是事件订阅者:
<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class LocaleSubscriber implements EventSubscriberInterface
private $defaultLocale;
public function __construct(string $defaultLocale = 'sv')
$this->defaultLocale = $defaultLocale;
public function onKernelRequest(RequestEvent $event)
$request = $event->getRequest();
$request->setLocale($request->getSession()->get('_locale', $this->defaultLocale));
public static function getSubscribedEvents()
return [
// must be registered before (i.e. with a higher priority than) the default Locale listener
KernelEvents::REQUEST => [['onKernelRequest', 101]],
];
发生的情况是,标题上有一个标志,其作用类似于切换,启动一个更改区域设置会话值的方法,然后此事件订阅者从请求之前的会话中选择它并加载翻译。
【问题讨论】:
【参考方案1】:问题是因为 dockerfile 中没有命令将翻译目录(翻译所在的位置)复制到容器中。 将此命令添加到 Dockerfile 就可以了:
COPY /translations /symfony/translations
【讨论】:
以上是关于Symfony 4 部署后找不到翻译文件的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2翻译 - 在生成的YML文件和其他问题中双重下划线