2

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

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

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
)

我在这里没看到什么?!

感谢分配!

4

5 回答 5

1

在应用程序中使用它而不是在 /app/Console

cake.bat i18n extract
于 2014-12-08T01:13:42.673 回答
1

完整的解释是,_isExtractingApp()该任务的功能extract检查--paths命令行选项中的应用程序路径与应用程序中的APP常量之间的身份。如果您以斜线结尾,则验证错误消息提取将被静默禁用。

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

作为一种解决方法,请根据常量检查您的--paths选项。APP

于 2017-07-21T08:30:04.900 回答
0

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

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

你也可以参考这里的文档。

于 2013-09-17T10:03:15.597 回答
0

弄清楚了。显然,针对特定文件夹时,i18n shell 不起作用。只有在整个 app 文件夹上运行 shell 时才会提取我的验证消息。

希望这可以帮助。

于 2013-10-03T08:33:46.493 回答
0

正如desolat 的回答指出的那样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 变量。我的 shell 是 CMD,因为我在 Windows 上通过 Composer 运行脚本:

Console\cake i18n extract --quiet --paths "%CD%\\"
于 2018-11-15T10:29:45.330 回答