fork of为python实现了一个惰性字符串,可用于gettext

quokka-speaklater的Python项目详细描述


为翻译提供惰性字符串的模块。基本上是你 获取一个似乎是字符串但每 根据您提供的可调用项计算值的时间。

例如,您可以有一个全局函数 具有当前设置语言值的延迟字符串。

示例:

>>> from speaklater import make_lazy_string
>>> sval = u'Hello World'
>>> string = make_lazy_string(lambda: sval)

此延迟字符串的计算结果将为sval变量的值。

>>> string
lu'Hello World'
>>> unicode(string)
u'Hello World'
>>> string.upper()
u'HELLO WORLD'

如果更改该值,则惰性字符串也将更改:

>>> sval = u'Hallo Welt'
>>> string.upper()
u'HALLO WELT'

当与线程local和gettext结合使用时,这尤其方便 可翻译字符串的翻译或指令:

>>> from speaklater import make_lazy_gettext
>>> from threading import local
>>> l = local()
>>> l.translations = {u'Yes': 'Ja'}
>>> lazy_gettext = make_lazy_gettext(lambda: l.translations.get)
>>> yes = lazy_gettext(u'Yes')
>>> print yes
Ja
>>> l.translations[u'Yes'] = u'Si'
>>> print yes
Si

惰性字符串不是真正的字符串,因此如果将此类字符串传递给 执行实例检查的函数将失败。那样的话 必须使用unicode和/或string显式转换它,具体取决于 惰性字符串封装的字符串类型。

要检查字符串是否延迟,可以使用is lazy>字符串函数:

>>> from speaklater import is_lazy_string
>>> is_lazy_string(u'yes')
False
>>> is_lazy_string(yes)
True

版本1.2中的新功能:现在还可以将关键字参数传递给 与make_lazy_string一起使用的回调。

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

推荐PyPI第三方库


热门话题
java为游戏添加声音。需要帮助   java在获取数据时忽略模型类中的forign键映射   java为什么Microsoft JDBC驱动程序忽略failoverPartner主机名   java可以下载mozswing文件   java等价于ObjectOutputStream,不仅保存其状态,还保存整个对象?   Java Android LiveData根据其他LiveData调用房间查询   java如何使用jackson jsonNode实现这一点并获得所需的输出   在web服务器上作为web应用程序运行java应用程序?   groovy中java类的元类属性   返回空指针的java图形对象   标头中包含用户名和密码的java SOAP客户端请求   具有堆栈实现和递归的Hanoi算法塔(Java)   java当我运行这两个类时,我的老鼠不会移动   使用图像进行java相似图像搜索   Java8并行流机制   使用单例对象作为枚举元素的java Scala枚举,是否有可能对它们进行迭代?   java Webview更改高度大小   不可序列化对象和函数的java Spark Scala编程   java my app在eclipse中运行良好,而不是在jar中