i18n-array-groq-query-migration

tarafından sanity-io

Kullanıcılar v4'ten v5'e geçişten bahsettiğinde, sanity-plugin-internationalized-array için dilin _key'den okunduğu eski GROQ kalıplarını tespit et ve güncelle, veya…

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.

sanity-io tarafından daha fazla skill

tdd
sanity-io
Kırmızı-yeşil-yeniden düzenleme döngüsüyle test odaklı geliştirme. Kullanıcı TDD kullanarak özellikler geliştirmek veya hataları düzeltmek istediğinde, "kırmızı-yeşil-yeniden düzenleme"den bahsettiğinde, istediğinde…
performance-optimization
sanity-io
Uygulama performansını optimize eder. Performans gereksinimleri olduğunda, performans düşüşlerinden şüphelendiğinizde veya Core Web Vitals ya da yükleme süreleri…
content-experimentation-best-practices
sanity-io
Dönüşüm ve etkileşimi artırmak için içerik deneyleri tasarlama, yürütme ve analiz etme konusunda yapılandırılmış rehberlik. Hipotez çerçeveleri, metrik seçimi, örneklem büyüklüğü hesaplama ve A/B ile çok değişkenli deneylerde istatistiksel anlamlılık testini kapsar. Sonuçları yorumlamak için p-değerleri, güven aralıkları, güç analizi ve Bayes yöntemleri hakkında ayrıntılı kaynaklar sunar. Varyantları alan düzeyinde yönetmek ve harici bağlantı kurmak için CMS entegrasyon modelleri sağlar...
content-modeling-best-practices
sanity-io
Yapılandırılmış içerik modelleme rehberliği: şema tasarımı, yeniden kullanılabilirlik ve çok kanallı dağıtım için. Temel prensipleri kapsar: içeriği sayfa yerine veri olarak ele almak, tek doğruluk kaynağını korumak, gelecekteki kanallar için tasarlamak ve editör iş akışlarını optimize etmek. Referanslar ile gömülü nesneler arasında karar çerçeveleri, endişelerin ayrıştırılması ve içerik yeniden kullanım desenleri sunar. Düz, hiyerarşik ve yönlü yaklaşımlar için taksonomi ve sınıflandırma rehberliği sağlar. Şunlar için geçerlidir...
portable-text-conversion
sanity-io
HTML ve Markdown içeriğini Sanity için Portable Text bloklarına dönüştürün. Eski CMS'lerden içerik taşırken, HTML veya Markdown'ı Sanity'ye aktarırken kullanın.
portable-text-serialization
sanity-io
Portable Text'i React, Svelte, Vue, Astro, HTML, Markdown ve düz metne dönüştürüp serileştirin. Herhangi bir ön uçta Portable Text işleme uygularken kullanın…
sanity-best-practices
sanity-io
Sanity CMS geliştirme için çerçeveler ve konular arasında kapsamlı en iyi uygulamalar ve entegrasyon kılavuzları. Next.js, Nuxt, Astro, Remix, SvelteKit ve Angular dahil olmak üzere 10'dan fazla çerçeve entegrasyonunu, çerçeveye özel desenler ve kurulum rehberliği ile kapsar. Şema tasarımı, GROQ sorgu optimizasyonu, Görsel Düzenleme, Portable Text, görseller, TypeGen, yerelleştirme ve içerik taşımaları için konu kılavuzları içerir. Görev türüne göre yalnızca ilgili kılavuzları yüklemek için hızlı başvuru yapısı sağlar,...
sanity-migration
sanity-io
Diğer CMS ve içerik sistemlerinden Sanity’ye geçişleri planlar, uygular ve gözden geçirir. AEM, Adobe Experience Manager, Contentful, Strapi, Webflow, WordPress, Payload, Drupal, Markdown/MDX/frontmatter dosyaları, WXR/XML dışa aktarımları, CMS API’leri, veritabanı dökümleri, statik HTML’den Sanity’ye geçiş veya platform değişikliği yaparken ya da çıkarma, dönüştürme, Portable Text çevirisi, varlık geçişi, yönlendirmeler, doğrulama ve kesinti iş akışları tasarlarken kullanın.
data-analysisdatabasedevelopment