我的自定义软件包的服务提供商在boot()
方法中有以下行:
$this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'name');
$this->publishes([
__DIR__.'/../resources/lang' => resource_path('lang/vendor/name'),
], 'lang');
我运行了php artisan vendor:publish
命令,packages/vendorname/packagename/resources/lang/de.json
文件成功地复制到了项目中。
翻译不起作用。我也试着复制到/lang/vendor/name/
文件夹。
当我手动将我的de.json
文件移动到/lang
时,翻译就开始工作了。到文件本身没有问题。
我已经试过清空所有缓存了。
1条答案
按热度按时间ymdaylpp1#
我不知道为什么,但是,似乎Laravel只是加载主项目的JSON翻译文件和供应商文件夹中的第一个包。
我的解决方案是:
1.要从软件包加载***JSON***翻译文件,必须在软件包的服务提供程序中使用***loadJsonTranslationsFrom***:
1.在您的***JSON***文件***中,您可以使用您的软件包名称作为每个键的前缀***。例如,如果您的软件包名称是***MyPackage***,则您的***en. json***文件如下所示:
1.您可以使用Laravel的一些辅助函数来加载您的翻译密钥:
您可以点击以下链接了解更多信息:
https://laracasts.com/discuss/channels/laravel/loadjsontranslationsfrom-does-not-load-all-json-translation-files
https://github.com/laravel/framework/issues/17923
Laravel 5 loadJsonTranslationsFrom method does not load all JSON translation files from packages
https://github.com/nWidart/laravel-modules/pull/412
https://github.com/laravel/framework/pull/20599