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}除foo
和bar
分支之外的git中,首先在{{1}中合并新功能然后在master
和master
中合并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".
注意: