Python 重新加载django中所有进程/线程的.mo文件,而无需重新启动

Python 重新加载django中所有进程/线程的.mo文件,而无需重新启动,python,django,Python,Django,我们正在为翻译人员开发一个.po文件编辑器。翻译人员需要在现场网站上看到他们正在做的改变 我们为当前进程/线程重新加载了.mo文件。但并非每个进程/线程都如此 有没有可能在没有更大性能问题的情况下实现这一点?我检查了一下,正如我所怀疑的,他们依赖自动加载机制。这就是我的建议。有关更多详细信息,请阅读。我们也遇到了同样的问题。用户必须直接在网站上写翻译。我找到了django 1.1的中间件,它清除了翻译缓存,并尝试在django 1.4的视图中使用它。 订单: 用户提交从与翻译 方法解析表单数据并

我们正在为翻译人员开发一个.po文件编辑器。翻译人员需要在现场网站上看到他们正在做的改变

我们为当前进程/线程重新加载了.mo文件。但并非每个进程/线程都如此


有没有可能在没有更大性能问题的情况下实现这一点?

我检查了一下,正如我所怀疑的,他们依赖自动加载机制。这就是我的建议。有关更多详细信息,请阅读。

我们也遇到了同样的问题。用户必须直接在网站上写翻译。我找到了django 1.1的中间件,它清除了翻译缓存,并尝试在django 1.4的视图中使用它。 订单:

  • 用户提交从与翻译
  • 方法解析表单数据并更改*.po
  • -Popen([“python”、“manage.py”、“compilemessages”],stderr=PIPE,stdout=PIPE)(编译更改后的*.po)
  • 下面的函数用于清除缓存

    from django.utils import translation
    from django.utils.translation import trans_real, get_language
    from django.conf import settings
    import gettext
    
    if settings.USE_I18N:
    
        try:
    
            # Reset gettext.GNUTranslation cache.
            gettext._translations = {}
    
            # Reset Django by-language translation cache.
           trans_real._translations = {}
    
        # Delete Django current language translation cache.
        trans_real._default = None
    
        # Delete translation cache for the current thread,
        # and re-activate the currently selected language (if any)
        translation.activate(get_language())
    except AttributeError:
        pass
    

  • 从内存中,django rosetta在提交对定义文件的更改时会接触WSGI脚本文件。您是如何为当前线程重新加载它们的?谢谢!当我尝试测试翻译消息时,清除缓存解决了我的问题。