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

前后端交互场景下如何使用Candy Translation处理多语言?

问题描述

以下是我编写的Django控制器方法,我通过Candy Translation从Excel中获取多语言文案并返回JSON数据,前端JavaScript解析该数据后渲染至界面。请问在此场景下应如何正确使用Candy Translation?

def mymethod(request):
    return_obj = {}
    if request.method == 'POST':
        info = request.POST
    try:
        ts_vals, coordinates, name = somefunction(params)
        return_obj["values"] = ts_vals
        return_obj["msg"] = candy.translated(request, "all_msg") # all_msg is from the excel

        return_obj["name"] = name
        return_obj["success"] = "success"
    except Exception as e:
        return_obj["error"] = candy.translated(request, "all_Error")
    return JsonResponse(return_obj)
解决方案

针对你在Django控制器中通过Candy Translation返回多语言文案的场景,可以按照以下方式优化使用:

1. 确保语言上下文正确传递

Candy Translation的translated方法依赖request对象识别当前用户的语言偏好,需确保:

  • 你的Django项目已配置国际化中间件(django.middleware.locale.LocaleMiddleware),且放在SessionMiddleware之后、CommonMiddleware之前,保证request.LANGUAGE_CODE能正确获取用户语言(比如从Accept-Language请求头解析)。
  • 若前端通过URL参数、Cookie等传递语言信息,需确保中间件能正确识别并设置request.LANGUAGE_CODE,这样Candy Translation才能匹配Excel中对应的语言列。

2. 规范Excel翻译文件格式

遵循Candy Translation的约定整理Excel文件:

  • 第一列是文案唯一键名(如all_msg、all_Error),后续列对应不同语言,列名必须用标准语言代码(比如zh-CN、en-US)。
  • 给键名添加业务前缀(如dashboard_all_msg),避免不同模块的文案键名冲突,同时提升可读性。

3. 统一文案管理,避免硬编码

你的代码中success字段直接写死字符串,建议也纳入Candy Translation管理:
在Excel中添加operation_success键及其多语言翻译,将代码中的return_obj["success"] = "success"替换为return_obj["success"] = candy.translated(request, "operation_success"),保持全链路多语言一致性。

4. 优化异常与性能

  • 异常捕获时,添加错误日志记录(如logger.error(f"Data fetch or translation failed: {str(e)}")),方便后续排查问题,同时确保返回的错误文案始终是多语言版本。
  • 若翻译文案不频繁变更,开启Candy Translation的缓存机制,将Excel内容加载到内存中,避免每次请求都读取文件,提升接口响应速度。

5. 处理边界情况

  • 配置全局默认文案:当Excel中不存在目标键名的翻译时,translated方法可能返回键名本身,建议在Candy Translation配置中设置默认文案,或在代码中判断返回值,避免前端显示原始键名。
  • 前端切换语言时,确保重新请求接口时携带正确的语言标识(如请求头、URL参数),让Django中间件能更新request.LANGUAGE_CODE,从而返回对应语言的文案。

内容的提问来源于stack exchange,提问作者Githika Tondapu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:42:35