如何使用插件翻译和应用程序自己的翻译?

时间:2018-02-27 17:41:45

标签: python plugins internationalization gettext

|-- locale
|   `-- es
|       `-- LC_MESSAGES
|           |-- pluginloader.mo
|           `-- pluginloader.po
|-- pluginloader.py
`-- plugins
    `-- PluginA
        |-- first_plugin
        |   `-- __init__.py
        |-- manifest.json
        `-- po
            |-- es.po
            `-- first_plugin.pot

我的app(pluginloader)具有以上结构,它使用它自己从locale目录转换。我想在pluginA中使用pluginA转换es.po。我怎么能这样做?我通过以下代码在pluginloader中导入插件。 `

import imp
import os
import gettext

t = gettext.translation('pluginloader', localedir='locale', languages=['es'], fallback=True)
t.install()

PluginFolder = "./plugins"
MainModule = "__init__"

print(_("Hello world"))

def getPlugins():
    plugins = []
    possibleplugins = os.listdir(PluginFolder)
    for i in possibleplugins:
        location = os.path.join(PluginFolder, i)
        for j in os.listdir(location):
            location1 = os.path.join(location, j)
            if not os.path.isdir(location1) or not MainModule + ".py" in os.listdir(location1):
                continue
            info = imp.find_module(MainModule, [location1])
            plugins.append({"name": i, "info": info})
    return plugins

def loadPlugin(plugin):
    return imp.load_module(MainModule, *plugin["info"])

for i in getPlugins():
    plugin = loadPlugin(i)
    plugin.run()`

0 个答案:

没有答案