2016-06-12 16 views
0

laravelの大文字小文字をtransステートメントに対して非対象にすることはできますか?例えばActionactionの両方に同じ翻訳された用語を返す:Laravel大文字小文字を区別しないローカライゼーション

lang/trans_form.php 

return [ 
'Action' => 'اقدامات', 

//I'm not happy with writing this one,it would be better if laravel do it itself! 
'action' => 'اقدامات', 
] 

答えて

2

あなたはTranslatorクラスを拡張し、別の拡張TranslationServiceProviderクラス内でそれを使用することができます。

私たちはapp/Extendedフォルダに保存します。

下記のような拡張トランスレータクラスを作成します。キーを小文字に変更して親に渡してください。

<?php 

namespace App\Extended; 

use Illuminate\Translation\Translator; 

class ExtendedTranslator extends Translator 
{ 
    public function get($key, array $replace = [], $locale = null, $fallback = true) 
    { 
     $key = mb_strtolower($key); 
     return parent::get($key, $replace, $locale, $fallback); 
    } 
} 

続いて、最後に

<?php 

namespace App\Extended; 

use Illuminate\Translation\TranslationServiceProvider; 

class ExtendedTranslationServiceProvider extends TranslationServiceProvider 
{ 
    public function register() 
    { 
     $this->registerLoader(); 
     $this->app->singleton('translator', function ($app) { 
      $loader = $app['translation.loader']; 
      $locale = $app['config']['app.locale']; 
      $trans = new ExtendedTranslator($loader, $locale); 
      $trans->setFallback($app['config']['app.fallback_locale']); 
      return $trans; 
     }); 
    } 
} 

、拡張TranslationServiceProvider以内に新しく作成した拡張翻訳クラスを使用し、拡張ExtendedTranslationServiceProvider代わりのconfig/app.php内のオリジナルのものを登録します。

'providers' => [ 
    // Illuminate\Translation\TranslationServiceProvider::class, 
    App\Extended\ExtendedTranslationServiceProvider::class, 
] 
関連する問題