【问题标题】:Symfony2: fetching all translations under a parentSymfony2:获取父项下的所有翻译
【发布时间】:2013-08-13 13:21:12
【问题描述】:

在 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

当然,缺少一些步骤

【问题讨论】:

    标签: php symfony translation yaml


    【解决方案1】:

    不,您无法通过翻译器获得它。
    这是因为ArrayLoaderflattens是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...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 2022-01-18
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多