問題タブ [python-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 - Babel による Python 2.6 アプリケーションの国際化
Python 2.6 で使用するために、Windows で Babel 0.9.5 [1] を評価しており、ドキュメントを読んだりグーグルで調べたりしても答えられなかった次の質問があります。
1) ungettext に _ のような省略形を使用したいと思います。これに n_ または N_ を使用する必要があるかどうかについての合意はありますか?
n_ は機能していないようです。Babel はテキストを抽出しません。
N_ は部分的に機能しているようです。Babel は gettext の場合と同様にテキストを抽出しますが、ngettext の場合はフォーマットしません (複数の引数と msgstr[ n ] がありません)。
2) POT ファイルを作成するときに、次のように初期の msgstr フィールドを設定する方法はありますか?
Babel cfg ファイルを介してこれを行う方法があるのではないかと思いますが、Babel cfg ファイル形式に関するドキュメントを見つけることができませんでした。
"Project-Id-Version: PROJECT VERSION\n" "Language-Team: en_US \n"
3) PO ファイルに「廃止された」msgid/msgstr を保存する方法はありますか? Babel update コマンドを使用すると、新しく作成された古い文字列は #~ プレフィックスでマークされますが、既存の古いメッセージ文字列は削除されます。
ありがとう、マルコム
python - Babelの使用:GNU gettext POファイルで翻訳者のコメント(および古い翻訳)を保護する方法は?
PythonベースのBabelgettextユーティリティを使用して、ファイルからの更新間で、翻訳者のコメントと古い(「廃止された」)翻訳(でマークされた#~
)をファイルに保存する手法はありますか?.po
.pot
.po
廃止された翻訳がファイルに初めてあり、pybabel update
実行されると、翻訳は。でマークされ#~
ます。これは、一方ではコメントとして扱われ、翻訳者がそれを調べて変更するまで使用されないが、他方では削除されないため、翻訳者がそれを参照したり、テキストをコピーしたりできるようにするためです。それから他の翻訳に。
ただし、次にpybabel update
実行されると、すべてのコメントがファイルから完全に削除されます。これは、でマークされた翻訳#~
も削除されることを意味します。
たとえば、Babelバージョン0.9.6とJinja2バージョン2.6、および次のファイルを使用します。
./babel.ini
:
./templates/test.html
:
./i18n/pt_PT/LC_MESSAGES/messages.po
:
次のコマンドを実行した後:
ポルトガル語のmessages.po
ファイルは古いコメントをすべて失い、次のものだけが含まれます。
./i18n/pt_PT/LC_MESSAGES/messages.po
:
コメントや古い翻訳を失うことなく、翻訳ファイルを更新するにはどうすればよいですか?
python - Babel による GAE webapp アプリケーションの国際化
BABELを使用して Google App Engine webapp アプリケーションを国際化するにはどうすればよいでしょうか? 私はここですべての段階を探しています:
- 翻訳する文字列をマークします。
- それらを抽出します。
- 翻訳中
- ブラウザーが要求する適切な言語を読み込むようにアプリを構成する
python - スタンドアロンスクリプトのPythonbabelマッピング構成ファイルはどこに配置または名前を付ける必要がありますか?
私は現在、Babelを使用して、単純なスクリプト内でJinja2を使用してさまざまな言語で静的HTMLページのセットを生成しようとしています(Webアプリの一部としてではありません)
翻訳のためにメッセージを抽出する必要があり、Jinja2テンプレートを理解するためにBabelマッピング構成ファイルを変更することになっていることを知っています。コマンドラインツールを使用しているので、マッピングファイルを作成する必要があると思います。私自身。
ただし、ドキュメントでは、マッピング構成ファイルの名前と配置場所を見つけることができないようです。私が知っているのは、次のものを配置する必要があるということだけです。
Jinja2のドキュメントに従ってマッピングファイルに追加します。誰かが似たようなことをしたか、マッピング構成ファイルがどうあるべきか知っていますか?ありがとう!
python - Python: cron から呼び出すと、Babel からこの例外が発生するのはなぜですか?
スクリプトが Babel 関数を呼び出すと、Python Babel パッケージ内からこの例外がスローされます。問題は、コマンドラインから実行すると問題なく動作することです。ただし、これはcronから実行すると発生するエラーです。環境やロケールの設定、または不足に関連している可能性があります。
アップデート
コマンド ラインから呼び出された場合のロケールは en_US で、cron から呼び出された場合は None です。cronから呼び出すときにどのように設定しますか?
また、これが重要かどうかはわかりませんが、Babel を呼び出すスクリプトはカスタム django-admin コマンドです。
python - より良いpython日時表示?
タイムゾーンを取得するためにbabelとpytzを使用しています。ただし、アメリカのほとんどの場合、ドロップダウン ボックスではあまり役に立たないものにマップされます。
"America/New_York" は "Eastern Time" を表示し、"America/Nipigon" も "Eastern Time" を表示します。
都市情報を追加するためにこの変換を行う方法はありますか? 「アジア/ジャカルタ」が「インドネシア (ジャカルタ) 時間」に変換されるなど、他のタイムゾーンは問題ないようです。
python - 日付/時刻を複数の言語で表示するにはどうすればよいですか?
日付と時刻(または日付と時刻を別々に)を複数の言語で表示したいと思います。具体的には英語とスペイン語ですが、将来的には他の言語になる可能性があります。
pythonstime.strftime関数をlocale.setlocalと組み合わせて検討しました。ドキュメント(http://docs.python.org/library/locale.html)を読んだ後、ライブラリがlocale.setlocalを呼び出さないようにする必要があるため、これを除外しました。復元)ライブラリのロケール設定。
私はPythonライブラリBabelも検討しましたが、彼らのドキュメント(http://babel.edgewall.org/wiki/Documentation/0.9/dates.html)で、日付の解析が「適切に実装されていない」ことを読んでいます。 。日付解析機能が必要です。ただし、Babelはさまざまなロケールを使用して時刻を表示できます。
3番目の[ハイブリッド]オプションは、pythons datetimeを使用して日付を解析し、次にBabelを使用して複数の言語/ロケールで日付を表示することです。strptimeは独自のフォーマット文字列構文を使用するのに対し、Babelはフォーマット文字列にLDML構文を使用するため、これは少し面倒です。
他のオプションがあるかもしれません。もう一度質問します。複数の言語で日付または時刻を表示するための最良の方法は何ですか?
python - Djangoサイトの現在のユーザーロケールに基づいてコレクションを並べ替える方法
オブジェクトのコレクションをutf-8文字列プロパティ(ActiveRecordを介して構築)で並べ替える必要があります。現在、コードはorder_byメソッドを介してASCII順序で並べ替えていますが、これをlocale.strcollに変更する必要があります。残念ながら、組み込みのロケール機能を使用するには、現在のリクエストだけでなく、アプリケーション全体のカルチャを変更する必要があります。
Babelライブラリを確認しましたが、必要な機能が提供されていないようです。
私が見つけた他の唯一のオプションはpyICUですが、私の環境にICUライブラリをインストールすると、実行可能なソリューションとしてこれが妨げられます。
他に選択肢はありますか?
python - Pylonsトランスレータオブジェクトを登録するにはどうすればよいですか?
複数のプロセス(1つのWebサーバーと大量の計算に使用されるいくつかのプロセス)で実行されるアプリケーションがあります。目標は、これらの計算プロセスがローカライズされたエラーを返すようにすることです。そのために、Babelが使用する辞書を作成しました。
しかし、アプリケーションを起動しようとすると、
トランスレータオブジェクトをロードする正しい方法は何ですか?
よろしくお願いします、Ivan。
python - Mako、Babel、文字列補間
私はこのようなことをしようとしています:
${_('Hello ${name}, welcome to...', mapping=dict(name='${name}'))}
_()
私の Babel 翻訳関数はどこにありますか。1${name}
つ目は Babel で実行したい文字列補間で、2 つ目${name}
は Mako で置き換えたいので、値は Python 辞書の値です:
これは最終的に次のようにレンダリングされます。
Hello ${name}, welcome to...
望ましくない。問題は、2 番目${name}
が another 内にネストされているため、${}
評価されないことです。
私が目指しているもの:
Hello Ryan, welcome to...
どうすればこれを達成できますか?