
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.

On 2020-02-02 11:29 p.m., Eric V. Smith wrote:
Oh. No, I want it to return plain strings. e.g. you should be able to replace an existing MY_STRING = "This string gets extracted and used in language files" with MY_STRING = [uhh idk what would go here tbh] and maintain full backwards-compatibility. It's for external tools to consume, not for python code to consume.

(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. Barry

On 2020-02-02 11:29 p.m., Eric V. Smith wrote:
Oh. No, I want it to return plain strings. e.g. you should be able to replace an existing MY_STRING = "This string gets extracted and used in language files" with MY_STRING = [uhh idk what would go here tbh] and maintain full backwards-compatibility. It's for external tools to consume, not for python code to consume.

(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. Barry
participants (5)
-
Antoine Rozo
-
Barry Scott
-
Eric V. Smith
-
Mike Miller
-
Soni L.