Back to Work
E-Commerce AI Localization Shopify

Mie Gallery Germany

A German-language storefront for an online gallery of original Japanese woodblock prints: the whole catalog translated with AI, checked by a second model, built to German consumer law, and kept in sync every night.

Challenge

The Problem

Germany was already one of the gallery's biggest export markets, but German collectors were buying from an English site priced in dollars.

A real German store means more than translated text. Each listing's description of condition and edition defines what the buyer is getting, so a loose translation creates a legal problem. Selling into Germany also brings rules for checkout, withdrawal, seller identity and import charges. And the owner keeps adding and editing listings in English, so a one-time translation goes stale.

Solution

The Approach

A German market inside the gallery's existing Shopify store, at /de-de, with euro prices and its own shipping, legal pages and checkout wording. No second store to maintain.

Claude translates; a different model (Gemini or Codex) checks the meaning; scripts check everything that can be checked mechanically. Nothing is written to the live store unless it passes, and every write is read back. It launched on October 21, 2026, about three working days from first export to ready for test orders.

Tech Stack

Technology Stack

Commerce

Shopify MarketsAdmin GraphQL APIShopifyQLLiquid

AI

ClaudeGemini (review)Codex (review)Translation Memory

Automation

PythonCloud Run JobsCloud SchedulerGmail API

Search & Measurement

Google Merchant CenterMerchant APIhreflangLocalized SEO
Features

What Was Built

Full German Catalog

939 prints at launch, plus 84 blog articles, menus, collections, pages and 948 theme strings. Every listing was translated against a glossary that controls the legally loaded words: condition, edition, reprint and date.

Faithful, Not "Adapted"

A listing's description defines what the buyer is getting, so the translations stay literal: nothing added, names and numbers unchanged, formal "Sie" throughout. Uncertain terms are flagged instead of guessed.

Centimetres by Code

Every inch dimension gets a metric equivalent computed by a script, never by the model. Running it a second time changes nothing.

German Consumer Law, Built In

Impressum, withdrawal page and model form, customer information, shipping and privacy pages; an always-available withdrawal button; a "Zahlungspflichtig bestellen" checkout button; an import-charge notice at checkout; and the EU legal-guarantee notice.

English in the Same Market

Visitors in Germany who don't read German get an English version at /en-de, with the same euro prices and shipping as the German site and English versions of its legal pages.

Nightly Sync

A scheduled cloud job finds what changed on the English store, translates and checks it, has a second model review the meaning, writes the German, and emails the owner a summary.

Process

Build, Check, Measure

1. Translate Against the Source

Each field is exported with Shopify's fingerprint of the English text. Paragraphs that repeat across listings, such as artist biographies and series notes, are translated once and reused. Translations are registered against that fingerprint, so if the owner edits the English later, Shopify marks the German as out of date instead of silently keeping it.

2. Check by Script, Then by a Second Model

Scripts compare the HTML structure, every number and name, banned words (such as "Unikat" or "Erstausgabe" when the English makes no such claim), informal address and leftover English. A different model then reviews every condition, date and edition line against the English, plus full reads of sampled listings. The translators also flagged hundreds of issues in the English listings themselves; those went to the owner instead of being quietly fixed in German.

3. Test the Real Thing

On launch day: a real order with a German address, its confirmation PDFs compared sentence by sentence with the legal pages, a full and a partial withdrawal through the live button, and a tester in Germany confirming the site showed German text and euro prices. When Google flagged the German listings for a shipping-currency mismatch that morning, a euro shipping policy cleared it within hours.

4. Measure Against a Baseline

Before launch, German orders and Google Shopping clicks for the prior year and quarter were recorded as the "no German site" baseline. Post-launch orders, visits and clicks are read from the store's and Google's APIs, not screenshots, and compared against it at each check-in.

Selling Into a New Country?

Translation is the easy part. Let's build the version of your store that holds up: checked, compliant, and measured.

Start a Conversation