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


Package translation files not working - Laravel 5.2

我正在尝试使用自定义包中的语言文件。我遵循了以下文档:https://laravel.com/docs/master/packages#translations,但它不起作用,仅将命名空间::文件.key输出为字符串。

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

加载为:

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

用作:

trans('TranslatableRoute::routes.create')

我的路径结构如下:

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

路线.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 添加语言文件时,它会在 vendor/laravel/Translation/FileLoader 中调用 addNamespace.php之后$this->hints被填充。但是一旦我想调用它,同一文件中的这个函数就会被触发:loadNamespaced()在这个函数中,$this->hint s 再次为空。似乎有些错误。

找到了一个解决方案,但我认为我对这个问题使用了错误的方法,但现在它是固定的。

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

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

我想我需要将我的包加载为某种外观控制器。不知道怎么做。

我遇到了同样的问题,无法弄清楚。我最终更改了分配给翻译的命名空间,它现在可以工作了。我不知道为什么,也许它覆盖了我的视图的命名空间,但是对于唯一的命名空间,它似乎可以工作。