Symfony2:获取父项下的所有翻译

时间:2013-08-13 13:21:12

标签: php symfony translation yaml

在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 个答案:

答案 0 :(得分:2)

不,你无法通过翻译得到它 这是因为ArrayLoader flattens解析了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...
}