laravel实现于语言包的完美切换方法

2025-05-27 0 25

需要引入:

use Illuminate\\Support\\Facades\\Session;

use Illuminate\\Support\\Facades\\App;

前言:

App::getLocale();获取当前语言

App::setLocale();设置语言配置文件

语言配置文件config/app.php

locale 是默认语言,fallback_locale为备用语言

语言字符串存放在resources/lang目录中,Blade模板引擎打印语言行{{ trans('messages.welcome') }}

思路是把当前的语言设定存在Session里头,然后再写个Middleware去截Http请求,在截住的请求里用Session里的语言设定值来设Locale。

1.创建中间件

在Mideleware中创建一个名为language.php的中间件如下:

2、中间键创建完成后需要进行注册中间才能使用哦接下来我们进行注册language中间键进行注册,如果还是有不懂的小伙伴可以参考一下官网

http://laravelacademy.org/post/57.html,中间件详解,这块比较重要:

8在app下面找到Http/Kernel.php,编辑该文件 找到如下:

?

1

2

3

4

5

6

7

8

9
protected $middlewareGroups = [

'web' => [

\\App\\Http\\Middleware\\EncryptCookies::class,

\\Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse::class,

\\Illuminate\\Session\\Middleware\\StartSession::class,

\\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class,

\\App\\Http\\Middleware\\VerifyCsrfToken::class,

\\App\\Http\\Middleware\\Language::class, //语言包中间件注册。

],

3、接下来我们开始书写路由了:Route::get('demos','IndexController@ins');

4、通过路由访问对应的控制器接下来我们创建一个控制器IndexController

思路:前端页面通过下拉菜单获取当前用户选择的语言包是英文还是简体。通过ajax请求到当前控制器,把通过setLocale进行设置,把语言包存入到session中进行返回。返回的同时进行刷新页面

?

1

2

3
use Illuminate\\Support\\Facades\\Session;

use Illuminate\\Support\\Facades\\App;

use Illuminate\\Http\\Response;

?

1

2

3

4

5

6

7
public function ins(Request $request){

if($request->ajax()){

$data = $request->all();

App::setLocale($data['language']);

$res = $request->session()->put('language',$data['language']);

return $this->returnCode(200,'',$res);

}else{

?

1

2
//刷新后页面,再去获取语言包

$rr = App::getLocale();

?

1

2

3

4
//写入自己的逻辑存把信息返回到页面中区

return view('welcome')->with('lan',$rr);

}

}

5、接下来我们开始编写前端的代码:在我们直接一welcome页面为例子:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37
<div class="container">

<div class="content">

<!--<div class="title"><a href="/demo/zh_cn" rel="external nofollow" >{{ trans('welcome.message') }}</a></div>-->

<select οnchange="changelanguage(this.value)">

<option value="en">

@if(App::getLocale() =='en')

selected

@else

@endif

English

</option>

<option value='zh_cn'@if(App::getLocale() == 'zh_cn') selected @else @endif>简体中文</option>>

<div>{{trans('welcome.message')}}{{$lan}}</div>

</select>

</div>

<script src="{{asset('public/home/js/jquery.min.js')}}"></script>

<script>

function changelanguage(val){

$.ajax({

type :'get',

url :'demos',

data:{

language :val

},

dataType :'json',

success:function(res){

if(res){

window.location.reload();

}

}

})

}

</script>

</body>

中英文切换完成。我这边在做语言包数据切换时,在后台是直接切换中英数据库来实现数据的切换。这样看起来不是那么的乱。如果亲们还有什么好的方法一定留言

以上这篇laravel实现于语言包的完美切换方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

原文链接:https://blog.csdn.net/chen529834149/article/details/77504335

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 laravel实现于语言包的完美切换方法 https://www.kuaiidc.com/71472.html

相关文章

发表评论
暂无评论