# General Translation Integrations: 翻訳をクエリする URL: https://generaltranslation.com/ja/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 の 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