我正在使用cake i18n命令在我的应用程序中提取__()
函数的内容。
但是,default.pot输出文件没有以UTF-8编码,因此没有正确显示加重的字符,这是一个问题,因为主要语言是法语(很多'é','à'...)。 / p>
我在Windows 7上使用wamp服务器。
我尝试使用chcp更改Windows控制台的编码,使用notepad ++或PSpad编辑器转换UTF-8中的default.pot文件,但没有成功。
您知道如何以UTF-8格式获取此default.pot文件吗?
所有.php或.ctp文件都使用Komodo或Geany编辑,在Windows上都配置为使用UTF-8。 如果有帮助,我也在使用颠覆。
感谢您的阅读。
答案 0 :(得分:2)
与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循环和couse中。
第二行进入函数__writeHeader():
替换行$ File-> write($ output);与
$File->write(utf8_encode($output));
这样做对我来说,请注意更新你的cakephp会覆盖这些变化。
答案 1 :(得分:0)
感谢@Msalters,我找到了解决这个问题的方法。我更改了编辑器的默认编码并覆盖了错误的字符。