A full-stack i18n solution for Django
Project description
Jinx
什么是Jinx
Jinx是一个Django项目国际化的一站式辅助工具
Django国际化常常包含以下流程
- 检查翻译标记
- 提取词条
- 机器翻译词条
- 人工检验词条(将机器翻译好的词条导出交付给相应的人员进行校对)
- 将确认无误的词条写入po文件
- 编译
可以看到国际化不是一蹴而就的, 而且每个项目的国际化流程都不尽相同
那么jinx可以帮助你完成以下工作
- 检查翻译标记由Marker负责
- 提取词条 由Extractor负责, 或者 利用Django自带makemessages命令进行词条提取
- 机器翻译词条 由Translator负责
- 人工检验词条 由Exporter导出json文件, 交付给负责人
- 将确认无误的词条写入po文件 由Translator负责
- 编译 由Compiler负责, 或者 利用Django自带compilemessages命令进行编译
快速开始
安装
因为暂时未提供pip的方式, 可以使用git clone的方式安装, 推荐使用poetry安装依赖
git clone https://github.com/kiritoscs/jinx
cd jinx
poetry install
如果你不想使用poetry, 可以使用pip安装依赖
参考pyproject.toml里的[tool.poetry.dependencies]
生成配置文件
mv jinx.template.toml jinx.toml
1.检查翻译标记
python jinx.py marker -d ${YOUR_DJANGO_PROJECT_DIR}
- YOUR_DJANGO_PROJECT_DIR: 你的Django项目目录
详细配置参考配置说明
标记之后, 需要检查一下标记是否正确, 有时候会出现标记错误的情况, 具体参考Marker
2.提取词条
PlanA: 利用extractor提取词条, 本质是基于marker的结果进行提取, 所以需要先检查标记结果
python jinx.py extractor -t ${YOUR_DJANGO_PROJECT_DIR} -l ${YOUR_PO_FILE}
- YOUR_DJANGO_PROJECT_DIR: 你的Django项目目录
- YOUR_PO_FILE: 你的po文件目录, 也支持填入locale目录, 会自动寻找locale目录下的对应语言po文件
PlanB: Django自带的makemessages命令(推荐)
python manage.py makemessages -l ${YOUR_LANGUAGE}
或者
djano-admin makemessages -l ${YOUR_LANGUAGE}
3.机器翻译词条
python jinx.py translator -p ${YOUR_PO_FILE} -o {YOUR_OFFICIAL_DICT_DIR}
- YOUR_PO_FILE: 你的po文件目录, 也支持填入locale目录, 会自动寻找locale目录下的对应语言po文件
- YOUR_OFFICIAL_DICT_DIR: 你的官方词典目录, JSON格式, 用于翻译时的参考, 最大匹配翻译, 参考官方词典official_dict
默认白嫖使用GoogleAPI翻译, 略慢
目前内置了以下翻译来源
- youdao_client, 有道翻译服务, 需要自己去申请
- google_api, 暂时通过爬虫的形式使用, 速度较慢
详细配置参考配置说明
4.人工检验词条
导出词条
python jinx.py exporter -p ${YOUR_PO_FILE} -e ${YOUR_OUTPUT_DIR}
- YOUR_PO_FILE: 你的po文件目录, 也支持填入locale目录, 会自动寻找locale目录下的对应语言po文件
- YOUR_OUTPUT_DIR: 你的输出文件名, 暂时支持json, 默认为contents.json
5.将确认无误的词条写入po文件
python jinx.py translator -p ${YOUR_PO_FILE} -o ${YOUR_FINAL_JSON_FILE} -m overwrite
- YOUR_PO_FILE: 你的po文件目录, 也支持填入locale目录, 会自动寻找locale目录下的对应语言po文件
- YOUR_FINAL_JSON_FILE: 你的最终json文件, 用于更新po文件
6.编译
PlanA: 利用compiler编译
python jinx.py compiler -l ${YOUR_PO_FILE}
- YOUR_PO_FILE: 你的po文件目录, 也支持填入locale目录, 会自动寻找locale目录下的对应语言po文件
PlanB: 利用Django compilemessages编译
python manage.py compilemessages
或者
djano-admin compilemessages
配置说明
[language]
# 当前项目语言, 枚举参考 common/constants.py/LanguageEnum
current = "zh-CN"
# 翻译目标语言, 枚举参考 common/constants.py/LanguageEnum
dest = "en"
[marker]
# 标记器
## 严格模式, 存在f-string格式化的需要国际化的字符串时, 会跳过该文件的标记
strict_mode = false
[marker.filter]
# 过滤器, 不想翻译的文件或者目录
## 过滤目录
exclude_paths = [
"web",
"scripts",
"migrations",
"tests"
]
## 过滤文件
exclude_files = [
"manage.py",
"urls.py",
"wsgi.py",
"tests.py"
]
[marker.translation_func]
# 默认的翻译函数配置
## 默认的翻译函数
default = "ugettext_lazy"
## 翻译函数别名
alias = "_"
[marker.str_conditions.token]
# token(单词)的字符串条件配置
## 包含
contains = []
## 不包含
not_contains = []
## 以...开头
startswith = []
## 不以...开头
not_startswith = []
## 以...结尾
endswith = []
## 不以...结尾
not_endswith = ["\"\"\"", "'''"]
[marker.str_conditions.source_line]
# source_line(源码)的字符串条件配置
## 包含
contains = []
## 不包含
not_contains = ["logger", "__name__"]
## 以...开头
startswith = []
## 不以...开头
not_startswith = []
## 以...结尾
endswith = []
## 不以...结尾
not_endswith = ["\"\"\"", "'''"]
[translator]
# 翻译器
provider = "google_api"
mode = "update"
[youdao_client]
# 有道翻译客户端配置
url = "https://openapi.youdao.com/api"
app_key = ""
app_secret = ""
# domain是有道翻译的一个参数, 用于区分不同的翻译场景, 一般不需要修改
# 支持的领域参考: common/constants.py/YouDaoSupportDomainEnum
domain = "general"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django_jinx-0.0.1.tar.gz
(23.2 kB
view details)
Built Distribution
File details
Details for the file django_jinx-0.0.1.tar.gz
.
File metadata
- Download URL: django_jinx-0.0.1.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c65f1e27c4d4674864d72f2b9d255ca5490f11ecb216c577d1dbda27522d754 |
|
MD5 | 34a29bd5e8d325b9da6b9251c879f396 |
|
BLAKE2b-256 | 819f4e5e9407db8f9c6f1bd3174d005989fd180b409f5a0007b076632a1d2603 |
File details
Details for the file django_jinx-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: django_jinx-0.0.1-py3-none-any.whl
- Upload date:
- Size: 29.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2e2903a2b1cb9a1a1a2e209e9468290c8ce75451e05640ddc33b0f15bbb44db |
|
MD5 | 598f292f982a6a7c28f77257ee65bc8d |
|
BLAKE2b-256 | 26a4bc9888b08966bbb6f35f58f562a60276a343bcabebd847d7f86dd385599f |