如何解决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
中解析。但是,我面临两个问题。
-
当我从包中发布语言文件时,文件夹被称为
mailcoach
而不是laravel-mailcoach
。但是,我(同时)尝试了这两种方法,但都没有加载我的语言文件。这怎么可能? -
我想加载
.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-mailcoach
或 resources/lang/vendor/mailcoach
文件夹中的文件,而是原始文件。>
谁能解释一下为什么会发生这种情况,而不是正在加载 resources/lang/vendor
下的文件?
有趣的是,当我将 $this->loadJsonTranslationsFrom(resource_path() . '/lang/vendor/mailcoach');
行添加到我的 boot
中的 AppServiceProvider
函数时,上面的 jsonPaths
数组又多了一个项目 {{1 }} 这是正确的。
然后我的自定义语言文件也在使用,但原始文件仍在加载。这怎么可能?
此外,我想知道为什么我什至必须注册我的自定义语言文件?这不是正常行为...我想找到错误/问题。
亲切的问候
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。