# General Translation Integrations: 翻訳をクエリする
URL: https://generaltranslation.com/ja/docs/integrations/sanity/guides/querying-translations.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: GROQ でドキュメント単位およびフィールド単位の Sanity 翻訳をクエリする方法。

General Translation は、Sanity の 2 つの保存モデルをサポートしています。ドキュメント単位のローカライゼーションではロケールごとにドキュメントを作成し、フィールドレベルのローカライゼーションでは 1 つのドキュメント内の国際化配列にロケールごとの値を保存します。

## ドキュメント単位の翻訳をクエリする [#documents]

ドキュメント単位の翻訳には language フィールドが付与され、デフォルトは `language` です。必要なバージョンは、そのフィールドで絞り込んでクエリします。

### ソースコンテンツをクエリする

ソースドキュメントでは、デフォルトでは language フィールドが設定されません。language フィールドが未定義のものをフィルタリングして、翻訳済みドキュメントを除外します。

```text
*[_type == "article" && !defined(language)]{
  title,
  slug,
  body
}
```

### 対象ロケールをクエリする

language フィールドでフィルタリングします。

```text
*[_type == "article" && language == "es"]{
  title,
  slug,
  body
}
```

### 1 件の翻訳済みドキュメントをクエリする

```text
*[_type == "article" && slug.current == "hello-world" && language == "es"][0]{
  title,
  body
}
```

翻訳済みスラッグの重複を排除すると、スラッグには `hello-world-es` のようにロケールの接尾辞が付きます。

### すべての言語版をクエリする

```text
*[_type == "article"]{
  title,
  slug,
  body,
  language
}
```

### language フィールドの有無にかかわらずソースコンテンツをクエリする

一部のソースドキュメントではソースロケールが明示的に設定されていますが、他のものでは language フィールドが未定義のままです。すべてのソースコンテンツが必要な場合は、両方の表現を含めてください。

```text
*[_type == "article" && (language == "en" || !defined(language))]{
  title,
  slug,
  body
}
```

### カスタム language フィールドを使用する

プラグイン設定で `languageField: 'locale'` を指定している場合は、`language` ではなく `locale` をクエリしてください。schema フィールドとクエリ フィールドは、設定した値と一致している必要があります。

```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.
