我正在尝试使用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
)
我在这里看不到什么?!
感谢分配!
答案 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%\\"