设计一个i18n使用的库,轻松实现多语言|欢迎star

1,247 阅读1分钟

1 码云仓库地址,欢迎star

码云仓库地址: gitee.com/mtoooo/i18n

1.1 克隆仓库
# clone 仓库
git clone https://gitee.com/mtoooo/i18n.git

2 使用教程

2.1 将i18n_settings.py文件放到工程配置文件夹下

2.2 配置多语言选项
  • 配置语言列表(i18n_settings.py中默认语言的值为0)

  • i18n_settings.py

# 语言编号
language_code = {
    "en": 0,  # 默认语言
    "中文": 1,
    "阿拉伯语": 2
}

language_code是一个dict的数据,值代表语言名,后面的数字下面会用到,代表translate_word列表中的位置。例如"en" = 0 # 代表系统语言默认是英语,在translate_word列表中是0号位。

  • 配置译文
  • i18n_settings.py
translate_word = [
    {  # 英文译文
        "word1": "word1",
        "excel1": "excel1",
    },
    {  # 中文译文
        "word1": "文本一",
        "excel1": "表格一",
    },
    {  # 阿拉伯语译文
        "word1": " الجدول الأول",
        "excel1": " ون بن يي",
    }
]

translate_word 是一个列表,代表不同语言的译文,language_code的value也就是这个列表的编号。例如translate_word[0],根据language_code中"en" = 0,所以translate_word[0]代表英语。

2.3 多语言函数
  • i18n_script.py
def language(method, value):
    if method == "get":
        return translate_word[language_code[value]]
    if method == "put":
        return translate_word[language_code[value]]
    else:
        return translate_word[0]
2.4 接口调用
  • 根据用户设置,接口response对应语言信息
  • view.py
@csrf_exempt
def language_view(request):
	# method = request.get("method")  # 伪代码获取用户请求方式
	# value = session.get("language")  # 伪代码获取当前语言
    method = "get"
    value = "en"
    result = language(method, value)
    
    return HttpResponse(content=result)
  • 用户更改语言,更正
@csrf_exempt
def language_view(request):
	# method = request.get("method")  # 伪代码获取用户请求方式
	# value = session.get("language")  # 伪代码获取当前语言
    method = "put"
    value = "阿拉伯语"
    set_session["language"] = "阿拉伯语"  # 状态保持,同步更新session内容
    result = language(method, value)
    
    return HttpResponse(content=result)

3 多语言实现原理

4 前端缓存方案(jinja2模板用法)

Android/IOS客户端缓存方案