Steps to add support for an additional language to a website and recommendations for tools and plugins.
Adding support for a second language to your Sanity website involves several key steps and decisions. Let me walk you through the process:
Choose Your Localization Pattern
First, you'll need to decide between two main approaches that Sanity supports:
1. Document-level localization (recommended): Creates separate documents for each language version. This is cleaner and helps avoid attribute limit issues, especially if you're using Portable Text fields.
2. Field-level localization: Stores translations within the same document. While convenient for simple use cases, it's not recommended for Portable Text fields as it can quickly consume attribute limits.
Implementation Steps
Set up your content model to support multiple languages. For document-level localization, you'll typically add a language field to your documents and create a reference system to link translations together.
Install a localization plugin. The official Document Internationalization plugin is the recommended tool for managing translations. It helps you create unique translations of documents and manage multilingual content versions, with each language as a separate document linked through a shared reference.
Configure your Studio. You can also localize the Studio interface itself so your content editors can work in their preferred language—this was enhanced in Studio v3.22.0 with new localization APIs.
Update your frontend to handle language switching. If you're using Next.js, it has built-in internationalization support that works well with Sanity.
Recommended Tools & Plugins
- Document Internationalization plugin (
@sanity/document-internationalization): The official solution for managing translations at the document level, developed by Sanity's team - Intl-input plugin: For field-level localization if that fits your use case better
- AI Assist: Sanity offers AI-powered translation capabilities via Agent Actions to help speed up the translation process
- Translation service integrations: Smartling and Transifex connectors are available for professional translation workflows
Best Practices
Plan your structure upfront: Think about text expansion (some languages need more space), different writing systems, and whether you'll need right-to-left support. Use proper UTF-8 encoding from the start.
Create clear workflows: Set up your Studio so editors can easily see what content is translated and what still needs translation. The Document Internationalization plugin provides good UI for this with its shared reference system.
Think beyond just translation: True localization goes beyond words to include cultural adaptation, date/number formatting, currency, and region-specific imagery.
Implement fallback strategies: Decide what happens when content isn't available in a language—will you show the default language or hide the content?
Consider SEO: Each language version should have proper meta tags, hreflang attributes, and language-specific internal linking for better search engine visibility.
The beauty of Sanity's approach is its flexibility—you can start simple with just document-level translations and expand to more sophisticated workflows as your needs grow. The structured content model makes it much easier to manage multilingual content compared to traditional CMSs, and with over 60 localization-related tools in the ecosystem, you have plenty of options as your requirements evolve.
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.