我在配置文件中使用trans()函数时遇到问题,我觉得不应该这样使用。但是我不知道在配置文件(/ config文件夹中的文件)中翻译字符串文本的最有效方法是什么。
原始代码
<?php
return [
'daily' => 'Daily'
];
当我尝试实现trans()应用程序崩溃和laravel返回白页而没有任何错误消息
<?php
return [
'daily' => trans('app.daily_text')
];
答案 0 :(得分:4)
配置文件是Laravel初始化的第一个东西,这意味着你不能在配置文件中使用Translator
或UrlGenerator
。
我不知道你要做什么,但你不应该在配置文件中使用Translator
但是......
答案 1 :(得分:4)
您不能在Laravel配置文件中使用trans或route方法。在加载配置文件时,这些方法无法运行。此外,配置文件的目的是用于存储纯值,我们不应该在配置文件中触发任何操作。
我知道有时候你想把东西放到配置文件中,其中包含从路径生成的动态数据或来自语言键的文本。在我的用例中是:配置配置文件中的菜单结构。在这种情况下,您应该选择以下方法:仅存储转换键和包含可在运行时生成URL的信息的数组。
我把gist放在这里让你查看方法。
答案 2 :(得分:1)
您可以将密钥存储在配置文件中,然后在视图中使用trans功能来获取翻译:
配置文件:
<?php
return [
'foo' => 'bar'
];
然后在视图中:
{{ trans(config('config.foo') }}
答案 3 :(得分:0)
我不知道这是不是很好的做法,但我在类似的情况下结束了。
CONFIG.PHP:
'Foo' => array('
'route' => 'route.name',
'name' => 'translated_line', //translated in lang file ex. /en/general.php
'),
然后在我使用的视图中:
<a href="{{ route(Config::get('foo.route')) }}">{{ Lang::get('general.'.Config::get('foo.name'))) }}</a>
也许这已经太晚了,但无论如何我都在这里发布,所以也许有人会觉得它很有用,就像我一样:))
答案 4 :(得分:0)
自Laravel v5.4, you can use the __
helper function起,在Laravel启动后即可访问翻译。
示例:
config / example.php
<?php
return [
'daily' => 'Daily',
'monthly' => 'app.monthly_text',
'yearly' => 'app.yearly_text'
];
resources / lang / zh-CN / app.php
<?php
return [
'monthly_text' => 'Monthly'
];
您可以这样访问翻译:
<?php
// ...
$daily = config('example.daily');
$a = __($daily); // "Daily"
$monthly = config('example.monthly');
$b = __($monthly); // "Monthly"
$yearly = config('example.yearly');
$c = __($yearly); // "app.yearly_text"