International SEO

Content Localization with Codex: Adapt Posts for New Markets

Use Codex to localize translated blog posts: swap examples, laws and CTAs, fix formality, and audit every language version for gaps and stale copies.

By Somanath Diksangi12 min read
Content localization with Codex: adapting a translated blog post for a new market with the $blog localize and $blog locale-audit commands

Content localization with Codex picks up where translation stops: Codex takes a post that is already in the target language and adapts its examples, laws, prices, tone and calls to action so it reads as if a local team wrote it. RankCue's Codex Blog kit does this with $blog localize <file> --locale <code>, and $blog locale-audit <directory> checks a whole multilingual blog for missing translations, hreflang gaps and stale versions. This guide covers what localization means for search, how both commands run in Codex, how to read their reports, and how to have Codex apply the fixes.

Key takeaways

  • $blog localize runs after translation. It audits a translated post for signs of foreign origin, then swaps examples, statistics, legal references and calls to action, and fixes the form of address.
  • The kit has ready-made profiles for German-speaking, French-speaking, Spanish-speaking and Japanese markets. Any other locale gets a minimal profile from a custom template.
  • $blog locale-audit checks coverage, content parity, SEO parity, hreflang files and freshness across every language folder.
  • Every stale translation in the audit comes with a ready-to-run command, so Codex can work through the fix list in your repository.
  • Localization doesn't replace a native reviewer. Treat swapped examples and legal references as drafts someone in the market signs off.

The localization commands at a glance

ItemDetails
Command$blog localize <file> --locale <code> for one post, $blog locale-audit <directory> for a multilingual blog
What you give itA translated post and a locale such as de-DE or fr, or the folder holding your language versions
What Codex readsThe translated text, its front matter and the market's cultural profile; for the audit, every post plus any hreflang files
What you get backA localized post (it overwrites the translation by default), an adaptation summary with a cultural fit score, and an audit report with prioritized fixes
NeedsInternet access when Codex searches for local examples and statistics; no API keys
Best forEntering a new market, fixing translations that read as translated, and keeping language versions in sync

What is content localization, and how is it different from translation?

Translation changes the language; localization changes the context. A good German translation of an American post still mentions Walmart, quotes a US survey, cites the CCPA and ends with "Buy now". Every sentence is correct German, and every sentence tells the reader the page was written for someone else.

Localization removes those signals. It swaps the example retailer for one the reader shops at, replaces the US privacy law with the local one, sets the right level of formality, and rewrites the call to action to suit the market. The argument stays the same. The evidence and the voice move.

Hreflang tells search engines which language version to show to which audience, but it can't make a translated page useful. A reader who lands on a page full of foreign brands, laws and prices has little reason to trust it, link to it or share it, however good the grammar.

People in different markets also search differently, comparing against local brands and local rules. Google's guide to managing multi-regional and multilingual sites covers the technical setup for serving each market its own version. Localization makes each version worth serving.

Language versus market

A language isn't a market. Germany, Austria and Switzerland share a language but not always the same retailers or laws. So the localize command takes either a plain language code like de or a full locale code such as es-MX, fr-CA, zh-TW or de-DE. The first part is an ISO 639-1 language code, and the optional second part is an ISO 3166-1 country code. When a code could mean two markets, the skill asks: give it pt and it checks whether you mean pt-BR or pt-PT.

How the localize command runs inside Codex

When you run $blog localize content/blog/de/ki-trends-2026.md --locale de-DE in a Codex task, the skill follows a fixed sequence that you can watch in the task log.

Flow diagram of the localize workflow in Codex, from parsing the locale code and loading a cultural profile through the cultural audit and adaptation to verification and the saved report.
The six steps Codex follows when you run the localize command, with the cultural audit deciding what gets adapted.
  1. Parse the locale. Codex works out the language and, if you gave one, the market.
  2. Load the cultural profile. Four profiles come built in (DACH, Francophone, Hispanic and Japanese), each with substitution tables. For other locales, Codex builds a minimal profile from a custom-locale template.
  3. Audit the post. It lists every element that signals foreign origin, rated critical, recommended or optional.
  4. Adapt the content. It swaps examples, localizes statistics, rewrites calls to action, calibrates tone and replaces legal references, searching the web for local brands, cases and figures.
  5. Verify the result. A checklist confirms every critical target is handled, the form of address is consistent, the post makes the same argument, keywords and headings are intact, and the word count fits the language pair.
  6. Save and report. The localized text overwrites the translated file by default. Ask for a separate {slug}-localized copy if you want to keep the translation. Codex then summarizes every change.

If the file isn't in the expected language, the skill warns you and offers to translate it first.

What the cultural audit looks for

The audit turns "make it sound more German" into a repeatable check. Codex scans the translated post for signals of foreign origin, from brand names to the form of address, and rates each one by severity.

Grid of eight cultural audit checks Codex runs on a translated post, covering brand examples, statistic sources, calls to action, idioms, legal references, cultural references, currency and tone.
The foreign-origin signals Codex looks for before it adapts a translated post for a new market.

Brand examples and statistics

US and UK brands that mean little locally are the clearest giveaway. Codex replaces them inline and keeps the sentence doing the same job. If no fair local match exists, it keeps the original and adds local context. Here is how the skill's quick map handles three common US references:

MarketInstead of WalmartInstead of the FTCInstead of the CCPA
DACHMediaMarktBundeskartellamtDSGVO
FranceCarrefourDGCCRFRGPD
SpainEl Corte InglesCNMCRGPD
Latin AmericaWalmart MXProfeco (Mexico)LGPD (Brazil)
JapanAeonJFTCAPPI

Statistics follow the same logic. Codex looks for a local equivalent, and if it finds one, swaps the figure and the source together, keeping one named source per claim. If there's no local data, the original number stays with its scope stated ("In the US, ..."). Source attribution is never removed.

Calls to action, tone and address

The profiles treat DACH and Japanese readers as preferring informational calls to action, while US copy leans imperative, so a blunt "Buy now" might become "Jetzt entdecken" (discover now). Formality has defaults too. In German, business-to-business posts get Sie while consumer lifestyle posts get du. French starts from vous, and Japanese register changes a lot with the audience. The skill also checks that one form of address runs through the whole post, because slipping from Sie to du halfway reads as careless.

Laws, currency and culture

Foreign laws give way to local ones. A reference to California's CCPA turns into Brazil's LGPD for Brazilian readers, or into the GDPR under its local name for European ones: DSGVO in German, RGPD in French. Codex can add a short local compliance note where it helps. Literal idioms, US dollar prices with no context and foreign holidays get flagged as well, so a Thanksgiving sales example might become the Christmas shopping season.

Check every language version with locale-audit

Language versions drift: a source post gets updated and its translations don't. $blog locale-audit <directory> checks the whole set at once.

Hub diagram showing a multilingual content folder feeding five audit checks, coverage, content parity, SEO parity, hreflang and freshness, that merge into one prioritized report.
How the locale-audit command splits a multilingual blog folder into five checks and merges the results into one report.

Coverage and content parity

Codex works out each post's language from three clues: the folder it sits in (de/, fr/ and so on), its lang and translatedFrom front matter, and any hreflang-map.json file. It builds a matrix of which post exists in which language. For posts in several languages, it compares structure: a different number of H2 and H3 sections is critical, while mismatched FAQ, image and chart counts are high. Word count gets a band per language pair: the skill expects German at +20% to +30% against English, Japanese around -20% and Spanish around +10%.

SEO parity

Each version needs its own SEO elements. The audit checks the title and meta description, that lang is a valid ISO 639-1 code, that schema inLanguage matches it, and that translationOfWork points to the source URL. It flags English alt text, English slugs, and untranslated tags or keywords in non-English posts.

Hreflang and freshness

When the folder includes hreflang output (an hreflang-map.json, an hreflang-sitemap.xml or an hreflang-tags.html file), Codex confirms that each page lists itself, that every pair links both ways, that an x-default points at the source language, and that codes and URL formats are valid and consistent. No hreflang files at all is a critical gap. With the Codex SEO kit installed, the skill also suggests $seo hreflang for your live pages.

Freshness relies on the translatedDate field. A source edited after that date is critical. A translation more than 90 days old, or versions with different lastUpdated dates, get a lower rating. Each stale file gets the exact $blog translate command to refresh it.

Run it in Codex, step by step

  1. Install the Codex Blog kit from the install section, restart Codex, and open a new task in the project that holds your blog. Our guide to installing skills in Codex has the details.
  2. Translate first if you haven't:
text
$blog translate content/blog/en/ai-trends-2026.md --to de
  1. Check your permission mode. The localize command searches the web for local examples and statistics, so depending on your mode, Codex may ask before it uses the internet. Approve those searches.
  2. Run the command on the translated file:
text
$blog localize content/blog/de/ki-trends-2026.md --locale de-DE
  1. Or describe the job in plain language, and Codex picks the skill:
text
Adapt the German version of our AI trends post for readers in Germany. Swap the US examples and laws for local ones, use Sie throughout, and save the result as a separate file.
  1. Audit the multilingual folder. Add --html to also save the report as locale-audit-report.html:
text
$blog locale-audit content/blog

Reading the reports

The localize command ends with a summary like this:

markdown
## Localization complete: [Title]

### Target locale: de-DE (German, Germany)

### Adaptations made
| Type | Count | Examples |
|------|-------|----------|
| Brand examples | [N] | [US brand] -> [local brand] |
| Statistics | [N] | [US survey] -> [local survey] |
| CTAs | [N] | [original CTA] -> [adapted CTA] |
| Tone adjustments | [N] | [casual] -> Sie |
| Legal references | [N] | CCPA -> DSGVO |

### Cultural fit score
- Naturalness: [1-10]
- Market relevance: [1-10]
- Tone match: [1-10]
- Overall: [N]/30

### Remaining recommendations
- [optional adaptations not applied]

The cultural fit score is Codex's own assessment, so use it to aim your native reviewer at tone or at examples.

The locale-audit report opens with an overall health score out of 100 and issue counts, then the coverage matrix, issues by severity, a prioritized fix list and stale-translation alerts:

markdown
### Stale-translation alerts
- de/[post-slug].md (source updated after translation)
  -> Run: $blog translate en/[post-slug].md --to de

### Quick fixes
- Run $blog localize <file> --locale <code> for weak cultural adaptations.

Fix hreflang gaps first, since they affect every version in a set. Then refresh stale translations, close structural gaps, clean up SEO parity details, and add missing translations only for markets you serve.

Apply the fixes with Codex

Many parity issues come down to front matter copied from the English post, such as lang: en, an English slug and English alt text. After localization and the audit fixes, the German file should look like this:

yaml
---
title: "KI-Trends für 2026"
lang: de
translatedFrom: en
translatedDate: "2026-10-18"
slug: ki-trends-2026
coverImageAlt: "Diagramm zur KI-Nutzung nach Branche"
tags: ["ki", "trends"]
---

And its JSON-LD should state the language and point back to the original:

json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "KI-Trends für 2026",
  "inLanguage": "de",
  "translationOfWork": {
    "@type": "BlogPosting",
    "@id": "https://example.com/en/blog/ai-trends-2026/"
  }
}

Then hand Codex the fix list:

text
Use the locale-audit report above. For every non-English post flagged for English alt text, untranslated tags or a missing translatedFrom field, fix the front matter. Then update our post template so it outputs inLanguage from the lang field and translationOfWork pointing to the source post's URL. Show me the diff and run the build.

Have someone who knows the market review the diff, then run $blog locale-audit again to confirm the critical list got shorter.

Make it repeatable

Codex reads AGENTS.md files from the project root down to the directory where you start the task, and closer files come later, so their guidance wins. That makes a per-locale rule file useful when you work on one market at a time. Save this as content/blog/de/AGENTS.md:

markdown
## German market rules
- Audience: B2B readers in Germany. Use Sie throughout, never du.
- Privacy law is the DSGVO. Don't cite the CCPA unless the post is about it.
- Prices in EUR. Prefer German or EU statistics, and label any US figure with its country.
- After editing a post in this folder, run $blog locale-audit content/blog and list stale versions in your summary.

Start a task from content/blog/de/ and Codex layers these rules on top of your project-wide ones; a French folder can carry its own file with vous and RGPD. If you usually work from the project root, put the rules under a German heading in the root file instead. Keep each file short, because combined instructions share a size cap. Our guide to AGENTS.md rules for SEO covers the project-level file.

Without the skill: a plain Codex prompt

You can get a useful first pass with no kit installed:

text
Read content/blog/de/ki-trends-2026.md, a German translation of an English post. List every element that signals it was written for US readers: brands, statistics and their sources, laws, prices, holidays, idioms and calls to action. Rate each one critical, recommended or optional. Then rewrite it for readers in Germany, use Sie consistently, keep every statistic's source, and label any figure you couldn't replace with its country.
text
Compare every post in content/blog/en with its versions in content/blog/de and content/blog/fr. Report missing translations, different numbers of H2 sections or FAQ items, English alt text in non-English files, and translations older than their source's last update.

What the skill adds is structure: market profiles with substitution tables, a fixed severity scale, a verification checklist, the cultural fit score, hreflang and freshness checks, and a ready-made command for every stale file.

Pitfalls to avoid

  • Localizing the English original instead of the translation.
  • Passing a language code when you mean a market. es doesn't say whether your readers are in Madrid or Mexico City.
  • Accepting a brand swap that doesn't fit the argument.
  • Swapping in a local statistic from a weaker source than the original.
  • Mixing Sie and du, or tu and vous, in one post.
  • Localizing the body but leaving an English slug, English alt text or the wrong inLanguage.
  • Updating a source post and forgetting its translations.

Keep going

FAQ

What is the difference between translation and localization?

Translation converts text from one language to another. Localization adapts the whole piece for a specific market, including examples, statistics, laws, currency, formality and calls to action. A translated post is in the right language; a localized post reads as if someone in that market wrote it.

Is translated content treated as duplicate content?

No. Google doesn't treat versions of a page in different languages as duplicates, because they serve different audiences. What matters is that each version is useful to its readers and that hreflang tells search engines which version serves which language or region.

How do I localize a blog post with Codex?

Translate the post, then run $blog localize <file> --locale <code> on the translated file in a Codex task. Codex audits it for foreign-origin signals, adapts examples, statistics, laws, tone and calls to action, and reports what it changed. Have a native speaker review the result before you publish.

Should German blog posts use Sie or du?

It depends on who you're writing for. The skill's DACH profile picks Sie for business readers and du for consumer lifestyle content. Whichever you pick, use it consistently, because the skill checks for posts that switch forms partway through.

Do I still need a native speaker if Codex localizes my content?

Yes. Codex makes adaptation systematic and catches the obvious foreign signals, but a native reviewer should confirm that swapped examples fit, legal references suit the topic and the tone matches your brand. The cultural fit score shows where to focus that review.