【问题标题】:Translate labels from yml to php file将标签从 yml 转换为 php 文件
【发布时间】:2017-05-30 08:59:03
【问题描述】:

我有一个包含大量翻译的 YAML 文件,如下所示:

wizard
  admin
    title: example

我在 PHP 文件上这样调用它:

public function getTypesChart(){
   $charts = array(
      array(
        'title' => 'wizard.admin.title'
      ),
   );
   return $charts;
}

但我得到的唯一输出是“wizard.admin.title”而不是“example”。

【问题讨论】:

  • 看看yaml_parse php函数可能有用
  • 请注意这个输入文件是无效的YAML

标签: php symfony yaml


【解决方案1】:

你需要像这样调用翻译服务(假设你在一个控制器中,或者你有你的服务容器):

public function getTypesChart(){
    $charts = array(
        array(
        'title' => $this->get('translator')->trans('wizard.admin.title')
        ),
    );
    return $charts;
}

【讨论】:

    【解决方案2】:

    除非您将翻译密钥放在自动翻译的内容中(例如表单的字段标签),否则您需要明确要求翻译来完成这项工作。

    假设您的代码在您可以调用的某个控制器中:

    $this->get("translator")->trans("wizard.admin.title");
    

    【讨论】:

      【解决方案3】:

      这里有多个问题。首先最重要的是您的输入不是有效的 YAML:

      wizard
        admin
          title: example
      

      虽然您可以在 YAML 中使用多行不带引号的标量,例如:

       x: wizard
            admin
              title
      

      (与x: 'wizard admin title'x: wizard admin title 相同)此类标量不能用作映射的键​​。

      由于无效,您必须将 YAML 更正为:

      wizard:
        admin:
          title: example
      

      更正后,请确保您致电translater

      public function getTypesChart(){
         $charts = array(
            array(
              'title' => $this->get('translator')->trans('wizard.admin.title')
            ),
         );
         return $charts;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-29
        • 1970-01-01
        • 2020-01-31
        • 2014-04-07
        • 1970-01-01
        相关资源
        最近更新 更多