微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel:未为包

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?