我不知道为什么LaravelLocalization无法转换我使用nwidart laravel-modules软件包为laravel创建的模块的route.php(Modules / ModuleName / Http / routes.php)文件中声明的路由。 ,如here中所述,应用程序的Kernel.php和路由组中也存在“本地化”(\ Mcamara \ LaravelLocalization \ Middleware \ LaravelLocalizationRoutes :: class)中间件。该路线未翻译,显示为/en/booking::all.companies.index而不是/ en / companies(或/ ru / kompanii):
Route::group(
[
'prefix' => LaravelLocalization::setLocale(),
'middleware' => ['web', 'auth', 'localize', 'optimizeImages'],
'namespace' => 'Modules\Booking\Http\Controllers',
],
function() {
Route::get(LaravelLocalization::transRoute('booking::all.companies.index'), 'CompanyController@index')->name('booking.companies.index');
});
但是当从翻译字符串(LaravelLocalization :: transRoute('all.companies.index')而不是LaravelLocalization :: transRoute('booking :: all.companies.index')中删除模块名称空间前缀“ booking ::”时),它可以翻译路线。
谢谢,请帮助我解决问题。
(我的安装是否有帮助:Laravel Framework 5.5.43,“ mcamara / laravel-localization”:“ 1.3”,“ nwidart / laravel-modules”:“ 2.7”。除了mcamara / laravel外,未安装其他本地化软件包-本地化)
答案 0 :(得分:3)
我遇到了同样的问题,但没有在线找到解决方案。这是我解决问题的方法:
在Modules\[MyModule]\Providers\RouteServiceProvider
中:
/**
* Register translations.
*
* @return void
*/
protected function registerTranslations()
{
$module_path = 'MyModule';
$module_slug = 'my-module';
$langPath = resource_path('lang/modules/'.$module_slug);
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, $module_slug);
} else {
$this->loadTranslationsFrom(module_path(module_path, 'Resources/lang'),$module_slug);
}
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->registerTranslations();
$this->mapApiRoutes();
$this->mapWebRoutes();
}