LaravelLocalization无法转换nwidart laravel模块的路由

时间:2019-01-19 17:20:37

标签: php module laravel-5.5 laravel-routing

我不知道为什么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外,未安装其他本地化软件包-本地化)

1 个答案:

答案 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();
}