php - 如何在服务提供商的启动方法中从 Laravel 中的多个文件和文件夹中加载翻译?
问题描述
目标
从不同目录中的多个文件加载翻译。
描述
在我的 Laravel 包的 ServiceProvider 中,我可以像这样从一个目录加载所有翻译,它可以工作:
public function boot()
{
$this->loadTranslationsFrom(__DIR__ . '/../resources/lang', 'package-namespace');
}
包的结构是:
- config
- database
- resources
- assets
- lang
- langA
- langB
- views
- routes
- src
- moduleFolderA
- Business
- Controller
- Routes
- moduleFolderB
- Business
- Controller
- Routes
- moduleFolderC
- Business
- Controller
- Routes
- ServiceProvider.php
我想拆分翻译以获得更多的 OOP 方法,并希望在每个模块文件夹中都有一个翻译文件夹。模块文件夹里面是包的逻辑。
- moduleFolderA
- Business
- Controller
- Routes
- Translations
- langA
translationFileA.php
- langB
translationFileA.php
- moduleFolderB
- Business
- Controller
- Routes
- Translations
- langA
translationFileB.php
- langB
translationFileB.php
在 ServiceProvider 的引导方法中,我尝试了类似的方法
foreach (glob(__DIR__ . '/**/Translations/') as $path) {
$this->loadTranslationsFrom($path, 'package-namespace');
}
或者
foreach (glob(__DIR__ . '/**/Translations/') as $path) {
Lang::addNamespace('package-namespace', $path);;
}
问题
只有迭代的最后一个翻译文件可用。
有什么方法可以实现我的目标?
解决方案
在您的AppServiceProvider.php
文件中转到该register
方法,然后添加此
$this->app->bind('path.lang', function() { return base_path().'/vendor/package-name/resources/lang'; });
推荐阅读
- r - shinyjs 不会隐藏使用 renderUI 创建的按钮
- android - 图像宽度在 Android Jetpack Compose 的卡片中显示不正确
- oracle - ORA-00922: 尝试在表中创建列时选项丢失或无效
- .htaccess - 301 从 http 重定向到 https 和非 www 到 www 导致服务器严重减速
- javascript - 你应该如何管理传递给自定义 React 钩子的函数选项?
- python - 多个循环/线路同时
- python - Python lambda 函数用例
- javascript - 如何在 Javascript puppeteer 中选择自动生成类?
- java - 如何为 Spring Boot 应用程序创建 Javadoc?
- r - 错误:“项目“path/to/file.rda”没有激活的脚本,因此无法激活”与 renv