Flask Babel を使用してテンプレートを変換する Web アプリケーションがあります。この Web アプリケーションは、次のように 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」という名前の言語ファイルに私を強制しています。
インターネット全体で試しましたが、この問題の明確な解決策はまだありません。
私が念頭に置いていた1つのアイデアは、babelxでbabelを変更してから、翻訳パスをオーバーライドすることは可能ですか?