5

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を変更してから、翻訳パスをオーバーライドすることは可能ですか?

4

3 に答える 3

2

解決策は、Babel の代わりに Flask Babelex をインストールすることでした。

于 2014-10-23T13:50:57.343 に答える
0

フラスコのbabelソースをプロジェクトにロードして変更してみませんか?

于 2014-10-21T20:15:14.287 に答える