Laravel本地化 [英] Laravel localization

查看:90
本文介绍了Laravel本地化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对Laravel的本地化系统感到疯狂,但是我不知道我的代码有什么问题.

I'm going crazy with Laravel's localization system, but I don't know what's wrong with my code.

我刚刚写了一个语言选择器,在文档的开头,您将看到一个用于获取浏览器默认语言的函数,该函数将获取默认语言.

I just wrote a language-chooser, in the Head of the document you'll see a function to get the Browser-default language, which shall get the default language.

语言模板默认保存在/resources/lang/*language*/messages.php-files.

我真的需要您的帮助,因为我看不到任何错误.

I really need your help, because I can't see any errors.

<html>
  <head>

  <?php

    //get Browser default language
    $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
    App::setlocale($lang);

  ?>

</head>
<body>

    <div class="container">
        @yield('content')
            <div class="well text-center">
                <h1><?php echo trans('Welcome') ?></h1>
            </div>
        @section('content.welcome')
            <div class="row text-center">
                <a href="<?php App::setlocale("de") ?>">Deutsch</a>
                <label>  |  </label>
                <a href="<?php App::setlocale("en") ?>">English</a>
                <label>  |  </label>
                <a href="<?php App::setlocale("it") ?>">Italiano</a>
                <label>  |  </label>
                <a href="<?php App::setlocale("es") ?>">Español</a>
                <label>  |  </label>
                <a href="<?php App::setlocale("fr") ?>">Français</a>
                <label>  |  </label>
                <a href="<?php App::setlocale("jp") ?>">日本人</a>
                <label>  |  </label>
                <a href="<?php App::setlocale("ru") ?>">Pусский</a>
            </div>
        @show
    </div>

    @section('footer')

        <nav>
            <a href="#"> &copy; <?php echo date("Y"); ?></a>
            <ul >
                <li >
                    <a href="#"><?php echo trans('Contact') ?></a>
                </li>

            </ul>
        </nav>

    @show

</body>

推荐答案

据我了解,您需要修改当前的方法.因此,这是您可以用于项目的示例.

As per my understand, you need to modify your current approach. So, here is the example you can utilize for project.

.Env

APP_LOCALE=en

config/app.php

'locale' => env('APP_LOCALE', 'en'),

HTML

<ul class="dropdown-menu" role="menu">
    <li>{!! link_to('lang/en', trans('menus.language-picker.langs.en')) !!}</li>
    <li>{!! link_to('lang/es', trans('menus.language-picker.langs.es')) !!}</li>
    <li>{!! link_to('lang/fr-FR', trans('menus.language-picker.langs.fr-FR')) !!}</li>
    <li>{!! link_to('lang/it', trans('menus.language-picker.langs.it')) !!}</li>
    <li>{!! link_to('lang/pt-BR', trans('menus.language-picker.langs.pt-BR')) !!}</li>
    <li>{!! link_to('lang/ru', trans('menus.language-picker.langs.ru')) !!}</li>
    <li>{!! link_to('lang/sv', trans('menus.language-picker.langs.sv')) !!}</li>
</ul>

路线

get('lang/{lang}', 'LanguageController@languageRoute');

LanguageController

namespace App\Http\Controllers;

class LanguageController extends Controller
{
    function languageRoute($lang)
    {
        session()->put('locale', $lang);
        return redirect()->back();
    }
}

LocaleMiddleware

namespace App\Http\Middleware;
use Closure;
class LocaleMiddleware
{
    protected $languages = ['en', 'es', 'fr-FR', 'it', 'pt-BR', 'ru', 'sv'];
    public function handle($request, Closure $next)
    {
        if(session()->has('locale') && in_array(session()->get('locale'), $this->languages))
        {
            app()->setLocale(session()->get('locale'));
        }
        return $next($request);
    }
}

将中间件添加到kernel.php

最后,我的lang文件夹看起来像

And Finally , my lang folder looks like

en
es
fr-FR
it
pt-BR
ru
sv

每个文件夹包含:

alerts.php  
auth.php    
crud.php    
labels.php  
menus.php   
navs.php    
pagination.php
passwords.php
roles.php   
strings.php 
validation.php

希望,此示例对您有很大帮助,但是,这只是一个示例,您仍然可以根据需要进行更新.如果仍然感到困惑,请告诉我,我将尝试更详细地更新问题.

Hope, this example help you much, but however it's just a example still you can update as per your requirement. If still something confused please let me know, I will try to update question in further detail.

这篇关于Laravel本地化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆