2016-01-22 1 views
2

Я пытаюсь использовать языковые файлы внутри пользовательского пакета. Я следил за этой документацией: https://laravel.com/docs/master/packages#translations, но он не работает и выводит только пространство имен :: file.key в виде строки.Пакет файлов перевода не работает - Laravel 5.2

Ошибка. Что я мог сделать неправильно?

загружен как:

$this->loadTranslationsFrom(__DIR__.'/resources/lang', 'TranslatableRoute'); 

Используется как:

trans('TranslatableRoute::routes.create') 

Моя структура путь заключается в следующем:

packages - doitonlinemedia - - translatableroutes - - - src - - - - TranslatableRoute.php - - - - TranslatableRoutesServiceProvider.php - - - - resources - - - - - lang - - - - - - en - - - - - - - routes.php

routes.php содержит:

return [ 
    'create' => 'new', 
    'edit' => 'edit' 
]; 

Обнаружено что-то странное. Когда я дамп $this->app['translator'] он содержит:

array:1 [ 
    "TranslatableRoute" => array:1 [ 
     "routes" => array:1 [ 
     "en" => [] 
     ] 
    ] 
    ] 

Но она не должна быть:

array:1 [ 
    "TranslatableRoute" => array:1 [ 
     "en" => array:1 [ 
     "routes" => [] 
     ] 
    ] 
    ] 

EDIT

Когда я добавляю языковые файлы с loadTranslationFrom, он вызывает addNamespace в vendor/laravel/Translation/FileLoader.php после этого заполняется $this->hints. Но как только я хочу назвать это, эта функция в том же файле запускается: loadNamespaced() в этой функции $this->hint s снова пуст. Похоже на какую-то ошибку.

+0

Какова структура вашего каталога? Является ли каталог 'resources/lang' относительно поставщика услуг, с которого вы загружаете переводы? – Bogdan

ответ

0

Нашли решение, но я думаю, что использую неправильный подход к этой проблеме, но пока он исправлен.

Я делаю пакет, который вызывается внутри файла routes.php. С некоторыми статическими функциями. Кажется, что это загружено, прежде чем он загрузит пакет. Он зарегистрирован, но еще не загружен. Таким образом, я должен был добавить языковые файлы вручную, вызвав в стороне код пакета:

\App::make('translator')->addNamespace('TranslatableRoute', __DIR__.'/resources/lang'); 

Я думаю, мне нужно, чтобы загрузить мой пакет как своего рода фасад контроллера. Не знаю, как это сделать.

0

У меня была такая же проблема, и я не мог понять это. Я закончил тем, что изменил пространство имен, которое я присваивал переводам, и теперь он работает. Я не знаю, почему, может быть, это переписывание пространства имен в мои представления, но с уникальным пространством имен, похоже, работает.

 Смежные вопросы

  • Нет связанных вопросов^_^