-
Notifications
You must be signed in to change notification settings - Fork 169
Fix for Laravel 9+: support moved language resource path in Laravel 9 #166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
przemekperon
commented
Apr 15, 2022
Any chance on merging this one? Without it the package doesn't work with default Laravel 9 install.
mirkoschmidt
commented
May 12, 2022
I have found an alternative way. Create a service provider which references the Mariuzzo\LaravelJsLocalization\LaravelJsLocalizationServiceProvider and overwrite the register method. Then just add your own service provider to config/app.php and it will work with the new path.
@mirkoschmidt how would you reference another service provider form a service provider? Can you share your solution please?
Under app/Providers I created the following provider "LaravelLangJSServiceProvider" with the following content
<?php
namespace App\Providers;
use Mariuzzo\LaravelJsLocalization\Commands\LangJsCommand;
use Mariuzzo\LaravelJsLocalization\Generators\LangJsGenerator;
use Mariuzzo\LaravelJsLocalization\LaravelJsLocalizationServiceProvider;
class LaravelLangJsServiceProvider extends LaravelJsLocalizationServiceProvider
{
/**
* Register the service provider.
*/
public function register()
{
// Bind the Laravel JS Localization command into the app IOC.
$this->app->singleton('localization.js', function ($app) {
$app = $this->app;
$laravelMajorVersion = (int) $app::VERSION;
$files = $app['files'];
if ($laravelMajorVersion === 4) {
$langs = $app['path.base'].'/app/lang';
} elseif ($laravelMajorVersion >= 5 && $laravelMajorVersion < 9) {
$langs = $app['path.base'].'/resources/lang';
} elseif ($laravelMajorVersion >= 9) {
$langs = app()->langPath();;
}
$messages = $app['config']->get('localization-js.messages');
$generator = new LangJsGenerator($files, $langs, $messages);
return new LangJsCommand($generator);
});
// Bind the Laravel JS Localization command into Laravel Artisan.
$this->commands('localization.js');
}
}
and in config/app.php in the section "providers" i added this at the end
App\Providers\LaravelLangJsServiceProvider::class,
with reference i mean extends.
lphilps
commented
Jul 13, 2022
Any chance of getting this PR merged and another release generated? I just had to go the "override the service provider" route as detailed by @mirkoschmidt to get this to work in Laravel 9.
nasirouwagana
commented
Oct 13, 2022
When this can be merged please?
Today, I'm gonna check that one. I will be careful with the versioning too.
amadeann
commented
Dec 6, 2023
Until this is merged, this command works for default location of lang files in Laravel 9+:
php artisan lang:js --source lang
Uh oh!
There was an error while loading. Please reload this page.
Laravel 9 moves the language directory, breaking the current implementation.
This change uses
app()->langPath()
in Laravel 9+ to dynamically get the language resource path, as recommended per documentation.This should support installations updated from 8 to 9 still using the old path.