T.lazy在web2py中做什么?

Mer*_*glu 4 web2py internationalization

我正在学习web2py。我阅读了示例开源代码。在一个应用程序(storpy)中,程序员T.lazy在模型文件中反复使用db.py以下代码:

...
Field('comment', 'text'),
Field('cover', 'upload', autodelete=True))

T.lazy = False
db.dvds.title.requires = [IS_NOT_EMPTY(error_message=T('Missing data') + '!'), IS_NOT_IN_DB(db, 'dvds.title', error_message=T('Already in the database') + '!')]
...
T.lazy = True
Run Code Online (Sandbox Code Playgroud)

为什么程序员T.lazy首先设置False然后设置True

Ant*_*ony 5

默认情况下,它T()是惰性的-调用它时,它实际上并不执行转换,而是返回一个lazyT对象,该对象直到在视图中序列化后才转换。如果设置T.lazy=False,将强制立即进行翻译,因此调用T('some string')将返回实际的翻译后的字符串,而不是lazyT对象。

请注意,从即将发布的版本开始,不必切换T.lazyFalseTrue,您将可以T('some string', lazy=False)强制为单个呼叫立即进行翻译。强制立即转换的其他方法是str(T('some string'))T('some string').xml()- str()序列化lazyT对象(并.xml()简单地调用str())。

  • 例如,有时会转换诸如'%Y /%m /%d'之类的日期格式,但需要在内部将其传递给函数,例如`date.strftime(T('%Y /%m /%d',lazy =错误))。 (3认同)