【发布时间】:2017-01-15 22:28:07
【问题描述】:
我正在尝试在自定义包中使用语言文件。 我遵循了这个文档: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->hints 又是空的。好像是个bug。
【问题讨论】:
-
你的目录结构是什么?
resources/lang目录是否相对于您从中加载翻译的服务提供商?
标签: php laravel laravel-5.2