15

Django アプリのローカライズを行っています。

フロントエンド Web サイトは問題なく動作し、Django 管理サイトも選択した言語を取得します。

ただし、一部の場所でのみ言語設定が適用され、フィールド名と列名のデフォルトの英語バージョンが使用されますが、これらは翻訳されています。なんで?管理インターフェースの列名とフィールド名に翻訳された名前を使用するにはどうすればよいですか?

例:

class Order(models.Model):
    OPTIONS = ( (0, _("Bank transfer") ), (1, _("Cash on delivery") ), )

    user = models.ForeignKey(User, name=_("User") )
    payment = models.IntegerField(choices=self.OPTIONS, name=_("Payment"))

私が得るもの:

  1. 上部の「ようこそ」や「ログアウト」などの標準的な管理テキストの翻訳
  2. 支払いタイプの翻訳された SELECT オプション
  3. フィールドの列名とフォーム ラベルは翻訳されていません (「ユーザー」、「支払い」)

Django 1.0.2 を使用しています。翻訳されていないテキストは、機能するものと一緒にロケール ファイルに表示されます。

サブ質問: アプリ名をローカライズすることは可能ですか?

4

3 に答える 3

20

verbose_nameの代わりにnameの翻訳版を設定していたことが判明しました。

これは機能します:

class Order(models.Model):
    OPTIONS = ( (0, _("Bank transfer") ), (1, _("Cash on delivery") ), )

    user = models.ForeignKey(User, verbose_name=_("User") )
    payment = models.IntegerField(choices=self.OPTIONS, verbose_name=_("Payment"))
于 2009-07-16T23:18:04.317 に答える
9

TomA は正しい答えを得ました。

しかし、 DjangoForeignKeyは現在、最初ManyToManyFieldの引数をフィールドの詳細な名前として受け取りますOneToOneField。あなたが怠け者なら、次のように書くこともできます:

payment = models.IntegerField(_("Payment"), choices=self.OPTIONS)

ForeignKeyただし、この例ではキーワード引数を使用する必要があります。

user = models.ForeignKey(User, verbose_name=_("User"))
于 2011-07-27T15:41:11.243 に答える
0

このモデル(admin.py内)にカスタムModelFormを使用していますか?オーバーライドするフィールドのラベルにgettext-ed値を追加する必要があります。

Django 1.0以降、アプリ名をローカライズすることはできません。1.1は不明です。

于 2009-07-16T22:58:13.420 に答える