如何在JS中使用/获取Laravel翻译内容?
在Laravel中让JS获取翻译文本的可行方法
你之前直接调用trans()返回的是Laravel的翻译器实例,里面包含大量受保护的属性,自然没法直接转成JS可用的格式。下面是几种靠谱的解决办法:
直接在Blade模板中输出翻译数组
如果你只需要general分组的翻译,直接把整个分组的翻译转成JSON注入到JS里就行:<script> const generalTrans = {!! json_encode(trans('general')) !!}; // 使用示例:console.log(generalTrans.myIdText); </script>这里用
{!! !!}是为了避免Laravel自动转义JSON字符,确保JS能正确解析。全局挂载翻译对象
要是需要在多个JS文件里用这些翻译,可以把它挂载到window对象上,放在你的主布局模板里:<script> window.generalTranslations = {!! json_encode(trans('general')) !!}; </script>之后在任意JS文件里直接用
window.generalTranslations.myIdText就能访问对应翻译。通过API接口动态获取翻译
如果需要按需加载翻译或者涉及多语言切换,可以写个简单的路由返回翻译JSON:- 先在
routes/web.php里添加路由:Route::get('/api/translations/{group}', function ($group) { return response()->json(trans($group)); })->middleware('web'); - 然后在JS里用
fetch请求:fetch('/api/translations/general') .then(res => res.json()) .then(translations => { console.log(translations.myIdText); // 在这里使用翻译数据 });
- 先在
注意:如果修改了翻译文件后没生效,记得执行php artisan cache:clear和php artisan config:clear清理缓存。
内容的提问来源于stack exchange,提问作者yarek
相关产品推荐
相关产品推荐

