我正在使用蛋糕i18n命令来提取应用程序中 __()
函数的内容。
但是,default.pot 输出文件未采用 UTF-8 编码,因此无法正确显示重音字符,这是一个问题,因为主要语言是法语(大量 'é' 、 'à' ...)。
我在 Windows 7 上使用 wamp 服务器。
我尝试使用 chcp 更改 Windows 控制台的编码,使用 notepad++ 或 PSpad 编辑器将 default.pot 文件转换为 UTF-8,但没有成功。
您知道如何获取 UTF-8 格式的 default.pot 文件吗?
所有 .php 或 .ctp 文件均在 Windows 上使用 Komodo 或 Geany 编辑,并配置为使用 UTF-8。 我也在使用 subversion,如果有帮助的话。
感谢您的阅读。
最佳答案
在 cakephp 1.3 中也有同样的问题(不确定是否在 2.x 中得到修复):所有不符合 ANSI 标准的“特殊”字符(例如 ä、ü、ö、ß),在 . pot 文件并由 ANSI 解释(例如,“μ”而不是“ü”)。
Camille 提到的解决方案(手动更改字符)不太可行,因为它有很多字符,这部分破坏了 .pot 格式,更糟糕的是,.po 文件的自动更新将无法工作。
我发现的解决方法是借助 PHP 文档中 write() 的注释(在控制台任务中使用):http://www.php.net/manual/en/function.fwrite.php#73764 .
根据那里的描述,我用两行扩展了文件/cake/console/libs/tasks/extract.php:
第一行进入函数 __buildFiles():
$string = utf8_decode($string);
我把它写在第 351 行,但它只需要在第二个 foreach 循环中,当然在函数使用变量之前。
第二行进入函数__writeHeader():
替换行 $File->write($output);与
$File->write(utf8_encode($output));
这对我来说是这样,请注意更新你的 cakephp 将覆盖此更改。
关于cakephp - 如何获取以 UTF-8 编码的 cakePHP i18n .pot 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258207/