2016-06-12 10 views
0

Ist es möglich, Laravel case-unempfindlich gegen Transformationen zu machen? zum Beispiel gibt das gleiche übersetzte Begriff sowohl für Action und action:Laravel case insensitive localisation

lang/trans_form.php 

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

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

Antwort

2

Sie können die Translator Klasse erweitern und es in der anderen erweitern TranslationServiceProvider Klasse.

Lets sagen, wir werden es in app/Extended Ordner speichern.

Erstellen Sie eine erweiterte Übersetzerklasse wie unten. Ändern Sie den Schlüssel in Kleinbuchstaben und übergeben Sie ihn an das übergeordnete Element.

<?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); 
    } 
} 

Dann sind unsere neu geschaffenen erweiterten Übersetzer Klasse innerhalb der erweiterten TranslationServiceProvider verwenden,

<?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; 
     }); 
    } 
} 

Schließlich registrieren die erweiterte ExtendedTranslationServiceProvider anstelle des ursprünglichen innerhalb der config/app.php.

'providers' => [ 
    // Illuminate\Translation\TranslationServiceProvider::class, 
    App\Extended\ExtendedTranslationServiceProvider::class, 
]