跳转到主要内容

Fork of implements a lazy string for python useful for use with 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 一起使用的回调。

项目详情


下载文件

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

源分布

quokka-speaklater-1.3.1.tar.gz (4.0 kB 查看哈希值)

上传于 源代码

支持者