生产环境本地化失效(本地正常):仅显示翻译键而非译文
Laravel生产环境翻译失效,仅显示翻译键
我使用en.json文件实现翻译功能,本地环境可正常展示译文,但部署到生产服务器后,页面仅显示翻译键,无法渲染出对应译文。已尝试以下操作:
echo App::getLocale()(返回正确值"en")php artisan config:cachephp artisan config:clearphp artisan cache:clearphp artisan optimize:clearcomposer dump-autoload
排查与解决方案
1. 验证翻译文件的存在性与权限
- 确认生产服务器上
resources/lang/en.json文件存在,且文件名无大小写错误(Linux系统区分大小写)。 - 调整文件权限为
644、目录权限为755,确保PHP进程具备读取该文件的权限。
2. 清除视图缓存
生产环境的视图缓存可能导致翻译未更新,执行以下命令:
php artisan view:clear
3. 检查JSON文件语法与键的一致性
- 校验
en.json的语法合法性,避免遗漏逗号、引号不匹配等问题。 - 确保代码中调用的翻译键(如
__('welcome.title'))与JSON文件中的键完全一致,包括大小写、特殊字符。
4. 重置配置缓存
手动删除缓存文件后重新生成配置缓存:
rm bootstrap/cache/config.php php artisan config:cache
5. 确认翻译调用语法
JSON格式的翻译文件需使用__('翻译键')(PHP代码中)或@lang('翻译键')(Blade模板中)的调用方式,不要混用数组式翻译的语法(如trans('messages.welcome'))。
6. 检查环境变量设置
确认生产环境.env文件中APP_LOCALE值为en,且无其他覆盖语言配置的环境变量。
内容的提问来源于stack exchange,提问作者Giacomo M
相关产品推荐
相关产品推荐

