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

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第三方库


热门话题
java Hazelcast CP子系统FencedLock内存使用   java Recaptcha和selenium   基于APR的Apache Tomcat本机库允许在生产环境中实现最佳性能,但在java上找不到。图书馆路径   java循环以相反的顺序打印从2到100的偶数   java JsonPropertyOrder不适用于javax的响应   java在微服务体系结构中,为什么他们说共享REST客户端库不好?   java Androidkeep连接到网站以接收数据库通知   java程序,该程序应该移动一个球,但不执行方法run   java表在更新时不更新,但返回相反的值   java Spring事务,EntityManager生命周期   java为什么我的pbkdf2实现如此缓慢(相对于SQLCipher)?   java在特定模式后提取子字符串   java重复数组列表项   java将base64字符串图像显示为超链接   RMIO Java RMI连接拒绝   运行java项目时出错   java IllegalBlockSizeException:使用填充密码解密时,输入长度必须是8的倍数   在Java中检测MySQL BLOB的mimetype   java我可以合理地期望从系统中得到的最差的解决方案是什么。纳米时代?