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模板用法)