Локализация не работает в CakePHP 3

# head -n2 src/Locale/de/default.po
msgid  "route_shop"
msgstr "shop"

В моем контроллере у меня есть только exit(__('route_shop'));, но он возвращает route_shop.

ini_get('intl.default_locale'); // returns de (as set in config/bootstrap.php)

'locales' => [APP . 'Locale' . DS] // paths setting in config/app.php

Apache/PHP имеют права доступа к файлу default.po. Не вижу ничего другого, что было бы неправильно.

У кого-нибудь есть предложения?

Пробовали разные переводы, локали, полное имя локали (de_DE для параметра имя папки/intl.default_locale). Об ошибках не сообщается, ничего в debug.log


person Devon    schedule 05.01.2016    source источник
comment
Вы пробовали очищать/удалять кэши?   -  person DIDoS    schedule 05.01.2016
comment
попробуйте убрать лишний пробел между msgid и route_shop   -  person arilia    schedule 05.01.2016
comment
@arilia на самом деле так и есть. Я удалил другие строки из файла и только что проверил с помощью route_shop, и, по-видимому, два пробела действительно приводят к сбою в любом месте файла, похоже на ошибку. Тот же файл работает с 1.3 просто отлично.   -  person Devon    schedule 05.01.2016
comment
может это особенность. Я разместил свой комментарий как ответ   -  person arilia    schedule 05.01.2016


Ответы (1)


Я предполагаю, что проблема в количестве пробелов между msgid и строкой.

Я не нахожу никаких ссылок, но это не работает, если есть более одного пробела.

удалите лишнее пространство и не забудьте очистить кеш

person arilia    schedule 05.01.2016
comment
Я не думаю, что это часть официальных спецификаций GNU или что-то вроде того, CakePHP, скорее всего, требует этого строгого формата из соображений производительности, substr обычно быстрее, чем регулярное выражение или подобное. - person ndm; 05.01.2016