On 3 Feb 2020, at 01:28, Soni L. <fakedme+py@gmail.com> wrote:

It'd be cool to attach metadata to string literals that doesn't end up in the resulting string object. This metadata could be used by all sorts of tools, everything from localization to refactoring.

In C, some localization libraries use macros for it, such as:

#define LOCALIZE(s) s

and it acts like an annotation, and then you do:

printf("%s", get_localized(locale, LOCALIZE("This string gets extracted and used in language files")));

And I think Python could do better and have special string literals explicitly for this purpose.

It could even be something with fstrings, like: f"{#localize}This string gets extracted and used in language files"

Ofc, there's nothing preventing one from using something like f"{(lambda _:'')('localize')}This string gets extracted and used in language files" today, but I feel like having some sort of dedicated syntax for it would be an improvement.

(forgot to cc the list)

If you use the stdlib gettext library then the default is to use the _() function for translations.

print(_('Translate me'))

The tooling knows how to extract the strings in _() and build a .pot files for use with translations software.
I think the placing of _ into the builtin's is deprecated.

You can define your own short names for the functions in gettext that you want to call.
Then tells the tools to look for the names you use.

The docs cover this.


Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/OUUKHT7BBBNJC5TXATGCAPJQQCYSUHN3/
Code of Conduct: http://python.org/psf/codeofconduct/