i18n-array-groq-query-migration

Erkennen und aktualisieren Sie veraltete GROQ-Muster, bei denen die Sprache aus _key für sanity-plugin-internationalized-array gelesen wird, wenn Benutzer die Migration von v4 auf v5 erwähnen, oder…

npx skills add https://github.com/sanity-io/plugins --skill i18n-array-groq-query-migration

Internationalized Array GROQ Migration

Goal

Help users find GROQ queries that still read locale from _key and rewrite them safely for v5.

When To Use

Use this skill when a user asks to:

  • migrate sanity-plugin-internationalized-array from v4 to v5
  • migrate @sanity/document-internationalization from v5 to v6 alongside sanity-plugin-internationalized-array language field changes
  • find queries that still use _key for language lookup
  • update GROQ filters like _key == "en" or _key == $language

Detection Workflow

Detection commands below use grep. If your environment differs, use your editor's global search with equivalent patterns.

  1. Search for direct language comparisons on _key:
grep -REn --exclude-dir=node_modules "_key[[:space:]]*==[[:space:]]*(\"[^\"]+\"|'[^']+'|\\$[A-Za-z_][A-Za-z0-9_]*)" .
  1. Search for any localized-array filters that mention _key:
grep -REn --exclude-dir=node_modules "\[[^]]*_key[^]]*\]" .
  1. Prioritize matches that look like localized-value reads, for example:
  • field[_key == ...][0].value
  • select(...) branches that compare _key to a language value
  1. Check for uses of groq and verify if they use _key as the language, if it is using it, update them.

  2. Explicitly check for template-interpolated language expressions and keep the same operand, for example:

    • _key == "${language}"
    • _key == "${locale}"
  3. Review each match to avoid false positives where _key is used for unrelated array item identity.

Rewrite Rules

Use the same language operand from the original query. The language operand can be a string literal (for example "en"), a variable (for example $language), or a template-interpolated expression (for example "${language}").

  • Before data migration is executed (backwards compatible):
    • _key == <languageExpr> -> language == <languageExpr> || _key == <languageExpr>
  • After migration is complete:
    • language == <languageExpr> || _key == <languageExpr> -> language == <languageExpr>

Examples

Legacy:

*[_type == "person"]{
  "greeting": greeting[_key == $language][0].value
}

Backwards compatible:

*[_type == "person"]{
  "greeting": greeting[language == $language || _key == $language][0].value
}

Post-migration final form:

*[_type == "person"]{
  "greeting": greeting[language == $language][0].value
}

Response Template

When reporting findings to a user:

  1. List each query location that still uses _key as language source.
  2. Show the exact replacement using the same language expression.
  3. Label each replacement as:
    • backwards-compatible (pre-migration), or
    • final (post-migration complete).
  4. Label each match category as runtime, docs/example, or ambiguous.
  5. Call out any ambiguous _key usage that needs manual review.

Mehr Skills von sanity-io

tdd
sanity-io
Testgetriebene Entwicklung mit dem Rot-Grün-Refaktor-Zyklus. Verwenden, wenn der Benutzer Funktionen entwickeln oder Fehler mit TDD beheben möchte, "Rot-Grün-Refaktor" erwähnt, möchte…
performance-optimization
sanity-io
Optimiert die Anwendungsleistung. Verwenden Sie, wenn Leistungsanforderungen bestehen, wenn Sie Leistungsrückgänge vermuten oder wenn Core Web Vitals oder Ladezeiten…
content-experimentation-best-practices
sanity-io
Strukturierte Anleitung für die Konzeption, Durchführung und Analyse von Content-Experimenten zur Verbesserung von Conversion und Engagement. Behandelt Hypothesen-Frameworks, Metrikauswahl, Stichprobengrößenberechnung und statistische Signifikanztests bei A/B- und multivariaten Experimenten. Enthält detaillierte Ressourcen zu p-Werten, Konfidenzintervallen, Power-Analyse und Bayes'schen Methoden zur Ergebnisinterpretation. Bietet CMS-Integrationsmuster für die Verwaltung von Varianten auf Feldebene und die Anbindung externer...
content-modeling-best-practices
sanity-io
Strukturierte Content-Modellierungsanleitung für Schema-Design, Wiederverwendbarkeit und Multi-Channel-Auslieferung. Behandelt Kernprinzipien: Behandlung von Inhalten als Daten statt als Seiten, Aufrechterhaltung einzelner Quellen der Wahrheit, Design für zukünftige Kanäle und Optimierung für Redaktionsworkflows. Enthält Entscheidungsrahmen für Referenzen versus eingebettete Objekte, Trennung von Belangen und Content-Wiederverwendungsmuster. Bietet Taxonomie- und Klassifikationsanleitung für flache, hierarchische und facettierte Ansätze. Gilt für...
portable-text-conversion
sanity-io
Konvertieren Sie HTML- und Markdown-Inhalte in Portable Text-Blöcke für Sanity. Verwenden Sie dies beim Migrieren von Inhalten aus Legacy-CMS, beim Importieren von HTML oder Markdown in Sanity,…
portable-text-serialization
sanity-io
Portable Text in React, Svelte, Vue, Astro, HTML, Markdown und Klartext rendern und serialisieren. Verwenden Sie dies bei der Implementierung von Portable Text Rendering in einem beliebigen Frontend…
sanity-best-practices
sanity-io
Umfassende Best Practices und Integrationsleitfäden für die Sanity CMS-Entwicklung über Frameworks und Themen hinweg. Behandelt über 10 Framework-Integrationen, darunter Next.js, Nuxt, Astro, Remix, SvelteKit und Angular mit frameworkspezifischen Mustern und Einrichtungsanleitungen. Enthält Themenleitfäden für Schema-Design, GROQ-Abfrageoptimierung, Visual Editing, Portable Text, Bilder, TypeGen, Lokalisierung und Content-Migrationen. Bietet eine Kurzreferenzstruktur zum Laden nur relevanter Leitfäden basierend auf dem Aufgabentyp,...
sanity-migration
sanity-io
Plant, implementiert und überprüft Migrationen von anderen CMS- und Contentsystemen nach Sanity. Verwenden bei Migration oder Replatforming zu Sanity von AEM, Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal, Markdown/MDX/Frontmatter-Dateien, WXR/XML-Exporten, CMS-APIs, Datenbank-Dumps, statischem HTML oder beim Entwerfen von Extraktions-, Transformations-, Portable-Text-Konvertierungs-, Asset-Migrations-, Redirect-, Validierungs- und Cutover-Workflows.
data-analysisdatabasedevelopment