cakephp i18n shell不提取验证消息

时间:2013-09-17 09:13:03

标签: shell validation cakephp cakephp-2.x

我正在尝试使用cake的i18n shell使用蛋糕2.3从我的网站生成pot文件。正如cake docs中提到的,shell应该自动提取验证消息。但是,我的pot文件中没有任何验证字符串出现。

我的验证数组看起来像(还要注意validationDomain):

public $validationDomain  = 'validation_errors';

public $validate = array(             
    'currency' => array(
        'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'Select a currency'
        ),
    ),
    'title' => array(
        'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'Fill out a title'
        ),
    )

... etc
)

我在这里看不到什么?!

感谢分配!

5 个答案:

答案 0 :(得分:1)

在app中使用此功能,而不是在/ app / Console

cake.bat i18n extract

答案 1 :(得分:1)

完整的解释是,_isExtractingApp()任务的extract函数检查--paths命令行选项中的应用程序路径与APP常量中的--paths常量之间的身份。你的应用。如果您通过尾部斜杠关闭,则将以静默方式禁用验证错误消息提取。

This commit在将插件处理添加到提取任务时引入了此问题。

作为解决方法,请针对APP常量检查=Mean(D17:D150)选项。

答案 2 :(得分:0)

要在pot文件中生成验证消息,您可以使用此命令

./Console/cake i18n extract --validation-domain validation_errors

您还可以参考文档here

答案 3 :(得分:0)

想出来。 显然,当定位特定文件夹时,i18n shell不起作用。我的验证消息仅在整个app文件夹上运行shell时提取。

希望这有帮助。

答案 4 :(得分:0)

desolat's answer指出ExtractTask::_isExtractingApp()中存在一个错误,该错误仍存在于最新版本的2.x分支(CakePHP / 2.10.13)中。该方法比较的路径未经事先归一化,因此比较脆弱,在某些情况下会中断。

在我的情况下,它由于相对路径而失败:

Console\cake i18n extract --quiet --paths .

无论出于何种原因,它仅对我使用绝对路径并带有重复的后斜杠的对我有效:

Console\cake i18n extract --quiet --paths "C:\Projects\Project Name\src\\"

硬编码路径不是一个选择,因为我的脚本是要共享的,所以我使用了一个shell变量。我的外壳是CMD,因为我通过Windows上的Composer运行脚本:

Console\cake i18n extract --quiet --paths "%CD%\\"