我想在我的GraphQL模式中使用以下代码表示多种语言:
- 语言的ISO名称
- 语言自身的外来语
- 其ISO 639-1编码
- 其ISO 639-3编码
理想情况下它看起来像
enum Language {
(English, English, en, eng)
(German, Deutsch, de, deu)
(Mandarin, 官话, zh, cmn)
(Cantonese, 廣東話, zh, yue)
因为每个值的组合都必须是唯一的。然而,GraphQL不支持这种表示,所以我想到了这种变通方法:
type Language {
isoLanguageName: ISOLanguageName!
endonym: LanguageEndonym!
iso639_1: ISO639_1
iso639_3: ISO639_3
}
enum ISOLanguageName {
English
German
Mandarin
Cantonese
}
enum LanguageEndonym {
English
Deutsch
官话
廣東話
}
enum ISO639_1 {
en
de
zh
}
enum ISO639_3 {
eng
deu
cmn
yue
}
但我一点也不赞成,因为它没有指定值之间定义所必需的关系。
我如何通过模式中的这些数据来表示语言?
1条答案
按热度按时间0pizxfdo1#
GraphQL没有定义枚举的有效组合所需的语义。您的类型就像这样很好。我建议创建一个包含所有语言定义的JSON文件,并根据需要导入它(除非您更喜欢在数据库表中导入)。还建议
ID
作为Language
类型用于缓存。要导入JSON文件:
languages.json:(作为以语言代码为键的对象,也可以作为数组)