表格输入的翻译

时间:2014-05-16 15:03:53

标签: cakephp internationalization cakephp-2.3

我目前正在将我的cake-php-webapp国际化,这是非常好的。 一切都被翻译,但形成了输入:

echo $this->Form->input('name', array('class' => 'form-control'));

这会生成一个标签

<label for="UserName">Name</label>

如何指定“姓名”也应该翻译?

我认为这是迄今为止我所知道的最佳方式:

echo $this->Form->input('name', array('class' => 'form-control', 'label'=>__('field_name')));

但有没有指定标签的方法?

1 个答案:

答案 0 :(得分:1)

在CakePHP 2.3中,如果你看一下内置的FormHelper类:

 public function label($fieldName = null, $text = null, $options = array()) {

 ...  

 if ($text === null) {

        if (strpos($fieldName, '.') !== false) {
            $fieldElements = explode('.', $fieldName);
            $text = array_pop($fieldElements);
        } else {
            $text = $fieldName;
        }
        if (substr($text, -3) === '_id') {
            $text = substr($text, 0, -3);
        }

        $text = __(Inflector::humanize(Inflector::underscore($text)));
    }

 ...

}

在我看来,如果你没有设置标签文本,它会从字段名称中获取标签文本,然后在其上调用translate函数。

您是否尝试过在不指定标签文本的情况下创建输入,然后为相应的.po文件中为该输入标签自动生成的文本保存翻译?