Была такая же проблема с 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 перезаписало эти изменения.