# App-string localization fixture

Origin: original synthetic English application strings, authored with Pareto and rendered by scripts/evals/app-string-localization/generate_fixture.py. No external corpus or API-generated source text. No OpenAI or OpenRouter calls were used.

License: CC0-1.0 for fixture.jsonl and labels.jsonl. The contributor dedicates these original strings and structural labels to the public domain under https://creativecommons.org/publicdomain/zero/1.0/. Code is MIT. No third-party text is included.

Test: 200 English strings, each in de, ja, pl, ar and pt-BR (1000 string x locale items). Dev: 40 separate English strings (200 items). Test categories: 60 simple, 50 placeholders, 40 flat ICU cardinal plurals, 20 markup and 30 glossary strings. Dev prefixes are separate but share templates; this is a narrow synthetic structure test, not representative linguistic coverage.

Labels are set by the generator, spot-checked by us (automated structural inspection by the authoring agent, not bilingual human review). Expected placeholder tokens, tags, unchanged product terms and plural categories are fixed before English text is rendered. Human spot-check remains pending. The fixture never claims fluent translation quality, legal suitability or RTL rendering coverage.

The headline is first-pass structural placeholder break rate over all string x locale items, including zero-placeholder controls. Missing/invalid tool calls and wrong keys count as breaks. ICU variable/number-marker failure counts as a break; missing plural categories is reported separately. Median per-item binary score across repeats, then pooled mean. Per-locale rows scale equal-sized group contributions to give locale-specific break rates. Secondary validity metrics include non-applicable items as valid controls; they are not conditional rates over ICU/glossary subsets.

Plural categories are captured from Node Intl.PluralRules for the five locales and verified by the offline test. The checker supports only the flat cardinal ICU subset generated here and rejects nested syntax. It is not a general ICU MessageFormat parser. Markup is compared exactly, not rendered.

The prompt was written before model calls and remained unchanged after a dev smoke of five locale items repeated three times (fifteen calls, no breaks, varied outputs on two items, 5228 tokens). No test-split tuning. Dev repeats are smoke checks only. The recipe retries once on structural failure and records the original and repaired arguments independently. No semantic translation judge is used. Identical output repetitions cannot demonstrate independence; varied translations are checked by the evidence gate.

Generator model: Pareto (authoring assistant); fixture renderer is deterministic Python. No baseline model was involved in fixture generation. The GPT-6.1 Sol baseline was measured separately on the same frozen fixture and recipe.
