Laravel:未为包

问题描述

我正在使用 spatie 的 mailcoach 包来托管我自己的电子邮件营销。但是,我想编辑语言文件。关于 Laravel docs 这可以通过以下方式完成:

因此,例如,如果您需要覆盖英文翻译 一个名为 skyrim/hearthfire 的包的 messages.PHP 中的字符串,你 应该将语言文件放在: 资源/lang/vendor/hearthfire/en/messages.PHP

因此,在我的情况下,该包称为 spatie/laravel-mailcoach,它将在 resources/lang/vendor/laravel-mailcoach/de/messages.PHP 中解析。但是,我面临两个问题。

  1. 当我从包中发布语言文件时,文件夹被称为 mailcoach 而不是 laravel-mailcoach。但是,我(同时)尝试了这两种方法,但都没有加载我的语言文件。这怎么可能?

  2. 我想加载 .json 文件而不是 .PHP 文件。我假设它会按上述方式工作。这意味着正确的路径文件将是 resources/lang/vendor/laravel-mailcoach/de.json。这是正确的吗?

如果 2 是正确的,为什么 Laravel 仍然加载错误的语言文件

我深入研究了 Illuminate\Translation\Translator 文件,并为 dd($this) 方法添加一个 get,它将检索给定密钥的正确翻译。我发现的是以下内容

Illuminate\Translation\Translator {#604 ▼
  #loader: Illuminate\Translation\FileLoader {#603 ▼
    #files: Illuminate\Filesystem\Filesystem {#92}
    #path: "Programmieren/MyWebsiteProject/resources/lang"
    #jsonPaths: array:4 [▼
      0 => "Programmieren/MyWebsiteProject/vendor/arcanedev/log-viewer/translations"
      1 => "Programmieren/MyWebsiteProject/vendor/llaski/nova-scheduled-jobs/src/../resources/lang"
      2 => "Programmieren/MyWebsiteProject/resources/lang/vendor/nova-scheduled-jobs"
      3 => "Programmieren/MyWebsiteProject/vendor/spatie/laravel-mailcoach/src/../resources/lang/"
    ]
    #hints: array:3 [▼
      "log-viewer" => "Programmieren/MyWebsiteProject/vendor/arcanedev/log-viewer/translations"
      "NovaScheduledJobs" => "Programmieren/MyWebsiteProject/vendor/llaski/nova-scheduled-jobs/src/../resources/lang"
      "validationRules" => "Programmieren/MyWebsiteProject/vendor/spatie/laravel-validation-rules/src/../resources/lang/"
    ]
  }
  #locale: "de"
  #fallback: "en"
  #loaded: array:1 [▼
    "*" => array:1 [▼
      "*" => array:1 [▼
        "de" => array:403 [▼
        ...
        // my translations
        ...
        ]
      ]
    ]
  ]
  #selector: null
  #parsed: []
}

正如您在 jsonPaths 数组中所见,mailcoach 语言文件不是我的 resources/lang/vendor/laravel-mailcoachresources/lang/vendor/mailcoach 文件夹中的文件,而是原始文件。>

谁能解释一下为什么会发生这种情况,而不是正在加载 resources/lang/vendor 下的文件

有趣的是,当我将 $this->loadJsonTranslationsFrom(resource_path() . '/lang/vendor/mailcoach');添加到我的 boot 中的 AppServiceProvider 函数时,上面的 jsonPaths 数组又多了一个项目 {{1 }} 这是正确的。

然后我的自定义语言文件也在使用,但原始文件仍在加载。这怎么可能?

此外,我想知道为什么我什至必须注册我的自定义语言文件?这不是正常行为...我想找到错误/问题。

亲切的问候

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...