使用嵌套关键字更新 Symfony 翻译文件

问题描述

Symfony 支持在翻译文件中嵌套关键字,例如:

symfony:
    is:
        great: Symfony is great
        amazing: Symfony is amazing
    has:
        bundles: Symfony has bundles

所以现在我可以使用这个:

{% trans from 'domain' %}symfony.is.great{% endtrans %}

或者这个:

{% trans from 'domain' %}symfony.is.amazing{% endtrans %}

一切正常,正如官方文档所说。

但是,当我调用命令更新翻译文件时,所有嵌套的关键字都将转换为:

symfony.is.great: Symfony is great
symfony.is.amazing: Symfony is amazing
symfony.has.bundles: Symfony has bundles

我需要保留并正确生成嵌套关键字。因此,如果我在模板关键字 symfony.is.greatsymfony.is.amazing 中定义并调用命令 PHP bin/console translation:update --force en,我需要具有嵌套关键字的文件,正如我在上面的第一个示例中提到的那样。

有没有可能?

解决方法

是的,可以使用 --as-tree 标志。

所以你可以使用php bin/console translation:update --force --format=yaml --as-tree=3 en。 '3' 定义了切换回内联 yaml 的级别。