【问题标题】:Laravel string Localization in config files配置文件中的 Laravel 字符串本地化
【发布时间】:2016-02-27 15:42:23
【问题描述】:

我在配置文件中使用 trans() 函数时遇到问题,我觉得不应该那样使用它。但是,我不知道在配置文件(/config 文件夹中的文件)中翻译字符串文本的最有效方法是什么。

原始代码

<?php

return [
    'daily' => 'Daily'
];

当我尝试实现 trans() 应用程序崩溃并且 laravel 返回白页时没有任何错误消息

<?php

return [
    'daily' => trans('app.daily_text')
];

【问题讨论】:

  • 您找到解决方案了吗?我遇到了同样的问题,但找不到解决方案。

标签: php laravel model-view-controller laravel-5 laravel-5.1


【解决方案1】:

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'
];

资源/lang/en/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"

【讨论】:

  • OP 并没有要求这样做。他试图在配置文件中调用 trans() / __()。
【解决方案2】:

我不知道这是否是一种好习惯,但我在类似的情况下最终这样做了。

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>

也许这太晚了,但我还是把它贴在这里,这样也许有人会发现它很有用,比如我:))

【讨论】:

    【解决方案3】:

    您可以将密钥存储在配置文件中,然后在视图中使用 trans 函数来获取翻译:

    配置文件:

    <?php
    
    return [
    'foo' => 'bar'
    
    ];
    

    然后在视图中:

    {{ trans(config('config.foo') }}
    

    【讨论】:

    • 对。如此明显的解决方案。
    【解决方案4】:

    配置文件是 Laravel 初始化的第一批东西之一,这意味着你不能在配置文件中使用 TranslatorUrlGenerator

    我不知道您要做什么,但您不需要在配置文件中使用 Translator...

    【讨论】:

      【解决方案5】:

      你不能在 Laravel 配置文件中不使用 trans 或 route 方法。在加载配置文件时,这些方法无法运行。另外,配置文件的目的是存储纯值,我们不应该在配置文件中触发任何动作。

      我知道有时您想将内容放入配置文件中,其中包含从路由生成的动态数据或来自语言键的文本。在我的用例中是:在配置文件中配置菜单结构。在这种情况下,您应该选择以下方法:仅存储翻译键和一个数组,其中包含您可以在运行时生成 URL 的信息。

      我把我的gist 放在这里,让你看看方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-27
        • 2014-11-22
        • 2021-03-20
        • 1970-01-01
        相关资源
        最近更新 更多