diff --git a/app/config/app.php b/app/config/app.php index 3680bdb4..e671e6c8 100644 --- a/app/config/app.php +++ b/app/config/app.php @@ -145,6 +145,7 @@ return [ 'CachetHQ\Cachet\Providers\RepositoryServiceProvider', 'CachetHQ\Cachet\Providers\RoutingServiceProvider', 'CachetHQ\Cachet\Providers\ViewComposerServiceProvider', + 'CachetHQ\Cachet\Providers\LoadConfigServiceProvider', ], diff --git a/app/config/langs.php b/app/config/langs.php new file mode 100644 index 00000000..a7996cc2 --- /dev/null +++ b/app/config/langs.php @@ -0,0 +1,9 @@ + 'Deutsch', + 'en' => 'English', + 'fr' => 'Français', + 'pt-BR' => 'Portuguese, Brazilian', +]; diff --git a/src/Composers/TimezoneLocaleComposer.php b/src/Composers/TimezoneLocaleComposer.php index 2e0670d8..a9ac5d91 100644 --- a/src/Composers/TimezoneLocaleComposer.php +++ b/src/Composers/TimezoneLocaleComposer.php @@ -4,6 +4,7 @@ namespace CachetHQ\Cachet\Composers; use DateTime; use DateTimeZone; +use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\View; class TimezoneLocaleComposer @@ -17,10 +18,12 @@ class TimezoneLocaleComposer */ public function compose(\Illuminate\View\View $view) { - $langs = array_map(function ($lang) { + $enabledLangs = Config::get('langs'); + + $langs = array_map(function ($lang) use ($enabledLangs) { $locale = basename($lang); - return [$locale => ucwords(locale_get_display_name($locale, $locale))]; + return [$locale => $enabledLangs[$locale]]; }, glob(app_path('lang').'/*')); $langs = call_user_func_array('array_merge', $langs); diff --git a/src/Http/Before/LoadConfigFilter.php b/src/Http/Before/LoadConfigFilter.php deleted file mode 100644 index 6d0dca92..00000000 --- a/src/Http/Before/LoadConfigFilter.php +++ /dev/null @@ -1,31 +0,0 @@ -with('errors', trans('dashboard.settings.edit.failure')); } + Lang::setLocale(Binput::get('app_locale')); + return Redirect::back()->with('success', trans('dashboard.settings.edit.success')); } } diff --git a/src/Providers/LoadConfigServiceProvider.php b/src/Providers/LoadConfigServiceProvider.php new file mode 100644 index 00000000..db4ad363 --- /dev/null +++ b/src/Providers/LoadConfigServiceProvider.php @@ -0,0 +1,40 @@ +app->config->set('app.url', $appDomain ?: $this->app->config->get('app.url')); + $this->app->config->set('app.timezone', $appTimezone ?: $this->app->config->get('app.timezone')); + $this->app->config->set('app.locale', $appLocale ?: $this->app->config->get('app.locale')); + + // Set custom lang. + $this->app->translator->setLocale($appLocale); + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + // + } +} diff --git a/src/Providers/RoutingServiceProvider.php b/src/Providers/RoutingServiceProvider.php index 27bc55f0..7b55e1cd 100644 --- a/src/Providers/RoutingServiceProvider.php +++ b/src/Providers/RoutingServiceProvider.php @@ -41,7 +41,6 @@ class RoutingServiceProvider extends ServiceProvider $this->app->router->filter('csrf', 'CachetHQ\Cachet\Http\Before\CsrfFilter'); // Cachet's before filters - $this->app->router->before('CachetHQ\Cachet\Http\Before\LoadConfigFilter'); $this->app->router->filter('is_setup', 'CachetHQ\Cachet\Http\Before\IsSetupFilter'); $this->app->router->filter('has_setting', 'CachetHQ\Cachet\Http\Before\HasSettingFilter'); $this->app->router->filter('login_throttling', 'CachetHQ\Cachet\Http\Before\LoginThrottlingFilter');