Приложение Symfony разворачивается на двух разных серверах, так как почти все они одинаковы, мы используем одну кодовую базу и показываем или не показываем определенные вещи во внешнем интерфейсе.
В нашем app/config/parameters.yml
файл у нас есть строка page: foo
на одном сервере, а на другом page: bar
.Затем мы внедряем это в каждый шаблон ветки как глобальную переменную в нашем файле config.yml
в разделе веток, например:
# Twig Configuration
twig:
[...]
globals:
foobar: '%page%'
Этот шов работает так же, как когда мы выгружаем его в любой файл ветки {{ dump(foobar) }}
получить правильное значение.
Проблема, однако, с файлами перевода.Поскольку эти два приложения совместно используют одно git-репо, нам нужен способ определить, какой домен перевода по умолчанию используется: одно приложение будет загружать 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
, однако twig по-прежнему полностью отображал значение для файла messages_foo.xliff
игнорирование messages_bar.xliff
.
Есть ли способ достичь этого?Единственный способ добиться этого без динамической установки default_domain - это иметь в git помимо ветки master
ветки foo
и bar
, сначала объединить новые функции в master
, а затем объединить master
обав foo
и bar
, что кажется мне слишком сложным.
Еще одна вещь, которую мы пытались использовать вместо конструкции if else для простого вызова {% trans_default_domain foobar == 'bar' ? "messages_bar" : "messages_foo" %}
, что привело к ошибке:
[LogicException]
Attribute "value" does not exist for Node "Twig_Node_Expression_Name".
Команда для извлечения сообщений: php bin/console translation:extract en --config=user --enable-extractor=jms_i18n_routing --output-format=xliff
Примечание: