このシナリオに直接対応する JCR については何も知りません。しかし、いくつかの可能なオプションを考えることができます。それぞれに独自の利点があり、あるソリューションはある状況ではうまく機能し、別の状況ではうまく機能しない場合があります.
ローカル固有の子ノード
1 つの言語を主要言語にし (たとえば、フォールバックまたはより一般的なローカルが何であれ)、そのノードの下のローカル固有の子にローカル固有のプロパティを配置します。したがって、英語が主要言語である場合、映画のプロパティは映画ノードに格納される可能性があります。フランス語のプロパティは "fr" の子に、ドイツ語のプロパティは "de" の子に格納される場合があります。利点の 1 つは、アプリケーションが使用するロケールのみをロードする必要があることです。
フォールバック参照
1 つのノードから「フォールバック」への参照プロパティを作成し、プロパティを取得するときにロジックでこれを考慮に入れます。プロパティがノードにない場合は、フォールバックから取得します。フォールバック ノードは で取得できますmovie.getProperty("fallback").getNode()。(フォールバックがフォールバックを持つ可能性がある場合、これを再帰的にするのは非常に簡単であることに注意してください。) これにより、ノードを別々の場所に格納できます。ただし、循環フォールバック参照には注意してください (英語のフォールバックはフランス語で、フランス語のフォールバックは英語です)。これは処理できますが、何らかの状態を追跡する必要があります。繰り返しますが、アプリケーションは、必要に応じてロケール固有のプロパティを持つノードのみをロードします。
ローカル固有のプロパティ
英語、フランス語、およびその他の言語のタイトルを含むすべてのプロパティをムービー ノードに格納します。プロパティ名にサフィックスまたはプレフィックスを使用して、ロケールを示します (例: en-titleand fr-title)。単一のノードをロードすると、すべてのプロパティのすべてのロケール バリエーションがロードされる傾向があります。したがって、これはより少ない言語、より少ないローカル固有のプロパティ、およびより少ない全体的なプロパティでうまく機能します。
各「プロパティ」の子ノード
各「プロパティ」(「タイトル」など) を子ノードとして配置し、各ロケール固有の値をプロパティとして格納します。繰り返しになりますが、ノードをロードするとすべてのロケールの値がロードされるため、言語とロケール固有の値の数が少ないほどうまく機能します。