不依赖全局或线程本地状态的惰性字符串实现。

postpone的Python项目详细描述


惰性字符串的实现。可与gettext结合使用,用于Web应用程序的翻译。

它不如speaklater漂亮(另一个实现 但我想要的是即使 单线程交叉处理许多http请求(这在异步框架中发生)。

delay不依赖全局状态。它也不使用speaklater使用的thread.local()技巧。

使用示例:

>>>frompostponeimportevalr,LazyStringas_>>>translations={"Order {item}.":"Commander {item}.","Take a nap":"Faire une sieste","Stare at the wall for %s minutes.":"Fixer le mur pendant %s minutes.","a new pillow":"un nouvel oreiller"}>>>tasklist=[_("Order {item}.").format(item=_("a new pillow")),_("Take a nap")+'!',_("Stare at the wall for %s minutes.")%30]>>>evalr(tasklist,translations.get)['Commander un nouvel oreiller.','Faire une sieste!','Fixer le mur pendant 30 minutes.']

evalr遍历python字典、列表、元组或集合并应用 一个函数,用于封装在一个懒散的字符串对象中的所有字符串。

要将函数应用于单个表达式中的字符串,可以使用eval方法:

>>>s=_("Take a nap")+'!'>>>s.eval(str.upper)'TAKE A NAP!'>>>s.eval(translations.get)'Faire une sieste!'

或者,同样地,evalr函数

>>>evalr(_("a new pillow").capitalize(),translations.get)'Un nouvel oreiller'

对于大多数包含多个字符串或语言的项目,您可能希望 使用gettext模块为您提供翻译功能。

importgettexttranslation=gettext.translation("myproject","./locale",["fr"])translated_tasklist=evalr(tasklist,translation.ugettext)

Github回购:https://github.com/leforestier/postpone

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用JavaCV库进行图像旋转的java问题   为Java类创建相等的方法来比较double或int值   javarmi、EJB和回调   用java编写phonegap应用程序(使用GWT、Vaadin等)   java在Hibernate中设置参数值时指定字符串类型   java正则表达式文本日期   Java Hibernate@SafeHtml不允许url链接   使用Java Trie时,无法识别词尾。在递归中失败   java如何在Swing的JTextArea中执行正则表达式   java如何在列表的所有对象中更改sepecific属性的值   java为什么是我的ArrayList。删除(id)呼叫不工作?   java是否可以将用户从同一个jcombobox输入的项添加到jcombobox中?   java当从Python调用jar时,如何最小化JavaVM的加载时间?   面向对象Java类如何从Entry类获取信息?   java JPA错误:关系不存在