{"uid":"cap_k3rhGrJx31j0C3iGvaNZQ","slug":"locale-text-safety-audit-37be242a","name":"Locale Text Safety Audit","description":"Read the characters in a locale file rather than its structure. Reports a bidirectional control character, which is invisible in every editor and reorders everything after it including text nobody touched; a zero-width character, which still counts toward a length limit; text not in NFC form, which compares unequal to the same text typed differently; and markup appearing only in a translation, where the call site was written for plain text.","url":"https://api.zfinia.com/x402/v1/locale-text-safety-audit?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"locales":{"type":"array","items":{"type":"object","required":["locale","messages"],"properties":{"base":{"type":"boolean"},"locale":{"type":"string","maxLength":35},"messages":{"type":["object","string"]}},"additionalProperties":false},"maxItems":60,"minItems":2},"allow_html":{"type":"boolean"}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.17","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.17/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.17","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.17","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_45LOItRnan94MDQsi_Zee","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.17","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Audits locale/i18n message files for invisible characters, zero-width characters, non-NFC Unicode normalization, and unexpected markup in translations","exampleAgentPrompt":"Can you audit these two locale files — one is the English base and one is the French translation — and flag any invisible bidi control characters, zero-width characters, non-NFC text, or unexpected HTML markup that snuck into the French strings?","exampleUseCases":[{"title":"Catching bidi attack in shipped translation","prompt":"We just shipped a Farsi translation and our security team is worried someone may have injected bidirectional control characters that reorder the displayed text. Can you scan our en and fa locale files and report any hidden bidi characters or other invisible Unicode issues?"},{"title":"CI pipeline i18n safety gate","prompt":"I want to run a safety check on our English base locale and the newly submitted Spanish translation before merging the PR — flag any zero-width characters, non-NFC normalization problems, or HTML markup that appears only in the Spanish strings and not in the English ones."},{"title":"Debugging length-limit failures in translated UI","prompt":"Our German translation keeps hitting the character limit even though it looks shorter than the English text on screen — can you audit both locale files to find any zero-width characters that might be invisibly padding the German strings?"}],"resultDescription":"A structured report listing each locale file finding by type: bidirectional control characters (with position and affected text), zero-width characters (with position and length impact), non-NFC normalized text segments (showing the raw vs. normalized form), and markup found only in a translation but not in the base locale. Each issue references the locale, message key, and character position.","failureModes":["Fewer than 2 locale objects provided — minimum of 2 required","A locale object missing required 'locale' or 'messages' fields returns a validation error","More than 60 locale objects submitted — maxItems exceeded","Locale string exceeds 35 characters","Messages value is neither an object nor a string — type mismatch error","Network timeout for very large message datasets"],"whenToPreferThis":"Choose this endpoint when you need character-level safety analysis of localization files rather than structural or key-coverage checks. It is specifically designed to catch attack vectors and subtle bugs — bidi spoofing, invisible padding, normalization inequality, and markup injection — that standard i18n linters and diff tools cannot see because they render or ignore the characters in question. Prefer it during translation review pipelines, security audits of externally sourced translations, or when debugging mysterious string comparison failures or length-limit issues.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-10T18:42:43.353Z","isFirstParty":false,"canonicalSlug":"locale-text-safety-audit-37be242a"}