Internationalization 在Neo4j中存储多语言属性值的最佳实践?

Internationalization 在Neo4j中存储多语言属性值的最佳实践?,internationalization,neo4j,Internationalization,Neo4j,我将一些节点存储在Neo4j图形数据库中,每个节点都有可以本地化为各种语言的属性值。是否有存储多语言属性值的最佳实践?有几种方法可以对此进行建模。哪一个是最好的,取决于您的用例和您希望使用i18n化属性的方式。假设n是一个节点,它的productName和color属性应该翻译成不同的语言,我将在下面绘制一些示例。下面将使用类似密码的符号 1) 将所有翻译与节点一起存储 CREATE (n { productName:'default', color:'default', productName

我将一些节点存储在Neo4j图形数据库中,每个节点都有可以本地化为各种语言的属性值。是否有存储多语言属性值的最佳实践?

有几种方法可以对此进行建模。哪一个是最好的,取决于您的用例和您希望使用i18n化属性的方式。假设
n
是一个节点,它的
productName
color
属性应该翻译成不同的语言,我将在下面绘制一些示例。下面将使用类似密码的符号

1) 将所有翻译与节点一起存储

CREATE (n {
productName:'default', color:'default',
productName_en:'engl.prod.name', color_en:'red',
productName_fr:'fr.prod.name', color_fr:'rouge',
})
您可以应用命名约定,并对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
,其上的属性指示语言

还有两种方法,例如,理论上也可以使用数组属性。 如前所述,没有银弹,这取决于您的用例和需求