При запуске приложения IronPython, вызываемого приложением .NET на машинах разработчика, мы получаем ошибку IOError от IronPython. Отслеживая ошибку, мы видим, что она исходит из gettext.py в функции перевода. Похоже, что это связано с переменной _default_localedir, которая показывает это:
Приложение отлично работает на наших тестовых и производственных серверах, поэтому кажется, что это проблема конфигурации.
Мы попытались установить для переменной среды PYTHONPATH значение c: \ program files \ IronPython 27, куда было загружено программное обеспечение IronPython, но это не имело значения.
def translation(domain, localedir=None, languages=None,
class_=None, fallback=False, codeset=None):
if class_ is None:
class_ = GNUTranslations
mofiles = find(domain, localedir, languages, all=1)
if not mofiles:
if fallback:
return NullTranslations()
raise IOError(ENOENT, 'No translation file found for domain', domain)
# Avoid opening, reading, and parsing the .mo file after it's been done
# once.
result = None
for mofile in mofiles:
key = (class_, os.path.abspath(mofile))
t = _translations.get(key)
if t is None:
with open(mofile, 'rb') as fp:
t = _translations.setdefault(key, class_(fp))
# Copy the translation object to allow setting fallbacks and
# output charset. All other instance data is shared with the
# cached object.
t = copy.copy(t)
if codeset:
t.set_output_charset(codeset)
if result is None:
result = t
else:
result.add_fallback(t)
return result
при просмотре результата показывает ноль.
Мы не внесли никаких изменений в gettext.py или любой другой стандартный код Python.