Joint session with Vercel: How to build intelligent storefronts (May 15th)

Why are field-level translations not recommended for PortableText?

10 repliesLast updated: Nov 29, 2025

Hello! I am reading that the
field-level translations
is not recommended for content using
PortableText
. Has anyone tried / knows why this is the case?Source:
https://www.sanity.io/plugins/document-internationalization
AI Update

The recommendation against using field-level translations with Portable Text in Sanity is primarily due to attribute count concerns.

Why Field-Level Translation Objects Don't Work Well with Portable Text

When you use the object-based approach for field-level translations (where each language gets its own field like title.en, title.es, etc.), Portable Text content creates a massive number of attributes in your dataset.

Here's why: Portable Text is inherently complex. Each block, span, mark, annotation, and decorator creates its own attributes. When you multiply this by multiple languages using the object approach, you quickly hit Sanity's attribute limits.

For example, a simple Portable Text field might create attributes like:

With field-level objects for 3 languages, you'd get:

This exponentially increases your attribute usage with each additional language.

Better Alternatives

The document-internationalization plugin documentation explicitly recommends document-level translations for Portable Text content. This means:

The Array Exception

If you must use field-level translations with Portable Text, the internationalized-array plugin is a better option than objects, as it uses fewer attributes by storing the language identifier in the _key field rather than creating separate object properties for each language.

However, document-level translation remains the recommended approach for any content-heavy fields like Portable Text.

Show original thread
10 replies

Was this answer helpful?

Sanity – Build the way you think, not the way your CMS thinks

Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.

Related contributions