I recently launched a Slack app to help with channel bloat. Simply installing it would help me out a bunch. I have 1/10 installations required to submit my app to the Slack Marketplace. To say thank you for helping me, I am giving you a free 6 month trial.
In Python there is a module for internationalization in the standard library called gettext.
There is also a common alias for this which is a simple underscore (_).
While I was looking into this module a little more I noticed that it is normally used this way, but this can cause side effects.
The original reason I learned about this functionality was while I was debugging a problem in a legacy project.
The work included linting and adding unit tests to legacy code, and pylint was giving me problems about unused variables.
A normal way to go about naming an unused variable in Python is to just name it underscore (_), and this is where the problem came in.
That same legacy code also used the underscore alias convention for gettext, so if one of the unused variables came before a call to the gettext alias, the alias was no longer valid and Python tried to call whatever value was contained in the underscore variable that was reassigned.
Luckily, I caught the problem quickly because a TypeError: 'str' object is not callable or something similar was thrown.
However, I could potentially see this leading to harder to track bugs if an unused variable assigned to _ was something callable (a function).
So a word of caution when using the ‘_()’ alias for gettext; you will want to be cautious if you use the _ = unused_variable convention.