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 JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储