Cakephp i18n - Сбой конструктора - Исключение Intl
Недавно я извлек строки из приложения, которое я создаю с Cakephp, благодаря их потрясающей оболочке i18n. Затем я сделал перевод (с французского на английский) и поместил файлы в src/Locale:
src/
Locale/
default.po
fr/
default.po
Первый default.po в папке Locale/ отформатирован следующим образом:
msgid "View"
msgstr ""
Default.po в папке fr /:
msgid "View"
msgstr "Vue"
В моем контроллере приложений я хочу проверить traduction:
public function initialize()
{
parent::initialize();
I18n::locale('fr');
...
}
Но я получаю следующую ошибку:
Я пытался найти информацию в Интернете, но ничего не смог найти. Я тоже примерял несколько машин.
Что я делаю неправильно?
Спасибо, ребята!
РЕДАКТИРОВАТЬ:
Версия торта 3.3.12
Версия комплекта отладки 3.3.12
Журнал ошибок:
2017-03-14 17:18:54 Error: [IntlException] Constructor failed
Request URL: /
Stack Trace:
#0 /www/fitadmin/admin/vendor/cakephp/cakephp/src/I18n/Formatter/IcuFormatter.php(89): MessageFormatter->__construct('fr', '{0, number, #, ...')
#1 /www/fitadmin/admin/vendor/cakephp/cakephp/src/I18n/Formatter/IcuFormatter.php(52): Cake\I18n\Formatter\IcuFormatter->_formatMessage('fr', '{0, number, #, ...', Array)
#2 /www/fitadmin/admin/vendor/cakephp/cakephp/src/I18n/Translator.php(150): Cake\I18n\Formatter\IcuFormatter->format('fr', '{0, number, #, ...', Array)
#3 /www/fitadmin/admin/vendor/cakephp/cakephp/src/I18n/functions.php(84): Cake\I18n\Translator->translate('{0,number,#,###...', Array)
#4 /www/fitadmin/admin/vendor/cakephp/cakephp/src/I18n/Number.php(92): __d('cake', '{0,number,#,###...', 2.2256164550781)
#5 /www/fitadmin/admin/vendor/cakephp/debug_kit/src/Panel/TimerPanel.php(125): Cake\I18n\Number::toReadableSize(2333728)
#6 /www/fitadmin/admin/vendor/cakephp/debug_kit/src/ToolbarService.php(191): DebugKit\Panel\TimerPanel->summary()
#7 /www/fitadmin/admin/vendor/cakephp/debug_kit/src/Routing/Filter/DebugBarFilter.php(139): DebugKit\ToolbarService->saveData(Object(Cake\Network\Request), Object(Cake\Network\Response))
#8 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Event/EventManager.php(426): DebugKit\Routing\Filter\DebugBarFilter->afterDispatch(Object(Cake\Event\Event), Object(Cake\Network\Request), Object(Cake\Network\Response))
#9 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Event/EventManager.php(391): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event))
#10 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Event/EventDispatcherTrait.php(78): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event))
#11 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(100): Cake\Http\ActionDispatcher->dispatchEvent('Dispatcher.afte...', Array)
#12 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/BaseApplication.php(83): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#13 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Http\BaseApplication->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#14 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php(62): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#15 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\RoutingMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#16 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php(88): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#17 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\AssetMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#18 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php(81): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#19 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#20 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/Runner.php(51): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#21 /www/fitadmin/admin/vendor/cakephp/cakephp/src/Http/Server.php(90): Cake\Http\Runner->run(Object(Cake\Http\MiddlewareQueue), Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#22 /www/fitadmin/admin/webroot/index.php(37): Cake\Http\Server->run()
#23 {main}
1 ответ
Прочитав комментарий @ndm, я заглянул внутрь своего.po-файла и попытался удалить переводы из папки продавца cakephp. Я заметил, что есть некоторые абсолютные пути (C: /xampp/...), которых там не должно быть.
Это сделало трюк...
Для справки: у меня была такая же проблема, и это оказалась синтаксическая ошибка в моем.po файле. В моем случае:
msgid "My name is {0}"
msgstr "Jag heter {}"
Обратите внимание на недопустимый заполнитель {}
в переведенной строке, которая, конечно, должна быть {0}
.