Как получить файлы cakePHP i18n .pot, закодированные в UTF-8? - PullRequest
2 голосов
/ 13 февраля 2012

Я использую команду cake i18n для извлечения содержимого моих __() функций в моем приложении.Однако выходной файл default.pot не кодируется в UTF-8 и, следовательно, неправильно отображает акцентированные символы, что является проблемой, поскольку основным языком является французский (много слов «é», «à» ...).

Я использую Wamp-сервер в Windows 7.

Я пытался изменить кодировку консоли Windows с помощью chcp, чтобы преобразовать файл default.pot в UTF-8 с помощью Notepad ++ или PSpad Editor, безуспех.

Знаете ли вы, как получить этот файл default.pot в UTF-8?

Все файлы .php или .ctp редактируются с помощью Komodoили Geany, как на Windows, так и настроенный на использование UTF-8.Также я использую Subversion, если это помогает.

Спасибо за чтение.

Ответы [ 2 ]

2 голосов
/ 09 августа 2013

Была такая же проблема с cakephp 1.3 (не уверен, исправлен ли он в 2.x): все «специальные» символы, которые не соответствуют ANSI (такие как ä, ü, ö, ß), где извлечены в. Пот файл и там интерпретируется ANSI (например, «¼» вместо «ü»).

Решение, упомянутое Камиллой (ручное изменение символов), было не очень выполнимым, так как в нем было много символов, это частично разрушило формат .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 перезаписало эти изменения.

0 голосов
/ 14 февраля 2012

Я нашел способ справиться с этим благодаря @Msalters.Я изменил кодировку по умолчанию для моего редактора и переписал неправильные символы.

...