php laravel本地化显示选定的标志

nfg76nw0  于 2023-06-04  发布在  PHP
关注(0)|答案(1)|浏览(116)

我试图弄清楚如何改变所选语言的标志。
在我的语言文件中,我有语言的翻译:

'english-short' => 'gb',
  'arabic-short' => 'ar',
  'french-short' => 'fr',
  'russian-short' => 'ru',
  'spanish-short' => 'es',

在我有语言开关的标题中,我有代码:

@if($locale == 'ar')
{{ trans('header.arabic-short') }}
@elseif($locale == 'ru')
{{ trans('header.russian-short') }}
@elseif($locale == 'fr')
{{ trans('header.french-short') }}                              
@elseif($locale == 'sp')
{{ trans('header.spanish-short') }}
@else                          
{{ trans('header.english-short') }}
@endif

现在我有这个要展示:<span class="flag-icon-1 flag-icon-{{$locale}}"></span>
但是我如何将span添加到if代码中。现在我有双GB(英语)的网页上。
我试过这个:

<span class="flag-icon-1 flag-icon-@if($locale == 'ar')
    {{ trans('header.arabic-short') }}
    @elseif($locale == 'ru')
    {{ trans('header.russian-short') }}
    @elseif($locale == 'fr')
    {{ trans('header.french-short') }}                              
    @elseif($locale == 'sp')
    {{ trans('header.spanish-short') }}
    @else                          
    {{ trans('header.english-short') }}
@endif
</span>

但运气不好。

**更新:**我在commoncontroller.php中有

public function lang(){
         $locale = session()->get('locale');
        if($locale){
             return $locale;
           }else{
             return $locale = 'en';
        }
    }

当我选择特定的语言时,我想我有:

<a href="{{url('lang/en')}}">
                <span class="flag-icon-1 flag-icon-en"></span>
                <span class="name">English</span>
            </a>

正如我说的,我现在看到2种语言,我只想看到一个与flags.

它是@if($locale == 'ar')显示GB文本。

bnl4lu3b

bnl4lu3b1#

你是从控制器还是其他地方传入locale的吗?我使用过Laravel 8和9,大多数情况下不确定$locale是否可以通过这种方式访问。但是,您可以使用以下命令获取当前的locale:

app()->getLocale()

其次,您需要有一个中间件,当更改时,它将更新应用程序的语言环境。否则,无论你做什么,locale都不会改变。

相关问题