【发布时间】:2021-01-23 14:28:39
【问题描述】:
我创建了一个包含英语和法语翻译的 Symfony 4.4.8 项目,所以我按照以下步骤操作:
https://symfony.com/doc/current/translation.html
并设置:
config/packages/translation.yaml
framework:
default_locale: 'fr'
translator:
default_path: '%kernel.project_dir%/translations'
fallbacks: ['en', 'fr']
config/routes/annotations.yaml
controllers:
resource: ../../src/Controller/
type: annotation
prefix: /{_locale}/
requirements:
_locale: fr|en
和一个 src/Controller/HomeController.php 和
class HomeController extends AbstractController
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
/**
* @Route("/", name="home")
*/
public function index() {
return $this->render('home/index.html.twig', [
'controller_name' => 'HomeController',
]);
}
我在 translations 文件夹中有翻译文件,当我运行 localhost:8000/fr 或 localhost:8000/en 时,它可以工作好的,我的 home/index.html.twig 显示出来了。
问题是当我运行 localhost:8000/ 时,它会显示默认的 Welcome to Symfony 页面,并显示“您正在查看此页面,因为您还没有配置任何主页 URL。”
sf2 的 this solution 是否适用于 sf4?
有人知道怎么解决吗?
我还测试了将 HomeController 中的路由更改为:@Route("/{_locale}", name="home", defaults={"_locale"="fr"}
但它返回异常:Route pattern "/{_locale}/{_locale}" cannot reference variable name "_locale" more than once.
【问题讨论】:
标签: symfony translation symfony-4.4