是否有可能使laravel对trans语句不敏感?例如,为Action
和action
返回相同的翻译术语:
lang/trans_form.php
return [
'Action' => 'اقدامات',
//I'm not happy with writing this one,it would be better if laravel do it itself!
'action' => 'اقدامات',
]
答案 0 :(得分:3)
您可以扩展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);
}
}
然后在扩展的TranslationServiceProvider中使用我们新创建的扩展转换器类
<?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;
});
}
}
最后,注册扩展的ExtendedTranslationServiceProvider而不是config/app.php
中的原始扩展。
'providers' => [
// Illuminate\Translation\TranslationServiceProvider::class,
App\Extended\ExtendedTranslationServiceProvider::class,
]