Laravel 后台如何返回国际化的消息
使用 Blade 适合,国际化很容易使用。
首先App::setLocale('zh')
,
再使用@lang('message.hello')
就很容易让消息国际化了。
可是在文档中,却没有找到后台可以使用的方法。
而我又在做的是 API 服务器。又需要这些功能。
1. 发现问题,寻找思路
@lang()
也是一个方法,只不过它是 Blade 的语法,最终会被翻译成 php 的语法。
那就让我们来看看它翻译后是什么样子。到底是哪个类调用了哪个方法。
-
随便找一个 blade 文件,在随便一个地方写上
@lang()
,这里一定要为空,不传任何参数,让它报错,这也我们才能看到错误日志,快速便捷定位它调用的是哪个类中的哪个方法。 -
运行这个 blade 文件,我们会看到如下图
我可以看到,
@lang()
被解析后,实际上调用的是Illuminate\Translation\Translator::getFromJson()
,调用方法是app('translator')->getFromJson()
。 -
创建一个测试
Controller
并调用刚刚的方法试一下。<?php namespace App\Http\Controllers use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Translation\Translator; class TestController extends Controller { public function __invoke(Request $request) { $message = app('translator')->getFromJson("messages.welcome"); return view('welcome', $message); } }
再运行一个这个 welcome.blade.php 文件。
-
大功告成!完结撒花~
本作品采用《CC 协议》,转载必须注明作者和本文链接