Wagtail源码疑问:Page类中_('title')与_('slug')的含义与用法
关于Wagtail源码中
_('title')写法的说明 你看到的_('title')、_('slug')是Django生态下标准的国际化翻译写法,Wagtail本身是基于Django开发的内容管理框架,所以沿用了这套规则,具体原理和作用如下:
- 这个单下划线
_本质是Django翻译函数gettext的别名,通常对应文件头部会有导入语句:from django.utils.translation import gettext as _,用单下划线是为了简化写法,减少冗余代码。 - 核心作用是实现多语言自动适配:当项目配置了多语言支持后,函数会根据当前运行环境的语言设置,返回对应语言的翻译文本。比如后台用户设置界面语言为简体中文时,
_('title')会自动返回提前翻译好的“标题”,_('slug')会返回“别名”,无需修改业务代码就能适配不同语言的使用需求。 - 完整的运行流程分为三步:
- 开发阶段把所有需要展示给用户的可翻译字符串都用
_()包裹 - 打包阶段通过Django自带的
makemessages命令扫描所有_()包裹的字符串,生成待翻译的po文件,翻译人员完成对应语言的文本翻译后,再用compilemessages命令编译为二进制mo文件 - 运行阶段
_()函数会读取当前语言对应的mo文件,返回匹配的翻译结果
- 开发阶段把所有需要展示给用户的可翻译字符串都用
- Wagtail作为开源的全球化CMS项目,把模型字段的
verbose_name、help_text都做翻译处理,就是为了适配不同国家地区用户的使用需求。
内容的提问来源于stack exchange,提问作者Yan Tian
相关产品推荐
相关产品推荐

