跳转到主要内容

实现了Python中用于与gettext一起使用的懒惰字符串

项目描述

一个提供翻译懒惰字符串的模块。基本上,你得到一个看起来像是字符串的对象,但每次根据你提供的可调用对象评估值时,它都会改变值。

例如,你可以有一个全局的 lazy_gettext 函数,它返回一个带有当前设置语言值的懒惰字符串。

示例

>>> 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'

当与线程局部和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_string 函数

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

新功能 1.2:现在也可以通过 make_lazy_string 使用关键字参数传递回调。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。

源分发

speaklater-1.3.tar.gz (3.6 kB 查看哈希)

上传时间 源代码

由以下支持