美文网首页
laravel5.* 模块化 多语言

laravel5.* 模块化 多语言

作者: 噫那里有条咸鱼 | 来源:发表于2018-10-25 16:27 被阅读24次

laravel的两个多模块扩展

  • caffeinated/modules
    caffeinated/modules是 laravel5 实现多模块开发扩展包,安装完成后可以使用 artisan 命令创建一个独立的 mvc 模块,方便我们快速的构建 laravel 的多模块应用。
    caffeinated/modules要求laravel5.0+

  • nwidart/laravel-modules
    nwidart/laravel-modules至少要求laravel5.4


ps:因为项目原因只能使用laravel5.2,所以这里选用了caffeinated/modules

安装caffeinated/modules扩展

扩展地址:https://packagist.org/packages/caffeinated/modules

composer require caffeinated/modules

注册服务提供者

config/app.config的 providers 配置项中添加:Caffeinated\Modules\ModulesServiceProvider::class,

image.png

注册门面

config/app.config的 alias 配置项中添加:'Module' => Caffeinated\Modules\Facades\Module::class,

image.png

生成模块

比如我们想创建一个测试模块:php artisan make:module test

image.png

ps:如果不明白需要填写的内容一路回车就好

执行后生成的目录:



国际化

  • 路由
<?php
//Test 模块
Route::group(['prefix' => 'Test'], function () {
        Route::group(['middleware' => ['lang']], function () {
            //国际化测试
            Route::post('languageTest', 'TestController@languageTest');
        });
});
  • 语言包
    Modules\test\Resources\Lang\下创建en\langTest.phpzh_ch\langTest.php,内容如下
    image.png
//zh_ch\langTest.php
<?php
return [
    'this_is_english' => '这是英语!',
];
//en\langTest.php
<?php
return [
    'this_is_english' => 'this is English!',
];
  • 控制器
<?php
/**
 * Created by PhpStorm.
 * User: 有梦想的咸鱼
 * Date: 2018/10/25
 * Time: 13:49
 */
namespace App\Modules\Test\Http\Controllers;
use \Illuminate\Http\Request;

class TestController
{
    public function __construct()
    {
    }

    //国际化测试
    public function languageTest(Request $request)
    {
        $lang = $request->lang;
        $data['lang'] = $lang;

        //语言切换-现在由lang中间件完成
        //App::setLocale($lang);

        //加载根目录(Resources\lang\)下的语言包
        //$data['trans'] = trans('langTest.this_is_english');

        //加载模块下的语言包
        $data['trans'] = trans('Test::langTest.this_is_english');

        return response()->json($data);
    }
}
  • 中间件
<?php

namespace App\Modules\Testmodule\Http\Middleware;
use Closure;
use App;

class LangTransMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (isset($request->lang)){
            switch ($request->lang){
                case 'zh_cn':
                    App::setLocale('zh_cn');
                    break;
                default:
                    App::setLocale('en');
            }
        }
        return $next($request);
    }
}
  • 测试返回结果


    image.png

相关文章

  • laravel5.* 模块化 多语言

    laravel的两个多模块扩展 caffeinated/modulescaffeinated/modules是 l...

  • 工程化 -- webpack

    代码链接 概述 工程化包括了自动化 + 模块化 + 性能优化,前端语言较多并且更新频率较快。 当我们面对这么多语言...

  • JDK.1.7

    JDK 1.7 模块化特性--->减少不必要的模块的下载,启动更加快捷 多语言的支持---->虚拟机多多种动态的语...

  • ES6的模块化

    我们知道很多语言都有属于自己的模块化规则,可以按照特定的规则来定义和使用引用模块。但是在ES6之前,js是不支持模...

  • ios应用的多语言支持

    ios应用的多语言支持主要包括应用名称的多语言、字符串的多语言、sotrybard多语言等等要添加多语言,首先需要...

  • 2018-12-29

    H5对接多语言平台 首先,对接多语言平台我们需要将本地的多语言给到多语言平台,但是多语言平台那边识别不了我们本地文...

  • iOS 多语言版本的开发

    iOS 多语言版本的开发 iOS 多语言版本的开发(一) iOS 多语言版本的开发(二)

  • Flutter 多语言&多主题实现

    目录 多语言实现 多主题实现 状态管理 切换多语言 切换多主题 多语言实现 1. AndroidStudio-> ...

  • ES6学习笔记 II

    模块化 注意:模块化需要放到服务器环境使用模块化: 定义模块化如下 export export const a =...

  • iOS开发 - 超强大全自动定位,多语言文件错误

    目录 背景 如何详细定位多语言错误信息 全自动定位多语言错误信息 一、背景 iOS 多语言文件,是APP在需要做国...

网友评论

      本文标题:laravel5.* 模块化 多语言

      本文链接:https://www.haomeiwen.com/subject/pbqctqtx.html