0

djangoを使って中国語ブログを作っています。投稿テキスト、ブログ タイトル、ブログ ナビゲーション、コメントや連絡先フォームのラベル タグなど、制御できるものはすべて中国語で記述します。私が制御できない唯一のことは、「このフィールドは必須です。」、「有効な電子メール アドレスを入力してください。」などのエラーを送信するフォームです。django のコメント フレームワークとフォーム ライブラリを使用してコメント フォームと連絡先フォームを作成しているため、その英語版を中国語版に置き換える方法がわかりません。

だから私はジャンゴの国際化に頼っています。django ドキュメントに続いて、django が提供するフォームの元の html ファイルに翻訳文字列を追加します。

{% for error in field.errors %}
    <li>{% trans error %}</li>
{% endfor %}

{% for error in form.sender.errors %}
    <li>{% trans error %}</li>
{% endfor %}

次に、プロジェクトのルート ディレクトリにメッセージ ファイルを作成し、「django.middleware.locale.LocaleMiddleware」を MIDDLEWARE_CLASSES 設定に追加します。

.po ファイルでは、{% trans 'Welcome to my site' %} のように、定数文字列に記録があります。

msgid "Welcome to my site."
msgstr ""

しかし、{% trans error %} のような変数の内容には記録がありません。

私はまだ続けて、ブログをリロードします。「このフィールドは必須です」と表示されました。はコメント フォームと連絡先フォームの両方で中国語に翻訳されていますが、「有効なメール アドレスを入力してください」は英語のままです。次のように、手動で新しいレコードを追加してみます

msgid "Enter a valid email address."
msgstr "XXXXXXX"

.po ファイルに変換しますが、効果はありません。

なぜdjangoはいくつかのエラーメッセージを翻訳し、他のエラーメッセージを無視するのですか?

django が一部の文字列を自動的に翻訳できない場合、または django が自動的に提供する翻訳が気に入らない場合、独自の翻訳を提供できますか? もしそうなら、.poファイルには対応するレコードがないので、翻訳された文字列をどこに置くのですか?

4

1 に答える 1

1

</p>

( . のカスタムエラーメッセージを次のように定義するだけでよいと思いますForm:)

class UserForm(forms.Form):
    username = forms.EmailField(required=True, error_messages={
        'required':'your message here', 'invalid':'your message here'})
于 2013-10-14T01:57:47.360 に答える