You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅删除当前语言下的实体翻译条目?

解决方案:仅删除当前语言的翻译条目

默认的列表删除操作通常是直接删除主实体,进而触发关联删除所有语言的翻译表条目。要实现仅删除当前语言对应的翻译,需要调整删除逻辑,区分「删除主实体(含所有翻译)」和「单独删除当前语言翻译」两种操作,具体实现如下:

1. 调整前端列表的删除交互

  • 替换原有的删除按钮逻辑,新增「删除当前语言翻译」的专属操作按钮(或给原删除按钮增加二次确认选项,让用户选择是删所有还是仅当前语言)。
  • 触发删除时,同时传递两个核心参数:目标实体的ID,以及当前界面的语言标识(比如EN/NL)。

2. 后端修改删除接口逻辑

  • 新增专门处理单语言翻译删除的接口,接收entity_id和language_code参数,直接操作翻译表,精准删除对应条目:
// 示例PHP后端逻辑
public function deleteSingleTranslation(Request $request) {
    $entityId = $request->input('entity_id');
    $langCode = $request->input('language_code');
    
    // 仅删除指定实体的当前语言翻译
    Translation::where('entity_id', $entityId)
               ->where('language_code', $langCode)
               ->delete();
    
    // 可选:如果该实体已无任何语言翻译,自动删除主实体
    $remainingTrans = Translation::where('entity_id', $entityId)->count();
    if ($remainingTrans === 0) {
        Entity::find($entityId)->delete();
    }
    
    return response()->json(['status' => 'success']);
}

3. 前端状态同步

  • 删除成功后,刷新当前语言的列表视图,确保已删除的条目不再显示;切换到其他语言时,该实体的对应翻译仍会正常展示(如果存在的话)。
  • 操作前增加确认弹窗,避免误删操作。

注意事项

  • 确保权限控制:只有拥有翻译编辑权限的用户才能执行此操作。
  • 如果基于成熟CMS/框架开发(如Sylius、Shopware),可直接重写对应实体的删除事件钩子,无需完全自定义接口。

内容的提问来源于stack exchange,提问作者Jacky Raimond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:33:19