Skip to content
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

Fix for Laravel 9+: support moved language resource path in Laravel 9 #166

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

timvisee
Copy link

@timvisee timvisee commented Feb 15, 2022

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.

@timvisee timvisee changed the title Support moved language resource path in Laravel 9+ Fix for Laravel 9+: support moved language resource path in Laravel 9 Feb 15, 2022
@przemekperon
Copy link

Any chance on merging this one? Without it the package doesn't work with default Laravel 9 install.

@mirkoschmidt
Copy link

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.

@ZejdCicak
Copy link

ZejdCicak commented May 18, 2022

@mirkoschmidt how would you reference another service provider form a service provider? Can you share your solution please?

@mirkoschmidt
Copy link

mirkoschmidt commented May 19, 2022

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
Copy link

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
Copy link

When this can be merged please?

@rmariuzzo
Copy link
Owner

Today, I'm gonna check that one. I will be careful with the versioning too.

@amadeann
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants