RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 566488
Accepted
vellmur
vellmur
Asked:2020-09-15 16:10:17 +0000 UTC2020-09-15 16:10:17 +0000 UTC 2020-09-15 16:10:17 +0000 UTC

Laravel 5 本地化 - 使用中间件的应用程序

  • 772

我正在开发一个本地化为不同语言的博客。根据其中一个教程,我是在中介 - 中间件的帮助下完成的。一切正常,但存在几个问题。
首先,更改语言时,每次都重定向到主页,但我想留在同一个页面上。
其次,主页看起来像这样:localost:8000/en 因为英语是默认语言。但我不确定这是否对 seo 有好处。如果是英文,那么idea应该是localost:8000。试图通过session解决,但是session不记得变量。这是我们目前的代码:

<?php 

namespace App\Http\Middleware;

use Closure;
use Illuminate\Routing\Redirector;
use Illuminate\Http\Request;
use Illuminate\Foundation\Application;
use Illuminate\Contracts\Routing\Middleware;
use Illuminate\Support\Facades\URL;

class Language implements Middleware {

    public function __construct(Application $app, Redirector $redirector, Request $request)
    {
        $this->app = $app;
        $this->redirector = $redirector;
        $this->request = $request;
    }

    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // Make sure the current local exists
        $locale = $request->segment(1);

        // If the locale is added to to skip_locales array continue without locale
        if (in_array($locale, $this->app->config->get('app.skip_locales'))) {
            return $next($request);
        } 
        else 
        {
            // If the locale does not exist in the locales array continue with the fallback_locale
            if (!array_key_exists($locale, $this->app->config->get('app.locales'))) {

                $segments = $request->segments();
                array_unshift($segments, $this->app->config->get('app.fallback_locale'));
                return $this->redirector->to(implode('/', $segments));
                }
            }

    if (!$locale) $locale = $this->app->config->get('app.fallback_locale');

    $this->app->setLocale($locale);

    return $next($request);
}    

如何解决这些问题?

laravel
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. astratyandmitry
    2020-10-07T11:08:37Z2020-10-07T11:08:37Z
      <?php 
    
      namespace App\Http\Middleware;
    
      class Language implements Middleware {
    
          public function __construct(Application $app, Request $request)
          {
              $this->app = $app;
              $this->request = $request;
          }
    
          public function handle($request, Closure $next)
          {
            $fallback_locale = $this->app->config->get('app.fallback_locale');
            $locale = $request->segment(1, $fallback_locale);
    
            if (in_array($locale, $this->app->config->get('app.skip_locales'))) {
              return $next($request);
            } else {
              if (!array_key_exists($locale, $this->app->config->get('app.locales'))) {
                  $segments = $request->segments();
    
                  array_unshift($segments, $fallback_locale);
    
                  return redirect()->back();
              }
            }
    
            $this->app->setLocale($locale);
    
            return $next($request);
          } 
      }
    
    • 3
  2. Best Answer
    FanG
    2020-10-07T18:36:44Z2020-10-07T18:36:44Z

    解决您的问题。 https://habrahabr.ru/post/264435/

    所选语言存储在会话中。默认情况下,采用配置中设置的语言。通过转到用户被重定向回的页面进行切换。

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5