惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
XBlock的国际化和本地化问题
2015-08-03 · via 夜行人

此前遇到过XBlock中translation相关的问题,解决得很是敷衍,上周末@MT兄也提到这个问题,于是认真解决了下

#需求场景 我们可能在两类场景中需要考虑translation相关的问题:

  • 使用国外的开发者的XBlock,需要考虑汉化
  • 自己做的XBlock,想贡献给社区

对于第一个问题,直接看下边的解决方案就行。对于第二个问题,需要我们在代码和模板里标注翻译字符串

1
2
3
4
5
6
:::text
#在代码里
from django.utils.translation import ugettext as _
_("hello world")
#在模板里,首先将 {% load i18n %} 放在模板最前面
<title>{% trans "hello world" %}</title>

#解决方案

###使用mako模板 此前在群里同@Datochen兄讨论过这个话题,他当时的解决方案是使用mako模板,mako模板支持unicode,所以可以直接写中文。这个方案无法解决以上的两个问题,它能做的是允许你在自己开发的XBlock里写中文字符串

具体的做法可以参考@Datochen兄的博客

###使用django的国际化机制 为了解决以上两个问题,我决定采用django的国际化机制

思路是将XBlock伪装成django app

具体步骤如下:

  • 将XBlock软链接到django app目录下
  • 进入XBlock,mkdir locale
  • 收集翻译字符串,生成.po文件:django-admin.py makemessages -l zh_CN
  • 翻译po文件
  • 在XBlock里编译:django-admin.py compilemessages

此外,我觉得软链接那一步应该可有可无,只要进入到virtualenv环境里,不过还没做测试

#参考 Internationalization

文章作者 种瓜

上次更新 2015-08-03