speaklater là một mô-đun Python cung cấp chuỗi lười biếng cho bản dịch & nbsp;. Về cơ bản bạn sẽ có được một đối tượng mà dường như là một chuỗi nhưng thay đổi giá trị mỗi khi giá trị được đánh giá dựa trên một callable bạn cung cấp.
Ví dụ bạn có thể có một chức năng lazy_gettext toàn cầu mà trả về một chuỗi lười biếng với các giá trị của ngôn ngữ thiết lập hiện hành.
Ví dụ:
>>> Từ speaklater nhập make_lazy_string
>>> Sval = u'Hello World '
>>> String = make_lazy_string (lambda: sval)
Chuỗi lười biếng này sẽ đánh giá giá trị của biến sval.
>>> Chuỗi
lu'Hello World '
>>> Unicode (string)
u'Hello World '
>>> String.upper ()
u'HELLO THẾ GIỚI
Nếu bạn thay đổi giá trị, chuỗi lười biếng sẽ thay đổi là tốt:
>>> Sval = u'Hallo Welt '
>>> String.upper ()
u'HALLO WELT '
Điều này đặc biệt tiện dụng khi kết hợp với một sợi địa phương và bản dịch gettext hay dicts của chuỗi thể dịch:
>>> Từ speaklater nhập make_lazy_gettext
>>> Từ nhập khẩu luồng địa phương
>>> 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
Chuỗi lười không dây thực vì vậy nếu bạn vượt qua loại này chuỗi đến một chức năng mà thực hiện một kiểm tra dụ, nó sẽ thất bại. Trong trường hợp đó bạn phải chuyển đổi một cách rõ ràng với unicode và / hoặc chuỗi tùy thuộc vào những gì chuỗi gõ chuỗi lười đóng gói.
Để kiểm tra xem một chuỗi là lười biếng, bạn có thể sử dụng chức năng is_lazy_string:
>>> Từ speaklater nhập is_lazy_string
>>> Is_lazy_string (u'yes ')
Sai
>>> Is_lazy_string (yes)
Đúng
Yêu cầu :
- Python
Bình luận không