Next-Level Code. Nexuvibe Style ...

Hrs
Min
Sec
Do-not-translate policy • WooCommerce gettext 2026

Building a Do-Not-Translate List:
Brand Names, SKUs, and Legal Terms That Break If Localized

WooCommerce stores surface thousands of gettext strings that look like sentences but behave like data. A payment gateway label might embed a vendor code. A membership tier name might double as a database key in a companion plugin. A footer disclaimer might be counsel-approved verbatim in English only. When those strings ride through bulk localization, the damage is not awkward tone; it is broken checkout, failed lookups, and compliance exposure. A written do-not-translate list, enforced in tooling rather than tribal memory, is how serious teams keep catalogs honest.

10 min read
Updated 2026
Localization governance
Building a do-not-translate list for WooCommerce Loco gettext brand names SKUs legal terms protected strings WordPress localization 2026

The gettext layer in WordPress is powerful because it is uniform: translators see msgids, locales produce msgstrs, and compiled MO files load at runtime. That uniformity becomes a liability when some msgids must never become fluent French or Persian because fluency would alter a contractual phrase, scramble a SKU that inventory integrations echo verbatim, or rename a third-party service mark your agreement says you cannot adapt. Professional workflows therefore split the problem in two: decide which substrings are immutable, then encode that decision where assists and humans both see it.

Lists fail when they live only in email. A contractor on a deadline will translate everything that looks like English unless the editor itself highlights exceptions. Lists also fail when they are vague: “do not translate brand names” without a table of approved spellings invites inconsistency across locales. The durable approach pairs explicit rows (exact source text or patterns) with automation rules that repeat the same constraint on every batch, including the midnight job you run before a sale.

This guide shows how to inventory risky strings in a typical WooCommerce stack, classify them, and operationalize the policy with glossary discipline and prompt text so assists never “helpfully” localize what must stay frozen. Where automation plugs into Loco, Loco AI Auto Translator fixed glossary entries locking brand names and SKUs across WordPress gettext locales gives you a single place to record immutables and reinforce them at generation time.

What this guide covers
Why some gettext strings behave like data, not copy, in WooCommerce ecosystems.
Building categories: brands, SKUs, legal blocks, placeholders, and mixed literals.
Turning policy into glossary rows your reviewers can audit line by line.
Pairing system prompts with the list so bulk assists respect boundaries.
QA patterns: spot checks, diffs, and regression after plugin updates.
Handoffs to agencies without losing the immutability contract.

Why gettext treats some strings as sacred

WordPress wraps user-visible text in translation functions so themes and plugins can ship one code bundle and many MO files. Translators rightly focus on natural language. Yet commerce stacks routinely expose identifiers through the same API because developers wanted them localizable under some configurations or because a label and a key were never decoupled in the first release. The result is msgids that participate in comparisons, URL fragments, API payloads, or legal review cycles that assume an exact ASCII sequence.

Integration coupling

Shipping plugins, tax engines, and ERP bridges often map WooCommerce data using string tokens that appear in admin screens. If a translator rewrites a token to read naturally in another language, downstream jobs that still expect the English token fail silently or throw support tickets weeks later.

Compliance coupling

Privacy notices, subscription terms, and medical or financial disclaimers sometimes arrive from counsel as fixed paragraphs. Localizing them without a second legal pass can invalidate the approval. Even when you intend to localize, the English source may need to remain byte-identical until counsel signs off on each target language.

Theme and page-builder leakage

Visual builders store copy inside serialized structures. Teams sometimes export that copy into gettext for translation. If a string contains a shortcode name, a data attribute, or a JSON fragment, translating it breaks layout or front-end logic. Those literals belong on the do-not-translate list even when they sit inside a longer sentence.

The WordPress internationalization APIs for developers explain how strings enter catalogs; they do not tell you which strings are safe to paraphrase. That classification is operational policy. Your list is the bridge between engineering reality and translator guidance.

Stores that skip the list often discover problems indirectly: a spike in abandoned carts tied to a renamed payment label, a fulfillment queue that no longer matches ERP exports, or a partner audit that flags a mangled trademark in a language you launched last quarter. Each incident costs more than maintaining a dozen glossary rows would have. Treat the first occurrence of any identifier bug as a signal to add a rule, not as a one-off typo to fix by hand.

Brand names, trademarks, and stylized vocabulary

Start with anything that carries trademark encumbrance or partner branding rules. Payment methods often require exact spellings: the word mark on file with the card network is not yours to localize. The same applies to marketplace names, carrier integrations, and SaaS add-ons that appear in checkout. Your storefront might read more naturally if you translated those labels, but your agreement may forbid adaptation or require a specific glyph styling.

Practical rule
Record the canonical spelling, including capitalization and punctuation, in your glossary as both the source and the approved target (often identical). If marketing later localizes a campaign name, update the row explicitly rather than letting assists infer a creative variant.

House brands need the same discipline. If your private label uses a coined term, translators may assume it is descriptive and expand it. Flag those terms early, especially when they appear inside longer sentences. A glossary entry that locks “NexuTrail” while allowing the surrounding grammar to localize prevents half-localized product families that confuse repeat buyers.

Watch for nested branding: a string might mention both your store name and a gateway’s word mark. Decide per entity whether each fragment stays in source language or receives a localized equivalent, and document the decision next to the row. Ambiguity here is what causes five locales to handle the same checkout label five different ways, which looks unprofessional even when nothing technically breaks.

When assists run unattended, Nexu WP Loco AI plugin for blocking localization of legal boilerplate and partner marks inside Loco translation batches is most valuable precisely here: the model otherwise optimizes for readability and may substitute a generic noun for a protected mark unless your instructions forbid it.

SKUs, coupon codes, and machine-readable tokens

SKUs and coupon codes are not prose. They are identifiers. Even when WooCommerce displays them in a sentence template, translating the identifier itself breaks redemption flows, reporting cubes, and affiliate attribution tables. The same class includes internal tier names exposed by membership extensions, booking resource IDs surfaced in error messages, and gateway response codes that support teams grep for in logs.

Pattern Typical source Risk if localized
ALLCAPS codes Coupons, loyalty tiers Customers type the wrong string at checkout.
Hyphenated alphanumerics SKUs, bundle references Warehouse sync rejects mismatched labels.
Tokens inside %s templates sprintf-style admin notices Placeholder arity breaks or order inverts.
Error codes in plain text Gateways, shipping APIs Support cannot match vendor documentation.

Document whether the entire msgid is frozen or only a substring. Full-string freezes are easiest to enforce in glossary tools. Substring freezes need explicit instructions in your system prompt so assists leave the token untouched while still translating conversational wrappers. Either way, automated gettext assists that respect do-not-translate lists for WooCommerce coupons and internal inventory codes reduce the chance a rushed batch rewrites a token you thought was obviously technical.

Legal disclaimers, privacy strings, and regulated phrasing

Legal text is the highest-stakes category because mistakes are not cosmetic. A cookie banner string might need to match a consent management platform’s requirements in a specific market. A subscription renewal notice might quote statutory language. Medical, alcohol, or age-restricted categories often ship boilerplate that counsel expects to see verbatim until a supervised translation project completes.

Treat each block as a versioned asset. When counsel updates paragraph 3, your gettext row should change once in the source locale, then propagate through a controlled process. Until localized counsel review finishes, mark the entire paragraph as copy-only in every target locale. That is stricter than most marketing copy, but it prevents a well-meaning assist from paraphrasing “may” into “will” or collapsing two sentences that carried distinct legal meaning.

Separate “must stay English” from “must stay identical to source” when your default catalog language is not English. A German primary store might still need an English disclaimer to match a PDF attached to the email workflow. In that case the immutability is about matching an external document, not about the language family. Capturing that rationale beside the row prevents future editors from “helpfully” translating into German because the storefront is German.

For cross-border WooCommerce, the WooCommerce documentation on privacy and payments is a useful sanity check when deciding which checkout disclosures deserve legal review before any assist touches them. It does not replace counsel, but it reminds teams why certain strings cluster around PCI and data retention themes.

Placeholders, markup, and mixed literals inside sentences

Many gettext strings interleave human language with printf placeholders, HTML tags, or inline shortcodes. Translators must reorder clauses for grammar, but they must not corrupt the skeleton. Your do-not-translate list should call out skeleton integrity explicitly: every `%s`, `%d`, `{variable}`, and closing tag must survive unchanged. When a string contains a URL path segment that is not localized on your server, freeze that segment in the glossary or forbid touching it in the prompt.

The GNU gettext manual on plural forms and format strings remains the authoritative reference for why placeholder discipline matters. Teams that skip this training often ship broken plurals in Slavic or Arabic locales because a placeholder moved inside a word boundary an assist assumed was safe to rewrite.

When a single msgid mixes free text and frozen fragments, store the fragments in the glossary and restate in your default system prompt that glossary entries override creative paraphrase. That redundancy catches both human oversight and model drift across providers.

Encoding the list in settings, prompts, and reviewer habits

Operationalizing the list means more than a spreadsheet in SharePoint. You need three synchronized layers: the authoritative table (owner, locale scope, effective dates), the machine-readable enforcement (glossary or equivalent), and the narrative instructions that assists read on every job. If any layer disagrees, reviewers waste time arguing about which document wins.

Default prompts should state non-negotiables once: never translate glossary keys, never localize tokens that match SKU regexes you publish internally, never soften legal language. Bundle-specific prompts then add narrower context, such as a membership plugin whose tier names mirror database slugs. That split keeps noise low while still protecting the weird edge cases each extension introduces.

Reviewers should skim the glossary before approving a large MO export, not after customers complain. Make it someone’s recurring task after WooCommerce or major plugin updates, because new admin screens often introduce fresh msgids that repeat old risky patterns under different wording.

If you run multilingual staging sites, compare MO exports between environments after merges. A developer who resolves a conflict in Git might accidentally drop a glossary-backed translation or reintroduce an old MO compiled from an outdated PO. Diffing binary MO files is painful; diffing POs before compile catches human errors early. Tie that check to the same release ticket as the code deploy so it cannot be forgotten when marketing is rushing a campaign live.

Bulk jobs, progress monitoring, and single-string rescue

Bulk assists are efficient when your list is already solid; they are dangerous when the list is half-built. Watch progress views for domains that historically carried risky strings. If a domain spikes with fresh entries after a vendor update, pause automation until someone classifies the newcomers. The cost of a delayed release is usually smaller than the cost of shipping corrupted identifiers into production MO files.

Bulk Loco gettext translation progress fields for WooCommerce catalogs monitored while do-not-translate rules stay active

Caption: Monitoring wide gettext batches so glossary-backed immutables remain intact across WooCommerce text domains.

When something slips through, fix it at the row level, then ask why the list missed it. Often the string was a new synonym for an existing concept; add that synonym explicitly rather than hoping context alone will hold.

Single-string workflows are your safety valve. They let a senior reviewer re-run a row with tighter instructions after you extend the glossary. They also help train newcomers: watching a before-and-after on a tricky msgid teaches placeholder discipline faster than reading policy alone.

Providers, environments, and keeping rules aligned

Stores sometimes switch translation endpoints for latency, cost, or quality experiments. If each endpoint uses a different implicit style, your immutables are only as stable as the weakest configuration. Export your prompt and glossary assumptions alongside your MO files so staging and production do not diverge silently. Treat prompt exports like infrastructure code: review them, diff them, and tag them with releases.

Agencies benefit from receiving not only the PO files but also the immutability brief: a short PDF or README in the repo root listing categories, examples, and escalation contacts. Without that, external translators will optimize for linguistic elegance and accidentally untangle the very identifiers you protected.

Include in the brief a short “red list” of msgid prefixes or domains that are historically dangerous, such as shipping label plugins or tax report screens. Even experienced vendors appreciate hints that save them from learning your stack’s quirks on your customers’ time. Rotate the brief when you add a major extension; stale guidance erodes trust faster than no guidance.

A mature do-not-translate list is living documentation. It turns ambiguous “everyone knows” rules into rows you can audit, diff, and attach to releases. Pair that list with gettext tooling that repeats your constraints on every assist, and WooCommerce localization becomes predictable instead of a game of whack-a-mole whenever a plugin updates. Revisit the list after rebrands, mergers, and payment-provider swaps because those events churn identifiers fastest.

If you want that enforcement inside Loco without bolting on another spreadsheet workflow, the Loco AI Auto Translator WordPress extension for safer WooCommerce string localization with glossary-backed freezes keeps immutables where translators already work, so policy and execution share one home.

Loco AI Auto Translator product thumbnail glossary and protected gettext terms for WooCommerce

Loco AI Auto Translator
Lock SKUs, marks, and legal lines once; let assists honor the list on every batch.

Get Loco AI Auto Translator

Picture of Mahdi Jabinpour

Mahdi Jabinpour

As a sales-driven developer and the founder of NexuWP, Mahdi focuses on building WordPress solutions that don't just work—they convert. From AI-powered bulk translation engines to high-efficiency media offloading, he helps business owners automate the "grind" so they can focus on global growth. He is a pioneer in integrating advanced LLMs into the WordPress workflow.

RELATED POSTS

RELATED POSTS

4 Reviews
Barbara White 3 months ago

Saved me hours of cleanup after a last minute localization push. the glossary audit view is a lifesaver you can flag SKUs and legal terms before anything goes live

Mansour jabinpour 3 months ago

This is exactly why we created the glossary audit to help you spot those key terms early. I'm really pleased it made your job easier

Steven Jones 4 months ago

Just wanted to drop a quick note for anyone using visual builders with this. That serialized data tip was a lifesaver after a client's page builder dumped a bunch of product SKUs into the translation queues

Christopher Anderson 5 months ago

Saved my shop from a pricey mistake

Joseph Miller 5 months ago

Hey fellow devs, this tool just saved me hours of cleanup after a messy bulk localization project. That tip about payment gateway labels hiding vendor codes? Oh man, that's exactly what tanked my last WooCommerce store someone helpfully translated "Stripe (gw_17x9)" into beautiful but broken French. Now I toss those into the "do not translate" list before sending files out

mehdiadmin 5 months ago

I'm so relieved this guide saved you from that vendor code headache we've all been there before

Please log in to leave a review.