translation(): Minor optimization patch which avoids instantiating the
default value's instance unless it's absolutely necessary.
diff --git a/Lib/gettext.py b/Lib/gettext.py
index 724cecb..578490f 100644
--- a/Lib/gettext.py
+++ b/Lib/gettext.py
@@ -235,7 +235,11 @@
raise IOError(ENOENT, 'No translation file found for domain', domain)
key = os.path.abspath(mofile)
# TBD: do we need to worry about the file pointer getting collected?
- t = _translations.setdefault(key, class_(open(mofile, 'rb')))
+ # Avoid opening, reading, and parsing the .mo file after it's been done
+ # once.
+ t = _translations.get(key)
+ if t is None:
+ t = _translations.setdefault(key, class_(open(mofile, 'rb')))
return t