<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sachintha Kodagoda</title>
    <description>The latest articles on DEV Community by Sachintha Kodagoda (@sacsand_sandaruvan_b1edba).</description>
    <link>https://dev.to/sacsand_sandaruvan_b1edba</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2420258%2F3990d13a-9aab-47bd-8822-76dfa5759e40.jpg</url>
      <title>DEV Community: Sachintha Kodagoda</title>
      <link>https://dev.to/sacsand_sandaruvan_b1edba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sacsand_sandaruvan_b1edba"/>
    <language>en</language>
    <item>
      <title>Agent-Native Localization for 2026 and Beyond</title>
      <dc:creator>Sachintha Kodagoda</dc:creator>
      <pubDate>Mon, 15 Jun 2026 09:24:49 +0000</pubDate>
      <link>https://dev.to/sacsand_sandaruvan_b1edba/agent-native-localization-for-2026-and-beyond-5438</link>
      <guid>https://dev.to/sacsand_sandaruvan_b1edba/agent-native-localization-for-2026-and-beyond-5438</guid>
      <description>&lt;p&gt;Software teams are shipping globally earlier than ever. A product can launch in one market today and need Spanish, French, Japanese, German, Arabic, or Hindi support tomorrow. The old way of handling that work was built for a slower software cycle: export strings, upload files, wait for translators, download translations, fix broken keys, repeat.&lt;/p&gt;

&lt;p&gt;i18.dev is built for a different world. It is a localization platform designed for teams that already work with AI coding agents, modern frameworks, CLI workflows, and continuous delivery.&lt;/p&gt;

&lt;p&gt;Instead of treating localization as a separate project management process, i18.dev brings localization directly into the developer workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem With Legacy Translation Systems
&lt;/h2&gt;

&lt;p&gt;Traditional translation management systems were useful when software releases happened in long cycles. They usually revolve around dashboards, file uploads, manual string extraction, per-seat pricing, per-word pricing, and a lot of operational coordination.&lt;/p&gt;

&lt;p&gt;That model creates friction for modern teams.&lt;/p&gt;

&lt;p&gt;Developers still need to find hardcoded strings across the codebase. Someone has to create translation keys, wire the i18n library, keep locale files in sync, copy strings into a translation platform, check whether translations were approved, and then bring the finished work back into the repository.&lt;/p&gt;

&lt;p&gt;Legacy systems often assume localization starts after the product is already built. For modern product teams, that is too late.&lt;/p&gt;

&lt;p&gt;Common pain points include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manual string extraction from frontend code.&lt;/li&gt;
&lt;li&gt;Long setup guides for each framework and i18n library.&lt;/li&gt;
&lt;li&gt;Pricing based on words, seats, projects, or hidden enterprise tiers.&lt;/li&gt;
&lt;li&gt;Translation workflows that live outside the developer environment.&lt;/li&gt;
&lt;li&gt;Slow handoffs between developers, product teams, and translators.&lt;/li&gt;
&lt;li&gt;Review processes that are hard to connect back to the codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result is predictable: localization becomes a release blocker instead of a normal part of building software.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes i18.dev Different
&lt;/h2&gt;

&lt;p&gt;i18.dev is agent-native. That means it is designed to work with the tools developers already use in 2026: Cursor, Claude, Codex, terminal workflows, pull requests, and automated code changes.&lt;/p&gt;

&lt;p&gt;The key idea is simple: your AI coding agent should be able to understand your localization state and take the next correct action.&lt;/p&gt;

&lt;p&gt;i18.dev provides the platform, project context, translation memory, glossary, dashboard, and CLI commands. Your coding agent uses that information to update the codebase.&lt;/p&gt;

&lt;p&gt;This turns localization from a manual workflow into a guided development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  How i18.dev Works
&lt;/h2&gt;

&lt;p&gt;The i18.dev workflow starts inside your project.&lt;/p&gt;

&lt;p&gt;First, you initialize your preferred i18n setup. For a Next.js app, that might mean setting up a library such as next-intl. The goal is not to force every team into one framework or one translation format. The goal is to help your existing stack become multilingual faster.&lt;/p&gt;

&lt;p&gt;Then i18.dev helps your agent scan the codebase, detect hardcoded user-facing strings, extract them into translation keys, and replace inline copy with the right i18n function calls.&lt;/p&gt;

&lt;p&gt;After extraction, translations are generated and managed through i18.dev using LLM-token based translation instead of old per-word fee models. Teams can review, confirm, and refine translations in the dashboard, then pull approved translations back into the repository.&lt;/p&gt;

&lt;p&gt;A typical workflow looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set up the i18n library&lt;/span&gt;
npx i18dev init &lt;span class="nt"&gt;--framework&lt;/span&gt; next-intl

&lt;span class="c"&gt;# Extract strings, update code, and translate&lt;/span&gt;
npx i18dev extract &lt;span class="nt"&gt;--write&lt;/span&gt; &lt;span class="nt"&gt;--translate&lt;/span&gt;

&lt;span class="c"&gt;# Pull reviewed translations back into the repo&lt;/span&gt;
npx i18dev pull &lt;span class="nt"&gt;--confirmed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Behind those commands is a bigger workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;i18.dev understands your project structure.&lt;/li&gt;
&lt;li&gt;The CLI gives your agent deterministic commands to run.&lt;/li&gt;
&lt;li&gt;The dashboard tracks strings, languages, and review state.&lt;/li&gt;
&lt;li&gt;Prompt suggestions tell your agent what to do next.&lt;/li&gt;
&lt;li&gt;Confirmed translations sync back into version-controlled locale files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps localization close to the code, close to review, and close to shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why CLI-First Matters
&lt;/h2&gt;

&lt;p&gt;Many localization tools try to solve developer workflow through plugins, browser dashboards, or complex integrations. i18.dev takes a CLI-first approach because the terminal is the shared language of modern development tools.&lt;/p&gt;

&lt;p&gt;AI coding agents understand commands, file paths, exit codes, diffs, and build output. A CLI workflow is fast, scriptable, reviewable, and easy to run in local development, CI, or an automated agent session.&lt;/p&gt;

&lt;p&gt;That makes i18.dev different from tools that depend heavily on manual clicking or editor-specific extensions.&lt;/p&gt;

&lt;p&gt;CLI-first means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works across Cursor, Claude, Codex, Replit, terminals, and CI.&lt;/li&gt;
&lt;li&gt;Produces code changes that can be reviewed in pull requests.&lt;/li&gt;
&lt;li&gt;Fits naturally into scripts and release workflows.&lt;/li&gt;
&lt;li&gt;Avoids fragile browser automation and plugin lock-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developer teams, this is a major advantage. Localization becomes something your development workflow can operate on directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intelligent Prompt Suggestions
&lt;/h2&gt;

&lt;p&gt;One of the biggest differences in i18.dev is that it does not just store translations. It helps generate the next useful prompt for your coding agent.&lt;/p&gt;

&lt;p&gt;For example, if your team adds Japanese as a target language, confirms checkout translations, or changes the i18n library configuration, i18.dev can suggest a focused prompt that tells the agent exactly what to update.&lt;/p&gt;

&lt;p&gt;Instead of reading documentation, searching through settings, or guessing the next step, the developer can copy a prompt and let the agent continue the work.&lt;/p&gt;

&lt;p&gt;This is where i18.dev moves beyond a traditional translation dashboard. It becomes an operational layer between your localization state and your codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better Translation Economics
&lt;/h2&gt;

&lt;p&gt;Legacy localization platforms often charge by seat, word, hosted key, machine translation character, or opaque enterprise package. Those models made sense when human translation volume was the main unit of work.&lt;/p&gt;

&lt;p&gt;In 2026, more software teams use LLMs to create, refine, and adapt translations. That changes the cost structure.&lt;/p&gt;

&lt;p&gt;i18.dev is designed around stored strings and LLM token bandwidth. This makes the relationship between usage and cost clearer for teams that translate product UI, onboarding flows, checkout pages, error messages, and documentation snippets across many languages.&lt;/p&gt;

&lt;p&gt;The practical benefit is simple: teams avoid the feeling that every additional language or translation pass creates another unpredictable per-word bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content-Aware Localization
&lt;/h2&gt;

&lt;p&gt;Good localization is not just replacing English words with another language. A checkout button, an error message, a billing warning, and an onboarding headline all need different tone and context.&lt;/p&gt;

&lt;p&gt;i18.dev is built around content-aware localization. The goal is to preserve meaning, product intent, and user experience across languages.&lt;/p&gt;

&lt;p&gt;That matters more as products become more global. Users do not judge a product by whether the translation exists. They judge whether it feels natural, trustworthy, and clear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why i18.dev Is the Best Choice Moving Forward
&lt;/h2&gt;

&lt;p&gt;i18.dev is a strong fit for teams that want localization to keep up with modern software development.&lt;/p&gt;

&lt;p&gt;It is best for teams that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use AI coding agents as part of daily development.&lt;/li&gt;
&lt;li&gt;Want to convert an existing app into a multilingual product faster.&lt;/li&gt;
&lt;li&gt;Prefer CLI workflows over manual dashboard operations.&lt;/li&gt;
&lt;li&gt;Need translation review without disconnecting from the repository.&lt;/li&gt;
&lt;li&gt;Want predictable localization economics as language coverage grows.&lt;/li&gt;
&lt;li&gt;Care about context, tone, and product-quality translations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest shift is that i18.dev treats localization as an engineering workflow, not just a translation storage problem.&lt;/p&gt;

&lt;p&gt;That makes it especially relevant for 2026 and beyond. As AI agents become more capable, the best platforms will not only provide APIs and dashboards. They will give agents the right context, the right commands, and the right next steps.&lt;/p&gt;

&lt;p&gt;i18.dev is built for that future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Legacy translation systems helped teams manage multilingual content, but they were not designed for agent-driven software development.&lt;/p&gt;

&lt;p&gt;i18.dev is different. It connects the dashboard, CLI, translations, review state, project context, and coding agent into one workflow. Developers can extract strings, convert code, translate content, review changes, and sync confirmed translations without turning localization into a separate release project.&lt;/p&gt;

&lt;p&gt;For teams building global products in 2026, that difference matters.&lt;/p&gt;

&lt;p&gt;i18.dev helps teams ship multilingual apps faster, with less manual work, clearer costs, and a workflow that matches how modern software is actually built.&lt;/p&gt;

&lt;p&gt;Try &lt;a href="https://i18.dev" rel="noopener noreferrer"&gt;i18.dev&lt;/a&gt; for free! &lt;/p&gt;

</description>
      <category>i18dev</category>
      <category>i18n</category>
      <category>localization</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Translate Your Next.js App with React Intl + i18.dev (In Under 1 Minute)</title>
      <dc:creator>Sachintha Kodagoda</dc:creator>
      <pubDate>Mon, 15 Jun 2026 08:20:43 +0000</pubDate>
      <link>https://dev.to/sacsand_sandaruvan_b1edba/how-to-translate-your-nextjs-app-with-react-intl-i18dev-in-under-1-minute-5am2</link>
      <guid>https://dev.to/sacsand_sandaruvan_b1edba/how-to-translate-your-nextjs-app-with-react-intl-i18dev-in-under-1-minute-5am2</guid>
      <description>&lt;p&gt;You already built your app in Next.js with React. Now make it multilingual.&lt;/p&gt;

&lt;p&gt;Here's the exact workflow to go from single-language to fully translated using i18.dev's intelligent prompt system — no documentation rabbit holes, no per-word fees, no legacy TMS overhead.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Set Up Your i18.dev Project (30 seconds)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;a href="https://i18.dev" rel="noopener noreferrer"&gt;i18.dev&lt;/a&gt; and sign in (or create a free account).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Aceess  to &lt;strong&gt;Dashboard&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Free tier includes:&lt;/strong&gt; 100 stored strings, 25K in / 10K out LLM tokens, 20 team members, unlimited languages.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 2: Get Your Environment Variables
&lt;/h2&gt;

&lt;p&gt;From your i18.dev dashboard page:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;"Quick Setup"&lt;/strong&gt; to open the getting-started guide.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;"Create Project + PAT"&lt;/strong&gt; if you haven't already. This will create new project and Personal Access Token.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy your environment variables to your &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;I18DEV_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_api_key_here
&lt;span class="nv"&gt;I18DEV_PAT_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your_pat_token_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Add them to your Next.js project:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;The i18dev CLI auto-loads &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.env.local&lt;/code&gt;, &lt;code&gt;.env.development&lt;/code&gt;, and &lt;code&gt;.env.production&lt;/code&gt;. No extra configuration needed.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 3: Copy the Prompts from i18.dev (30 seconds)
&lt;/h2&gt;

&lt;p&gt;On the i18.dev quickstart page, select &lt;strong&gt;react-intl&lt;/strong&gt; as your i18n library. Two prompts appear:&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt 1: "01-Setup Prompt"
&lt;/h3&gt;

&lt;p&gt;Click &lt;strong&gt;Copy&lt;/strong&gt;. Paste it into Cursor, Claude, Codex, or any AI editor connected to your repo.&lt;/p&gt;

&lt;p&gt;This prompt tells your AI agent to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install and configure &lt;strong&gt;react-intl&lt;/strong&gt; + &lt;strong&gt;i18dev-cli&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Scan your repo to detect your framework, package manager, and source structure&lt;/li&gt;
&lt;li&gt;Find your header/layout and add a &lt;strong&gt;language switch component&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configure &lt;code&gt;i18dev.config.cjs&lt;/code&gt; so &lt;code&gt;i18dev pull&lt;/code&gt; writes files to &lt;code&gt;src/lang/{locale}.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create an &lt;strong&gt;i18dev-readme.md&lt;/strong&gt; file in your project for future reference&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your agent runs commands like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install i18dev CLI&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; i18dev-cli

&lt;span class="c"&gt;# Initialize configuration&lt;/span&gt;
npx i18dev init &lt;span class="nt"&gt;--framework&lt;/span&gt; react-intl

&lt;span class="c"&gt;# Verify setup&lt;/span&gt;
npx i18dev status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Prompt 2: "02-Localize a Page or Component"
&lt;/h3&gt;

&lt;p&gt;Click &lt;strong&gt;Copy&lt;/strong&gt;. Paste it into your AI editor and specify your target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tsx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prompt tells your agent to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find all user-facing strings in the selected file&lt;/li&gt;
&lt;li&gt;Replace them with &lt;strong&gt;react-intl&lt;/strong&gt; translation calls (&lt;code&gt;FormattedMessage&lt;/code&gt;, &lt;code&gt;useIntl&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Push new locale strings to the &lt;strong&gt;i18.dev dashboard&lt;/strong&gt; automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your agent runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Extract strings and push to i18.dev&lt;/span&gt;
npx i18dev extract &lt;span class="nt"&gt;--write&lt;/span&gt;
npx i18dev push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is your section &lt;strong&gt;extended&lt;/strong&gt; with the additional information you requested:&lt;/p&gt;




&lt;h3&gt;
  
  
  Prompt 2: "02-Localize a Page or Component"
&lt;/h3&gt;

&lt;p&gt;Click &lt;strong&gt;Copy&lt;/strong&gt;. Paste it into your AI editor and specify your target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;Target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tsx&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This prompt tells your agent to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find all user-facing strings in the selected file&lt;/li&gt;
&lt;li&gt;Replace them with &lt;strong&gt;react-intl&lt;/strong&gt; translation calls (&lt;code&gt;FormattedMessage&lt;/code&gt;, &lt;code&gt;useIntl&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Push new locale strings to the &lt;strong&gt;i18.dev dashboard&lt;/strong&gt; automatically&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your agent runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Extract strings and push to i18.dev&lt;/span&gt;
npx i18dev extract &lt;span class="nt"&gt;--write&lt;/span&gt;
npx i18dev push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  What Happens After You Push
&lt;/h4&gt;

&lt;p&gt;Once the push completes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;i18.dev automatically creates a new namespace&lt;/strong&gt; for your page or component (e.g., &lt;code&gt;page.home&lt;/code&gt;, &lt;code&gt;checkout.form&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Your translations appear in the project language view&lt;/strong&gt; — each string is listed with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source language (original English)&lt;/li&gt;
&lt;li&gt;Target translations (auto-generated by AI)&lt;/li&gt;
&lt;li&gt;Status (pending review / approved)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Refresh the i18.dev dashboard&lt;/strong&gt; to see the latest strings and translations populate in real time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review and approve&lt;/strong&gt; translations directly in the dashboard, or invite team members to refine them&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Pro Tip:&lt;/strong&gt; Each time you run &lt;code&gt;npx i18dev push&lt;/code&gt;, i18.dev detects &lt;strong&gt;new strings&lt;/strong&gt;, &lt;strong&gt;updated strings&lt;/strong&gt;, and &lt;strong&gt;removed strings&lt;/strong&gt; — updating your dashboard automatically. No manual CSV uploads. No copy-pasting JSON files.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 4: Add a New Language
&lt;/h2&gt;

&lt;p&gt;Once your strings are pushed to i18.dev:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open your &lt;a href="https://i18.dev" rel="noopener noreferrer"&gt;i18.dev dashboard&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to your project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;"Add Language"&lt;/strong&gt; from the left sidebar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the language you want (e.g., Spanish, French, German, Japanese).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;i18.dev's AI automatically translates all your strings instantly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Review and approve the translations (or invite a translator to refine).&lt;/p&gt;

&lt;h3&gt;
  
  
  The Smart Part: Auto-Generated Prompts
&lt;/h3&gt;

&lt;p&gt;As soon as you add a language, a notification appears in the top-right corner:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"New language added — Copy prompt"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Click &lt;strong&gt;"Copy prompt"&lt;/strong&gt; — i18.dev has already written the exact prompt you need. Paste it into your AI editor. Done.&lt;/p&gt;

&lt;p&gt;No manual prompt writing. No guessing. i18.dev knows you just added Japanese, so it generates the precise prompt to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pull &lt;code&gt;ja.json&lt;/code&gt; via &lt;code&gt;i18dev pull&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Wire it into your app's &lt;code&gt;IntlProvider&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Update the language switcher list
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Pull the new translations&lt;/span&gt;
npx i18dev pull

&lt;span class="c"&gt;# Verify&lt;/span&gt;
npx i18dev status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 5:  Prompts on Demand
&lt;/h2&gt;

&lt;p&gt;Instead of requiring hours of documentation reading, &lt;a href="https://i18.dev/" rel="noopener noreferrer"&gt;i18.dev&lt;/a&gt; is designed with an AI-first workflow — delivering a significantly better user experience. Whenever you need a prompt, simply click the &lt;strong&gt;mini sidebar Prompts button&lt;/strong&gt; in the i18.dev project view. It provides ready-made prompts for your for your daily tasks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Setup prompts&lt;/strong&gt; — for new developers joining the project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localization prompts&lt;/strong&gt; — to translate new pages or components&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync prompts&lt;/strong&gt; — to pull confirmed translations into your repo&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;One shot prompt&lt;/strong&gt; — one-prompt to localize project at once ( Recommend only to run this on paid plan ) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and more ...&lt;/p&gt;

&lt;p&gt;Examples of what the sidebar generates:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"You confirmed 12 checkout strings in Japanese. Pull them into your repo."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Copy. Paste. Run.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why i18.dev + React Intl for Next.js?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Legacy TMS&lt;/th&gt;
&lt;th&gt;i18.dev&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Read docs for 2 hours&lt;/td&gt;
&lt;td&gt;Copy a prompt, paste, done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-word translation fees&lt;/td&gt;
&lt;td&gt;LLM tokens included in your plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seat-based pricing&lt;/td&gt;
&lt;td&gt;20 team members free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual string extraction&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;i18dev extract&lt;/code&gt; scans your codebase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser-based file uploads&lt;/td&gt;
&lt;td&gt;CLI: &lt;code&gt;i18dev push&lt;/code&gt; / &lt;code&gt;i18dev pull&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor lock-in&lt;/td&gt;
&lt;td&gt;Works with react-intl, next-intl, i18next, vue-i18n, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Key i18.dev CLI Commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Setup and configuration&lt;/span&gt;
npx i18dev init &lt;span class="nt"&gt;--framework&lt;/span&gt; react-intl    &lt;span class="c"&gt;# Create i18dev.config.cjs&lt;/span&gt;
npx i18dev setup                          &lt;span class="c"&gt;# Scan repo, suggest config&lt;/span&gt;

&lt;span class="c"&gt;# Translation workflow&lt;/span&gt;
npx i18dev extract &lt;span class="nt"&gt;--write&lt;/span&gt;                &lt;span class="c"&gt;# Extract strings from code&lt;/span&gt;
npx i18dev push                           &lt;span class="c"&gt;# Push strings to i18.dev dashboard&lt;/span&gt;
npx i18dev pull                           &lt;span class="c"&gt;# Pull translations into your repo&lt;/span&gt;
npx i18dev pull &lt;span class="nt"&gt;--confirmed&lt;/span&gt;               &lt;span class="c"&gt;# Only pull reviewed translations&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Content-Aware Localization
&lt;/h3&gt;

&lt;p&gt;i18.dev doesn't just translate words — it adapts to context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Checkout CTAs&lt;/strong&gt; → natural call-to-action phrasing per locale&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error messages&lt;/strong&gt; → culturally appropriate tone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding flows&lt;/strong&gt; → region-aware user experience&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Reference: React Intl in Next.js
&lt;/h2&gt;

&lt;p&gt;After i18.dev sets up your project, here's how you use react-intl in your components:&lt;/p&gt;

&lt;h3&gt;
  
  
  Server Components
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// app/[locale]/page.tsx&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getMessages&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@/i18n/server&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FormattedMessage&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-intl&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;HomePage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getMessages&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;IntlProvider&lt;/span&gt; &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FormattedMessage&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hero.title"&lt;/span&gt; &lt;span class="na"&gt;defaultMessage&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Welcome"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FormattedMessage&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hero.subtitle"&lt;/span&gt;
          &lt;span class="na"&gt;defaultMessage&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Build faster with our platform"&lt;/span&gt;
        &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;IntlProvider&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Client Components
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;use client&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useIntl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;FormattedMessage&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-intl&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;HeroSection&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useIntl&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FormattedMessage&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"hero.title"&lt;/span&gt; &lt;span class="na"&gt;defaultMessage&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Welcome"&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;intl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;formatMessage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cta.primary&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;defaultMessage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Get Started&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;section&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pluralization (ICU MessageFormat)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;FormattedMessage&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cart.itemCount"&lt;/span&gt;
  &lt;span class="na"&gt;defaultMessage&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"{count, plural, =0 {No items} one {# item} other {# items}}"&lt;/span&gt;
  &lt;span class="na"&gt;values&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  What i18.dev Creates in Your Repo
&lt;/h2&gt;

&lt;p&gt;After running the setup prompt, your project includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-nextjs-app/
├── src/
│   ├── lang/                     # Translation files (from i18dev pull)
│   │   ├── en.json
│   │   ├── es.json
│   │   └── ja.json
│   ├── components/
│   │   └── LanguageSwitcher.tsx  # Auto-generated language switcher
│   └── i18n/
│       └── provider.tsx          # IntlProvider configuration
├── i18dev.config.cjs             # i18dev CLI configuration
├── i18dev-readme.md              # Project reference for your team
└── .env.local                    # I18DEV_API_KEY + I18DEV_PAT_TOKEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;strong&gt;i18dev-readme.md&lt;/strong&gt; file includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which i18n library was used and why&lt;/li&gt;
&lt;li&gt;Where locale files live&lt;/li&gt;
&lt;li&gt;Required environment variables&lt;/li&gt;
&lt;li&gt;CLI commands (setup, init, pull, status, push, extract)&lt;/li&gt;
&lt;li&gt;How the language switcher works&lt;/li&gt;
&lt;li&gt;Code examples for translating text&lt;/li&gt;
&lt;li&gt;How to add new languages (with copy-ready prompt)&lt;/li&gt;
&lt;li&gt;How to add new namespaces (with copy-ready prompt)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Create i18.dev project + PAT&lt;/td&gt;
&lt;td&gt;15 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Add env vars to your project&lt;/td&gt;
&lt;td&gt;15 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Copy Prompt 1 → paste into AI editor&lt;/td&gt;
&lt;td&gt;15 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Copy Prompt 2 → localize your page&lt;/td&gt;
&lt;td&gt;15 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~1 minute&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After setup, adding a new language is two clicks + one paste. i18.dev writes the prompt for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Started Free
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No credit card required&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100 stored strings&lt;/strong&gt; on the free tier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;25K in / 10K out&lt;/strong&gt; LLM tokens/month&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;20 team members&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unlimited languages&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i18.dev/auth/sign-up" rel="noopener noreferrer"&gt;Sign up at i18.dev&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Stop reading docs. Start shipping multilingual.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>nextjs</category>
      <category>react</category>
      <category>internalization</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to Translate Your Existing Lovable app with i18.dev (In Under 1 Minute)</title>
      <dc:creator>Sachintha Kodagoda</dc:creator>
      <pubDate>Wed, 27 May 2026 16:24:10 +0000</pubDate>
      <link>https://dev.to/sacsand_sandaruvan_b1edba/how-to-translate-your-existing-lovable-app-with-i18dev-in-under-1-minute-1749</link>
      <guid>https://dev.to/sacsand_sandaruvan_b1edba/how-to-translate-your-existing-lovable-app-with-i18dev-in-under-1-minute-1749</guid>
      <description>&lt;h1&gt;
  
  
  You Already Built Your App in Lovable. Now Make It Multilingual.
&lt;/h1&gt;

&lt;p&gt;Here’s the exact workflow to go from single-language to fully translated using i18.dev’s built-in Lovable integration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Set Up Your i18.dev Project (30 seconds)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://i18.dev" rel="noopener noreferrer"&gt;i18.dev&lt;/a&gt; and sign in (or create an account).&lt;/li&gt;
&lt;li&gt;Open the &lt;a href="https://i18.dev/dashboard/projects" rel="noopener noreferrer"&gt;Projects page&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it — you’re ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Add Your i18.dev Environment Variables in Lovable
&lt;/h2&gt;

&lt;p&gt;In the i18.dev project page, click the &lt;strong&gt;"Quick Setup"&lt;/strong&gt; button to open the 1-minute getting-started guide.&lt;/p&gt;

&lt;p&gt;then click the &lt;strong&gt;"Create Project + PAT"&lt;/strong&gt; button to create a project and generate your Personal Access Token.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjfxjd2swzyjr5cne9ku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjfxjd2swzyjr5cne9ku.png" alt="Create Project + PAT" width="799" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, ask Lovable to set up the keys for you:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Set up keys for i18.dev — #keys from above ..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Follow the chat instructions to complete the configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Choose “Lovable + React” as Your Library
&lt;/h2&gt;

&lt;p&gt;i18.dev gives you two ready-made prompts. Click &lt;strong&gt;Copy&lt;/strong&gt; on each and paste them directly into Lovable’s chat:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8mbm1byk7z604n69t78.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm8mbm1byk7z604n69t78.png" alt="i18.dev gives you two ready-made prompts" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt 1: “01-Setup prompt”
&lt;/h3&gt;

&lt;p&gt;Paste this into Lovable. It will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up Lovable + React + FormatJS + i18.dev CLI&lt;/li&gt;
&lt;li&gt;Find your header and add a language switch component&lt;/li&gt;
&lt;li&gt;Create an i18.dev readme file in your project for reference&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prompt 2: “02-Ask to translate your home page”
&lt;/h3&gt;

&lt;p&gt;Paste this into Lovable. It will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find all user-facing strings in the selected page&lt;/li&gt;
&lt;li&gt;Replace strings with Lovable + React translation calls&lt;/li&gt;
&lt;li&gt;Push new locale strings to the i18.dev dashboard automatically&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 4: Add a New Language
&lt;/h2&gt;

&lt;p&gt;Once your strings are pushed to i18.dev:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open your i18.dev dashboard.&lt;/li&gt;
&lt;li&gt;Go to your project — &lt;strong&gt;"Quick Start Project"&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Add Language"&lt;/strong&gt; from the left sidebar.&lt;/li&gt;
&lt;li&gt;Select the language you want (e.g., Spanish, French, German, Japanese).&lt;/li&gt;
&lt;li&gt;i18.dev’s AI automatically translates all your strings instantly.&lt;/li&gt;
&lt;li&gt;Review &amp;amp; approve the translations (or invite a translator to refine).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvz55n6ys3sunknvvcjhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvz55n6ys3sunknvvcjhu.png" alt="i18.dev project view" width="799" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now here’s the smart part: as soon as you add the language, a notification pops up in the top-right corner:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr64ha2tbfd5v8q6lx993.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr64ha2tbfd5v8q6lx993.png" alt="i18.dev built-in notification assistant" width="756" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"Copy prompt"&lt;/strong&gt; — i18.dev has already written the exact prompt you need. Paste it into Lovable. Done.&lt;/p&gt;

&lt;p&gt;No manual prompt writing. No guessing. i18.dev knows you just added Arabic, so it generates the precise prompt to pull &lt;code&gt;ar.json&lt;/code&gt;, wire it into your app, and update the language switch list.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: The Mini Sidebar — Prompts on Demand
&lt;/h2&gt;

&lt;p&gt;Anytime you need a prompt, click the &lt;strong&gt;mini sidebar Prompts button&lt;/strong&gt; in the i18.dev project view. It shows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiommtctsm20cg0xya0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiommtctsm20cg0xya0k.png" alt="Prompts Library" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you have a translation-ready web app in minutes. Invite your translator or localization expert to fine-tune wording using i18.dev project settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy Vibe Coding!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>nextjs</category>
      <category>i18n</category>
    </item>
  </channel>
</rss>
