-1

我在为如何正确使用 laravel 的自定义包正确使用本地化而苦恼?
$this->loadTranslationsFrom(__DIR__ . '/../../resources/lang', 'package_lang');不让我访问我的视图中的嵌套翻译文件(刀片模板)。

我的文件夹结构

foo-package/
├── resources/
│   ├── lang/
│   │   ├── de/
│   │   │   └── subs/
│   │   │       ├── fields.php
│   │   │       └── general.php
│   │   └── en/
│   │       └── subs/
│   │           ├── fields.php
│   │           └── general.php
│   └── views/
│           └── subs/
│               ├── create.php
│               └── edit.php
└── src/
    └── Providers/
        └── PackageProvider.php

在我看来,我尝试像这样访问它:

<label>{{ __('package_lang::subs/fields.name_of_subs') }}</label>

或者

<button type="submit">{{ __('package_lang::subs/fields.create_sub') }}</button>

导致返回翻译字符串键。

ServiceProvider 已加载到我的app.php配置中,其中我也设置了正确的语言环境(调试栏证明了这一点)。试过了composer dump-autoload,但没有成功。
如果我使用 laravel 的标准项目文件夹,我只会让它工作project/resources/lang,这会阻止我使用我喜欢的命名空间package_lang::并使我的包准备好进行本地化。

我的服务提供商

namespace FooPackage\Providers;

use Illuminate\Routing\Router;
use Illuminate\Support\ServiceProvider;

class PackageServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        $this->loadMigrationsFrom(__DIR__ . '/../../database/migrations');
        $this->loadViewsFrom(__DIR__.'/../../resources/views', 'package_views');
        $this->loadTranslationsFrom(__DIR__.'/../../resources/lang', 'package_lang');
    }
}

知道如何解决吗?

编辑:

我有多个遵循此文件夹结构的包。

4

1 回答 1

1

好吧,没关系,《华盛顿邮报》漏掉了一个要点。
涉及多个自定义包,它们使用相同的命名空间package_lang,这会导致问题。

无论出于何种原因,$this->loadTranslationsFrom(__DIR__ . '/../../resources/lang', 'package_lang');必须唯一定义第二个命名空间参数!
改变这个可以解决问题。

附带说明:但是,上述规则不适用于$this->loadViewsFrom(__DIR__.'/../../resources/views', 'package_views');多个包可以具有相同命名空间的情况。

于 2018-01-15T21:49:32.180 回答