# General Translation Integrations: Запрос переводов
URL: https://generaltranslation.com/ru/docs/integrations/sanity/guides/querying-translations.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Как запрашивать переводы Sanity на уровне документов и полей с помощью GROQ.

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

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
