跳转到主内容
极星编程网:以代码为星,赴技术山海!

Laravel怎样使用JSON格式语言文件_Laravel JSON翻译文件使用方法【简化】

需调整Laravel翻译加载机制以支持JSON语言文件:注册JsonFileLoader、创建扁平化JSON文件、添加JSON路径、确保调用函数自动识别,并移除同名PHP文件避免冲突。

如果您在Laravel项目中希望使用JSON格式替代传统的PHP数组语言文件进行多语言管理,则需调整框架对翻译加载机制的默认行为。以下是实现该目标的具体步骤:

一、启用JSON语言文件支持

Laravel默认仅加载resources/lang/{locale}.php格式的语言文件,需手动注册JSON文件解析器以识别.

json后缀并正确解析其内容。

1、在app/Providers/AppServiceProvider.php的boot方法中添加Illuminate\Translation\JsonFileLoader实例绑定。

2、调用$translator->getLoader()->addLoader('json', new Illuminate\Translation\JsonFileLoader(app('files')));注册JSON加载器。

3、确保Illuminate\Translation\Translator实例已通过服务容器解析并可被修改。

二、创建JSON语言文件结构

JSON语言文件需遵循标准键值对格式,顶层为扁平化字符串映射,不支持嵌套数组语法,每个locale对应一个独立JSON文件。

1、在resources/lang/en.json路径下新建文件。

2、写入合法JSON内容,例如{"welcome": "Welcome to our application!", "login": "Sign In"}。

3、在resources/lang/zh.json中使用相同键名但不同中文值,如{"welcome": "欢迎使用我们的应用!", "login": "登录"}。

三、配置语言文件加载顺序

Laravel按优先级顺序查找翻译键,需确保JSON文件路径被纳入扫描范围,避免PHP文件覆盖同名JSON键值。

1、在config/app.php中确认'locale'和'fallback_locale'设置正确指向目标语言代码。

Find JSON Path Online Easily find JSON paths within JSON objects using our intuitive Json Path Finder下载2、在AppServiceProvider的boot方法中调用$translator->addJsonPath(resource_path('lang'));添加JSON搜索路径。

3、验证资源路径存在且Web服务器有读取权限,

文件名必须与语言代码完全一致(如en.json、zh.json)

。

四、在视图与代码中调用JSON翻译

启用JSON支持后,trans()、__()等辅助函数将自动识别并返回JSON文件中定义的对应字符串,无需更改调用方式。

1、在Blade模板中使用{{ __('welcome') }}输出欢迎文本。

2、在控制器中调用trans('login')获取登录按钮文字。

3、使用trans_choice()处理带复数形式的键时,

JSON中需显式提供单复数字段或采用Laravel兼容的复数键命名规则。

五、禁用PHP语言文件以避免冲突

若同时存在en.php与en.json且键名重复,Laravel默认优先加载PHP文件,须移除或重命名PHP文件以确保JSON生效。

1、检查resources/lang目录下是否存在同名PHP文件,例如删除en.php与zh.php。

2、运行php artisan config:clear清除配置缓存,防止旧路径残留。

3、

执行php artisan view:clear确保Blade编译器不缓存旧翻译引用。

相关文章