我有一个使用 Flask Babel 翻译模板的 webapp。这个 webapp 可以通过将数据库名称添加到其 url 来使用多个数据库,例如:
myapp.com/<dbname>
问题是翻译路径在 babel 中是硬编码的:
def list_translations(self):
"""Returns a list of all the locales translations exist for. The
list returned will be filled with actual locale objects and not just
strings.
.. versionadded:: 0.6
"""
dirname = os.path.join(self.app.root_path, 'translations')
if not os.path.isdir(dirname):
return []
result = []
for folder in os.listdir(dirname):
locale_dir = os.path.join(dirname, folder, 'LC_MESSAGES')
if not os.path.isdir(locale_dir):
continue
if filter(lambda x: x.endswith('.mo'), os.listdir(locale_dir)):
result.append(Locale.parse(folder))
if not result:
result.append(Locale.parse(self._default_locale))
return result
babel 迫使我进入名为“translations”的目录和名为“messages.mo”的语言文件
我尝试了整个互联网,但仍然没有明确的解决方案来解决这个问题。
我想到的一个想法是,是否可以用 babelex 更改 babel,然后我可以覆盖翻译路径?