【问题标题】:Laravel case insensitive localizationLaravel 不区分大小写的本地化
【发布时间】:2016-06-12 15:13:58
【问题描述】:

是否可以使 laravel 对 trans 语句不区分大小写?例如,为 Actionaction 返回相同的翻译术语:

  lang/trans_form.php 

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

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

【问题讨论】:

    标签: php localization internationalization laravel-5.2


    【解决方案1】:

    您可以扩展 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 中使用我们新创建的扩展 Translator 类,

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

    最后,在config/app.php 中注册扩展的ExtendedTranslationServiceProvider 而不是原来的。

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

    【讨论】:

    • 你好,laravel 怎么知道它必须使用这个类而不是默认类?例如,我们不应该将它与某个接口绑定吗?...我的意思是,至少在 laravel 6.x 上它不能正常工作
    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 2015-07-05
    • 2014-03-10
    • 1970-01-01
    • 2018-11-05
    • 2020-01-26
    • 2012-12-01
    相关资源
    最近更新 更多