5

有什么方法可以在应用程序的配置文件中插入可翻译的值?

我有一个自定义配置文件,config/fox-reports.php我正在尝试设置一个可翻译的配置值,如下所示:

return [
    'attrs' => [
       'Product' => __('Product Title')
    ]
] 

当我运行时php artisan config:cache,会生成以下错误:

在 Container.php 第 729 行:

  Class translator does not exist
4

2 回答 2

7

您不能__()在配置文件中使用帮助程序,因为它使用Translator类。Laravel 在周期开始时加载配置,此时大多数服务尚未初始化。

于 2017-12-31T15:12:34.823 回答
0

为了完整起见以补充 Alexey 的回答,这样的翻译应该在以后处理。使用默认值设置配置文件,如果不存在翻译,将使用该默认值。

配置/狐狸报告.php

return [
    'attrs' => [
       'Product' => 'Product Title'
    ]
];

然后在您的本地化 JSON 文件中设置翻译键,例如

资源/lang/fr/fr.json

{
    "Product Title": "Titre de produit"
}

在您的控制器或任何地方,您将调用包装config()在翻译函数中:

// not like this:
// $title = config('foxreports.attrs.Product');
// but like this:
$title = __(config('foxreports.attrs.Product'));

如果您需要自动本地化工具检测到默认值,只需将其添加到某处的存根类中,例如

<?php

namespace App\Stubs;

class Localization
{
    public method __construct()
    {
        __('Product Title');
    }
}
于 2021-12-11T20:03:13.533 回答