1

私は Django (v. 1.5.1) の Web サイトに取り組んでおり、 や などのモデルがいくつかRegisteredUserありStartupます。これら 2 つのモデルには、それぞれMany2ManyFieldto がありAreaます。と(から構築された)Areaの 2 つのフィールドが含まれます。nameslugname

この設計は、同じ地域内のユーザーとスタートアップを見つけるのに適していますが、国際化しようとすると大きな問題があります。この設計では、ユーザーが自分で領域を作成し、それらをインスタンスにアタッチしRegisteredUserますStartup。ただし、同じエリアが異なる言語で作成された場合、呼び出されるエリアは(スペイン語版)computer scienceとは異なります。informática

ユーザーがエリアをタグのように作成するという考えですが、上記のような問題が生じると思います。

だから私は可能な解決策について疑問に思っていました:

  1. ユーザーがエリア インスタンスを作成するとき、彼女はそのエリアのすべての翻訳バージョンを入力する必要があり、スラッグは英語バージョンから計算されます。しかし、これはユーザーにとってあまり魅力的ではないようです。そうですか?
  2. ユーザーは、以前に導入および翻訳された定義済みの領域のリストからのみ選択できます。しかし、新しいものはどうですか?このオプションを維持するのは本当に難しいようです...

私が使用している翻訳についてはdjango-transmeta

ですから、この問題に対処する方法について、ご意見やご提案をお読みいただければ幸いです。

どうもありがとう!

4

1 に答える 1

0

最後に、次のように新しいレイヤーを導入して問題を解決しました。

モデル Area と Resource が存在します。どちらも現在翻訳可能であり、管理者スタッフによって作成されています。現在のユーザーはそれらを作成または変更することはできません。これらのモデルは、マッチングを行うために、より抽象的になります。

しかし、より「精度」を高めるために、 と の 2 つの新しいモデルが追加されましAreaTagResourceTag。これら 2 つのモデルはユーザーによって作成され、翻訳されていません。したがって、「application」と「applicación」を使用できareatagsますが、ユーザーが以前に を選択したためArea、 を使用して検索を実行できますArea。これは両方の場合に共通です。したがって、Tagアフィニティを見つけるためにレベル内を検索する必要はありません。

これが、似たようなことをしようとしている人に役立つことを願っています! :)

于 2013-04-21T00:53:53.973 に答える