包翻译文件不起作用 - Laravel 5.2

时间:2016-01-22 22:42:57

标签: php laravel laravel-5.2

我正在尝试在自定义包中使用语言文件。 我遵循了这个文档:https://laravel.com/docs/master/packages#translations,但它不起作用,只将Namespace :: file.key作为字符串输出。

没有错误。我怎么可能做错了?

加载为:

$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" => []
      ]
    ]
  ]

修改

当我使用loadTranslationFrom添加语言文件时,它会在填充$this->hints后调用vendor / laravel / Translation / FileLoader.php中的addNamespace。但是只要我想在同一个文件中调用它,这个函数就会触发:loadNamespaced()在这个函数中$this->hint s再次为空。好像有些错误。

2 个答案:

答案 0 :(得分:0)

找到了一个解决方案,但我认为我使用了错误的方法解决了这个问题,但现在已经修复了。

我正在制作一个在routes.php文件中调用的包。有一些静态功能。它似乎是在它启动包之前加载的。它已注册,但尚未启动。所以我不得不通过调用包代码来手动添加语言文件:

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

我想我需要将我的包加载为某种Facade Controller。不知道怎么做。

答案 1 :(得分:0)

我遇到了同样的问题,无法弄明白。我最终更改了我分配给翻译的命名空间,现在可以正常工作了。我不知道为什么,也许它覆盖了我的视图的命名空间,但是使用一个独特的命名空间似乎正在起作用。