根据Symfony和Twig中的参数设置默认转换域

时间:2018-05-16 13:56:58

标签: php git symfony twig translation

Symfony应用程序部署在两个不同的服务器上,因为几乎所有东西都是相同的,我们使用一个代码库并在前端显示或不显示某些内容。

在我们的app/config/parameters.yml文件中,我们在一台服务器和另一台page: foo上有一行page: bar。然后我们将这个作为全局变量注入每个twig模板,在我们的config.yml文件中的枝条部分如下:

# Twig Configuration
twig:
    [...]
    globals:
        foobar: '%page%'

当我们将它转​​储到任何树枝文件{{ dump(foobar) }}中时,这种接缝就可以正常工作了。我们得到了正确的价值。

然而问题在于翻译文件。由于这两个应用程序共享一个git repo,我们需要一种方法来决定什么是默认翻译域,一个应用程序将加载messages_foo.xliff,而另一个应用程序加载messages_bar.xliff

在我们的枝条文件中,我们添加了:

{% if foobar == 'bar' %}
    {% trans_default_domain "messages_bar" %}
{% else %}
    {% trans_default_domain "messages_foo" %}
{% endif %}

但是,在提取翻译时,无论messages_foo具有什么值,它都只会提取foobar。然后我们复制了messages_foo.xliff并将副本命名为messages_bar.xliff,在其中更改了一个值,清除了缓存并确保配置参数为bar,但是树枝仍然呈现了值messages_foo.xliff文件,完全忽略messages_bar.xliff

有没有办法实现这个目标?在没有动态设置default_domain的情况下实现它的唯一方法是在master分支{g}除foobar分支之外的git中,首先在{{1}中合并新功能然后在mastermaster中合并foo,这对我来说是一种过度工程。

我们尝试过的另一件事是使用if else构造而不是简单地调用导致错误的bar

{% trans_default_domain foobar == 'bar' ? "messages_bar" : "messages_foo" %}

提取邮件的命令是:[LogicException] Attribute "value" does not exist for Node "Twig_Node_Expression_Name".

注意:

0 个答案:

没有答案