# General Translation Integrations: Запрос переводов URL: https://generaltranslation.com/ru/docs/integrations/sanity/guides/querying-translations.mdx --- title: Запрос переводов description: Как запрашивать переводы Sanity на уровне документов и полей с помощью GROQ. 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