仅使用Laravel 5

时间:2015-06-08 19:21:22

标签: laravel laravel-5

我想将所有翻译加载到resources/lang/en/messages.phpresources/lang/fr/messages.php

中的平面数组中

我想仅使用trans('key')而不是trans('file.key')

在视图中翻译它们

无论如何要启用此行为?似乎它不是开箱即用的。感谢。

1 个答案:

答案 0 :(得分:0)

了解如何在App \ Providers中首先定义自己的提供程序。让它使用您自己的自定义类。

<?php namespace App\Providers;

use App\Utilities\TranslationUtility;
use Illuminate\Translation\TranslationServiceProvider;

class SimpleTranslationProvider extends TranslationServiceProvider {

/**
 * Register the service provider.
 *
 * @return void
 */
public function register()
{
    $this->registerLoader();

    $this->app->singleton('translator', function($app)
    {
        $loader = $app['translation.loader'];

        $locale = $app['config']['app.locale'];

        $trans = new TranslationUtility($loader, $locale);

        $trans->setFallback($app['config']['app.fallback_locale']);

        return $trans;
    });
}

}

自定义类:

<?php namespace App\Utilities;

use Illuminate\Translation\Translator;

class TranslationUtility extends Translator {

    public function get($key, array $replace = array(), $locale = NULL)
    {
        return parent::get('messages.' . $key);
    }
}

然后在config / app.php中添加您的服务提供商,而不是'Illuminate\Translation\TranslationServiceProvider'