Symfony2: выборка всех переводов под родительским именем
В контроллере symfony2 вы можете получить определенный перевод, используя:
$this->get('translator')->trans('dropdown.state.CA.AB');
Пример messages.en.yml
:
dropdown:
state:
CA:
AB: Alberta
BC: British Columbia
MB: Manitoba
Как я могу получить AB, BC и MB в одном вызове (возможно, в массиве) и, надеюсь, также смогу вызвать его индивидуально, используя вышеупомянутый или аналогичный вызов перевода.
Пара вещей, которые я пробовал:
$this->get('translator')->trans('zuora.dropdown.state.CA);
dropdown:
state:
CA:
- AB: Alberta
- BC: British Columbia
- MB: Manitobavarious
Конечно, пропуская какой-то Шаг
1 ответ:
Нет, вы не можете получить его через переводчик.
Это из-за того, чтоArrayLoader
сплющивает результат анализа yml.Метод Flatten преобразует входные данные, такие как
Array ( [foo] => Array( [bar] => baz [sub] => Array( [fiz] => foobaz ) ) )
К
Array ( [foo.bar] => baz [foo.sub.fiz] => foobaz )
Единственный способ, который я смог найти, - это снова проанализировать файл перевода.
use Symfony\Component\Yaml\Yaml; // From a controller $file = __DIR__.'/../Resources/translations/messages.en.yml'; $parsed = Yaml::parse(file_get_contents($file)); foreach ($parsed['dropdown']['state']['CA'] as $ca => $content) { // Your logic... }