Skip to main content

Implements a lazy string for python useful for use with gettext. This version is compatible with Python 3

Project description

A module that provides lazy strings for translations. Basically you get an object that appears to be a string but changes the value every time the value is evaluated based on a callable you provide.

For example you can have a global lazy_gettext function that returns a lazy string with the value of the current set language.

Example:

>>> from speaklater import make_lazy_string, text_type
>>> sval = u'Hello World'
>>> string = make_lazy_string(lambda: sval)

This lazy string will evaluate to the value of the sval variable.

>>> string
l'Hello World'
>>> text_type(string) == u'Hello World'
True
>>> string.upper() == u'HELLO WORLD'
True

If you change the value, the lazy string will change as well:

>>> sval = u'Hallo Welt'
>>> string.upper() == u'HALLO WELT'
True

This is especially handy when combined with a thread local and gettext translations or dicts of translatable strings:

>>> 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

Lazy strings are no real strings so if you pass this sort of string to a function that performs an instance check, it will fail. In that case you have to explicitly convert it with unicode and/or string depending on what string type the lazy string encapsulates.

To check if a string is lazy, you can use the is_lazy_string function:

>>> from speaklater import is_lazy_string
>>> is_lazy_string(u'yes')
False
>>> is_lazy_string(yes)
True
New in version 1.4: python >= 3.3 (and also 2.6 and 2.7) support,

repr(lazystring) is l”foo” on py2 and py3 - no “u” on py2!

New in version 1.2: It’s now also possible to pass keyword arguments to the callback used with make_lazy_string.

Project details


Release history Release notifications | RSS feed

This version

1.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

speaklater3-1.4.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

speaklater3-1.4-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file speaklater3-1.4.tar.gz.

File metadata

  • Download URL: speaklater3-1.4.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for speaklater3-1.4.tar.gz
Algorithm Hash digest
SHA256 c9261d4b6b5a304672312d1eb0899be028fac91760190a80feccd31d3a3b5042
MD5 33f9a5da54a38692c85a440c93e073eb
BLAKE2b-256 0347eaa6a52849915456aa144fea9e41332ae9b1a246a899095a231c995aab7e

See more details on using hashes here.

File details

Details for the file speaklater3-1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for speaklater3-1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5a48a40ad5bf0835af6aa9d3c52120fe19dc92857b78caacfcb49110002f8863
MD5 e11f9d2abc5ba25f73cd62f7318fc486
BLAKE2b-256 4e9b855943d6227ed912fa14c0def339cdffe67c8221f1c97d658f7bfd1d0066

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page