speaklater je Python modul, který poskytuje líné řetězce pro překlady. & Nbsp; V podstatě máte na objekt, který se zdá být řetězec, ale změní hodnotu pokaždé, když hodnota je hodnocen na základě volatelný poskytujete.
Například můžete mít globální funkce lazy_gettext, která vrací líný řetězec s hodnotou aktuálního nastaveného jazyka.
Příklad:
>>> Z speaklater dovozu make_lazy_string
>>> Sval = u'Hello World '
>>> String = make_lazy_string (lambda: sval)
To líný řetězec vyhodnotí na hodnotu proměnné sval.
>>> String
lu'Hello World "
>>> Unicode (string)
u'Hello World "
>>> String.upper ()
u'HELLO WORLD "
Pokud změníte hodnotu, bude líný řetězec změní také:
>>> Sval = u'Hallo Welt '
>>> String.upper ()
u'HALLO WELT "
To je zvláště užitečné, když v kombinaci s nití místní a gettext překlady nebo dicts na překlad, řetězců:
>>> Z speaklater dovozu make_lazy_gettext
>>> Od navlékání dovozu místního
>>> L = local ()
>>> l.translations = {u'Yes ":" Ja "}
>>> Lazy_gettext = make_lazy_gettext (lambda: l.translations.get)
>>> ano = lazy_gettext (u'Yes ")
>>> Print ano
Ja
>>> L.translations [u'Yes '] = u'Si'
>>> Print ano
Si
Lazy řetězce žádné skutečné řetězce, takže pokud si projít tento druh řetězce na funkci, která provádí kontrolu instance, bude to selhání. V takovém případě budete muset převést ji s unicode a / nebo řetězec v závislosti na tom, co řetězec typu líný řetězec zapouzdří.
Chcete-li zjistit, zda řetězec je líný, můžete použít is_lazy_string funkce:
>>> Z speaklater dovozu is_lazy_string
>>> is_lazy_string (u'yes ")
Falešný
>>> Is_lazy_string (ano)
Pravda
Požadavky na :
- Python
Komentáře nebyl nalezen