cakephp - 如何获取以 UTF-8 编码的 cakePHP i18n .pot 文件?

标签 cakephp encoding utf-8 internationalization command-line-interface

我正在使用蛋糕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/

相关文章:

php - CakePHP 的时区助手

用于查找 CR 3492161 或 cr 3492161 的 PHP 正则表达式

MySQL 和 PDO : two languages in one table using UTF-8 collation

php - Laravel 的 utf8 编码问题

php - 在 cakePHP 中查找具有 Containable 行为的条件

php - CakePHP 中的多重计数

.net - Server.UrlEncode 与 Uri.EscapeDataString

UTF-8 编码与 Spring Boot 1.1.1

mysql - 如何将 MySQL 表更改为 UTF-8?

java - 如何在 Java 中对 XML 文档进行 UTF-8 编码