問題タブ [flask-babel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Jinja2 でのバベルとのリンクの使用
現在、Flask と Jinja2 を Babel と組み合わせて使用しています。これまでのところ、すべてがうまく機能しています。
私が直面している唯一の問題は、翻訳されたテキストでリンクを使用する場合です。HTML に以下があるとします。
これをbabelと組み合わせてどのように使用しますか?
私は次のコードを考えていましたが、翻訳された言語で単語の順序が同じでない場合に問題が発生します。
もう 1 つのアイデアは、HTML 全体を翻訳対象の文字列に入れることでしたが、文字列エスケープを使用できなくなりました。
これを行うための好ましい方法は何ですか?
javascript - javascriptでflask-babelを使って翻訳するには?
私は、ジンジャテンプレートとフラスコバベルがうまく機能するpythonプロジェクトを持っています。私の問題はjavascriptファイルです。「static」というフォルダー内にすべてのjsファイルがありますが、使用後:
次に、更新してコンパイルすると、ブラウザーはエラーを返します。
babel.js や jsil18n を使用しているプロジェクトを見たことがありますが、本当に必要かどうかはわかりません。jinja テンプレートで行ったのと同じ方法で gettext を定義するにはどうすればよいですか?
python - Flask-Babel 多言語 URL ルーティング
私は多言語サイト (EN と FR) を作成しています。ユーザーが選択した場合は、クリックで前後に切り替える必要があります。私は Flask-Babel を使用しており、翻訳とトグルはクリック時に正しく機能していますが、URL も翻訳する必要があります。現在、英語とフランス語の両方の URL を使用して、URL ルートを次のようにラップしています。
言語を取得してトグルする残りのコードは次のとおりです。
ユーザーがリンクをクリックして言語を変更するテンプレートは次のようになります。
私は Python/Flask の経験がほとんどないため、翻訳された URL に切り替える最善の方法に苦労しています。どうすればこれを行うことができますか?任意の情報をいただければ幸いです。前もって感謝します。
python - Flask-Login と Flask-Babel を一緒に使用する
Flask を使用し、Flask-Login を認証に使用して多言語アプリを構築しています。
私の典型的な見解は次のようになります。
私は言語設定を次のように扱います:
現在、Flask-Login にはデフォルトのログイン ルートが必要であり、通常は次のように設定されています。
これをデフォルトの言語ルート (例: auth.login_en
) に設定できますが、理想的には、ユーザーが最適なログイン ビューを取得できるように、事前に言語設定を処理したいと考えています。私はダミーのビューを持つことを考えました:
.. 言語設定を決定し、正しい言語ビューにリダイレクトしますが、それは少し不格好に思えます。
python - アプリ ファクトリで定義されている Flask 拡張機能にアクセスする
アプリ ファクトリ パターンを使用して Flask アプリケーションをセットアップしています。私のアプリは Flask-Babel 拡張機能を使用しており、これも工場でセットアップされています。しかし、それを使用するために設計図で拡張機能にアクセスしたいのですが、
工場は にあり__init__.py
ます。
に以下を追加したいmain.py
:
残念ながら、アプリケーション ファクトリから変数main.py
にアクセスすることはできません。babel
これを解決するにはどうすればよいですか?
python - Flaskで2つの言語を切り替える方法は?
Flask-Babel
この目的のために使用している 2 つの異なる言語でサイトを作成したいと考えています。
これが私のsettings.py構成です:
ここでは、私のアプリで使用している 2 つの言語を含む辞書を見ることができます。
ここにviews.pyがあります:
inject_url_for 関数は、アプリケーション内のすべての url_for() 呼び出しを変更して、 lang という追加のパラメーターを渡す必要があることを意味します。それが私が正確に行ったことです。ここにインデックス関数があります。
いいですね。
アプリケーションをそのまま実行しても何も変わらず、デフォルトの言語である英語が表示されますが、ロシア語に切り替えると機能しません。
どんな助けでも大歓迎です:)。
python - Flask-Babel Accept-Language ヘッダーを使用して適切なロケールを選択する
いくつかの翻訳が利用可能なアプリケーションがあるとします。
Accept-Language
ヘッダーに従って最も適切なものを選択したいと思います。
request.accept_languages.best_match の使用
ロケールを取得するには、次のように記述します。
問題は、ユーザー エージェントが を要求した場合、一致が失敗し、選択がデフォルト値 (英語) に戻りますが、明らかにde_DE
を取得したい場合です。de_AT
注:ドキュメントページの例は次のとおりです
en_EN
ただし、これは同じ言語の 2 つの異なるバージョン ( 、 )を許可しませんen_US
。
交渉_ロケールの使用
このGitHub の問題で、誰かが Babel のnegotiate_locale
関数の使用を提案しています。
しかし、知る限り、これですべてのユースケースが修正されるわけではありません。利用可能なロケール['de_AT', 'de']
が['en_US', 'en_EN', 'de_DE']
. しかし、その逆ではありません:
エイリアスのハードコーディングされたリストがをde
指すため、最初の方法が機能しde_DE
ます。
また、ブラウザが送信するだけで送信de_AT
しない場合de
も壊れていますが、これが一般的な構成かどうかはわかりません (次の段落を参照)。
これに対処する信頼できる方法はありますか?
最新のブラウザの典型的な値?
サブ質問として、最新のブラウザーにどのような値を期待できるかを知りたいです。
ユーザーが間違ってカスタマイズしない限り、最新のブラウザーがAccept-Language
[lang+territory, lang] のような形式の を送信すると仮定しても安全ですか?
また、Firefox のバージョンを試してみましたが、これは少し驚くべきことでした。
私のシステムのロケールはフランス語です:
about:config
ページには次のように記載されています。
テストFlaskアプリに接続すると、
したがって、提案されたもの@babel.localeselector
は英語のロケールを返します。
Chromium を使用して同じ値を取得します。
ブラウザの設定が間違っていますか?