いくつかのノードを Neo4j グラフ データベースに保存しています。各ノードには、さまざまな言語にローカライズできるプロパティ値があります。多言語のプロパティ値を格納するためのベスト プラクティスはありますか?
1 に答える
これをモデル化するには、いくつかの方法があります。どちらが最適かは、ユースケースと i18n 化されたプロパティを使用する方法によって異なります。以下にいくつかの例をスケッチしてn
いますが、これはノードでありproductName
、color
プロパティをさまざまな言語に翻訳する必要があると想定しています。以下では Cypher のような表記法を使用します。
1) すべての翻訳をノードに保存します。
CREATE (n {
productName:'default', color:'default',
productName_en:'engl.prod.name', color_en:'red',
productName_fr:'fr.prod.name', color_fr:'rouge',
})
命名規則を適用<propertyName>_<lang>
し、i18n 化されたバリアントに使用します。このアプローチは単純化されており、実際にはグラフィックではありません。
2) 言語とエンティティごとにサブノードがあり、関係タイプごとに言語を示します。
CREATE (n {productName:'default', color:'default'}),
(n)-[:TRANSLATION_EN]->({productName: 'engl.prod.name', color:'red'}),
(n)-[:TRANSLATION_FR]->({productName: 'fr.prod.name', color:'rouge'})
したがって、言語ごとに 1 つのノードと 1 つの追加の rel があります。Neo4j 2.0 では、言語を示すラベルで翻訳ノードを追加で示すことができます。これにより、言語 xyz のすべてのテキストのリストを簡単に抽出できます。
3) 2) と同様ですがTRANSLATION
、言語を示すプロパティを持つ一般的な関係タイプを使用します。
さらにいくつかのアプローチがあります。たとえば、理論的には配列プロパティも使用できます。前述のように、特効薬はありません。ユースケースと要件によって異なります。