0

私はDjangoベースのWebサイトにdjango-multilingualを使用しています。__unicode__このように返すモデルの関数を定義すると、次のようになります。

def __unicode__(self):
        return unicode(self.title)

ただし、デフォルトの言語は英語で、オランダ語のみで挿入されるアイテムがいくつかあります。全リストをプレビューすると、タイトルとして「なし」が表示されます。

英語のタイトルを取得して、プレビューのためだけに他の言語のタイトルを確認する簡単な方法はありますか?

4

3 に答える 3

0

モデルがオランダ語バージョンをと呼ばれる属性に格納していると仮定するとdutch_title、これを行うことができます。

def __unicode__(self):
  # If we've got an English title, use that
  if self.title:
    return self.title

  # Otherwise, default to the Dutch title
  return self.dutch_title

「一部のアイテムはオランダ語でのみ挿入される」とはどういう意味かわからない場合、質問にもっと役立つように答えるのは少し難しいです。

于 2010-07-26T09:49:05.687 に答える
0

使用しているアプリに応じて(たとえば、-django-multilingual)、次を使用できます。

<td>{{ object.name_en|escape }}</td>

(例:http ://code.google.com/p/django-multilingual/source/browse/trunk/testproject/templates/articles/category_list.html )

私が覚えているように、このアプリには他にもいくつかのフォークがあり、それは次のようにその動作を変更するために使用されていました:

Objec title is: {{object.en.name}}

他のアプリを使用する場合は、いつでもmanage.pyシェルを実行し、dir(MyModel)またはdir(MyModel.fields)でテストして、そこで定義されているフィールドを確認できます:)

これらのフィールド名にマジックゲッターがあり、dir(...)で興味深いものが何も表示されない場合は、好みのl18nアプリのコードを参照して、内部で何が起こっているかを確認できます:)

于 2010-07-26T10:11:59.370 に答える
0

すべての翻訳を繰り返すことは、次のように簡単に行うことができます。

>>> translations = [getattr(obj, "name_" + lang[0].replace("-","_")) for lang in
settings.LANGUAGES]

ここで、 objはモデルオブジェクトであり、langは設定ファイルのタプル(「bg」、「ブルガリア語」)を表します。

「uk-gb」のような言語を使用している場合、これらの値はname_uk_gbに配置されるため、lang [0] .replace( "-"、 "_")が必要です

于 2010-07-26T10:28:26.893 に答える