Laravel Voyager:文章与页面翻译失效,阿拉伯语内容无法正常保存
问题分析与解决办法
看起来你遇到的核心问题是阿拉伯语正文内容没有被正确提交到后端——从你提供的请求数据里能明显看到body_i18n的阿拉伯语值是空字符串{"ar":""},这就解释了为什么保存后只会得到<p> </p>这种空内容。下面是几个最可能的原因和对应的解决步骤:
1. RTL语言配置未正确设置
阿拉伯语是**从右到左(RTL)**的语言,但你的voyager.php配置里rtl被设为false,这会导致Voyager的编辑器无法适配RTL布局,进而可能无法正确捕获输入的内容。
解决办法:
修改config/voyager.php中的多语言配置,将rtl改为true:
'multilingual' => [ /* * Set whether or not the multilingual is supported by the BREAD input. */ 'bread' => true, /* * Set whether or not the multilingual is supported by the BREAD input. */ 'enabled' => true, /* * Set whether or not the admin layout default is RTL. */ 'rtl' => true, // 这里改为true /* * Select default language */ 'default' => 'en', /* * Select languages that are supported. */ 'locales' => [ 'en', 'ar', ], ],
修改后记得清除配置缓存:
php artisan config:clear
2. 前端编辑器未正确绑定阿拉伯语字段
切换到阿拉伯语标签时,编辑器可能没有正确初始化,或者存在JS冲突导致输入的内容无法被表单捕获。
解决办法:
- 打开浏览器开发者工具(按下F12),切换到Console标签,查看是否有编辑器初始化失败的JS错误;
- 切换到阿拉伯语标签并输入内容后,打开Network标签,重新提交表单,查看POST请求的
Form Data里body_i18n的阿拉伯语值是否已正确包含输入内容。如果还是空的,需要检查BREAD配置:- 进入Voyager后台的BREAD管理页面;
- 找到对应的Posts模型,确认
body字段的Multilingual选项已开启; - 确认
body字段的类型是Rich Text(编辑器类型),而非其他字段类型。
3. 编辑器本身不支持RTL输入
Voyager默认使用的TinyMCE编辑器可能需要额外配置才能支持RTL语言的输入。
解决办法:
如果修改RTL配置后问题仍存在,可以尝试给编辑器添加RTL方向配置。在config/voyager.php的editor部分添加:
'editor' => [ 'options' => [ 'directionality' => 'rtl', 'plugins' => 'directionality', // 确保加载方向插件 'toolbar' => '... directionality ...', // 在工具栏添加方向切换按钮 ], ],
如果需要更灵活的语言适配(比如根据当前语言自动切换LTR/RTL),可以自定义Voyager的视图文件,在切换语言标签时动态修改编辑器的directionality参数。
内容的提问来源于stack exchange,提问作者Alaa M. Jaddou
相关产品推荐
相关产品推荐

