# General Translation Integrations: 查询翻译文档 URL: https://generaltranslation.com/zh/docs/integrations/sanity/guides/querying-translations.mdx --- title: 查询翻译文档 description: 如何使用 GROQ 查询文档级和字段级的 Sanity 翻译。 related: links: - /docs/integrations/sanity/guides/translating-content - /docs/integrations/sanity/guides/managing-translations - /docs/integrations/sanity/guides/configuring-sanity --- General Translation 支持两种 Sanity 存储模型。文档级本地化会为每个区域设置创建一个文档,而字段级本地化则会将各区域设置的值存储在同一文档的国际化数组中。 ## 查询文档级翻译 [#documents] 文档级翻译会标记一个语言字段,默认为 `language`。只需按该字段筛选,即可查询所需的版本。 ### 查询源内容 默认情况下,源文档 不会设置 语言字段。通过筛选语言字段未定义的文档来排除翻译后的文档。 ```text *[_type == "article" && !defined(language)]{ title, slug, body } ``` ### 查询目标区域设置 按语言字段筛选。 ```text *[_type == "article" && language == "es"]{ title, slug, body } ``` ### 查询单个翻译后的文档 ```text *[_type == "article" && slug.current == "hello-world" && language == "es"][0]{ title, body } ``` 如果你对翻译后的 slug 进行去重,slug 会包含区域设置后缀,例如 `hello-world-es`。 ### 查询所有语言版本 ```text *[_type == "article"]{ title, slug, body, language } ``` ### 查询带有或不带语言字段的源内容 一些源文档会显式设置源区域设置,而另一些则不会定义语言字段。需要获取所有源内容时,请同时包含这两种情况。 ```text *[_type == "article" && (language == "en" || !defined(language))]{ title, slug, body } ``` ### 使用自定义 语言字段 如果插件配置中设置了 `languageField: 'locale'`,请查询 `locale`,而不是 `language`。schema 字段和 query 字段必须与配置的值一致。 ```text *[_type == "article" && locale == "es"]{ title, slug, body } ``` ### 查询翻译后的引用 在引用完成修补后,翻译后的文档会指向所引用文档的翻译版本。像平常一样查询即可。 ```text *[_type == "article" && language == "es"]{ title, "author": author->{ name, language } } ``` 有关引用如何被重写,请参见[补丁引用](/docs/integrations/sanity/guides/managing-translations#patch-references)。 ## 查询字段级翻译 [#fields] 字段级本地化会将各个区域设置存储在 `internationalizedArray*` 字段中。根据其 `language` 属性筛选数组,并投影出匹配的 `value`: ```text *[_type == "article"][0]{ "titleEs": title[language == "es"][0].value, "bodyEs": body[language == "es"][0].value } ``` 文档本身不会带有文档级的 `language` 字段或 `translation.metadata` 链接。照常从同一文档中查询其他未本地化字段。 ## Next steps - /docs/integrations/sanity/guides/translating-content - /docs/integrations/sanity/guides/managing-translations - /docs/integrations/sanity/guides/configuring-sanity