Meridian Field Services: instructional example, not project evidence
Locales, not languages: en-CA and en-US diverge on formats. Planned rows carry event triggers, and the single-locale launch with the foundation laid is a claim this table makes on purpose.
| Locale | Status | Business case | Trigger |
|---|---|---|---|
| en-CA | ACTIVE | The Toronto pilot's working locale; Canadian date, currency, and spelling conventions bind now | n/a |
| fr-CA | planned | The Québec-corridor hub in the five-hub rollout carries a French-language workplace obligation for staff-facing tools | The hub-two go decision naming a Québec site (BD-2[1]): an event, not a date |
The i18n architecture ships AT PILOT with one active locale: strings externalized to resource files, message formats for grammar-bearing strings, locale-aware rendering through the platform API. Rationale: the retrofit costs multiples of the foundation, and the fr-CA trigger is a live business event, not a hypothetical.
| Content type | Treatment | Review owner |
|---|---|---|
| Interface labels & notifications | Machine translation + human post-edit | Content owner with a bilingual dispatcher reviewer; domain terms fail generic post-edit |
| Help content | Human translation | Same reviewer |
| Dispatch domain terms | The glossary owns them (terms[2]); fr-CA renderings EXTEND the entries: one term, one approved rendering; a per-screen variant is the drift the law kills. First extension set: "eligible technician" (BR-01[3]) and the reason-code display names (reason codes[4]) | Content owner |
| Marketing voice | Out of scope: staff-facing product, stated | |
Workflow: string extraction on commit into the translation pipeline at fr-CA activation; the continuous flow is the adoption trigger's deliverable, not a pilot build; recorded so the absence is a decision.
Formats come from the CLDR-backed API; grammar goes through message formats; the expansion budgets are design constraints, numeric per component class.
Formatting law: dates, times, numbers, and currency render through the platform's locale API from CLDR data; the intake form's date fields and the board's timestamps carry no hand-rolled templates; address fields follow the field specs (Job.address[4], VR-04[3]) with locale-aware labels at fr-CA activation. Message-format law: every count-bearing string uses plural rules now ("{count} eligible technicians" is a plural select, not a concatenation); the en-CA build already exercises the machinery the second locale needs; injection points are typed (the template discipline shares the rule[5]).
| Component class | Expansion budget | Rule |
|---|---|---|
| Buttons & chips | 35% | min-width, never fixed |
| Table headers | 25% | wrap, not truncate |
| Toasts & notices | 50% | Short strings expand most |
Budgets are consumed by the wireframes as a cited constraint (content slots[6]). Pseudo-loc gate: the expanded-accented pseudo-locale runs across all four screens before the fr-CA handoff; it catches truncation, hardcoded strings, and concatenation while they are still engineering bugs, not vendor tickets; wired as an informational pipeline gate that flips blocking at fr-CA activation (testing gates[7]).
Omission note: "rtl_layout omitted: no right-to-left locale is active or planned in the five-hub rollout. Posture recorded: layout uses logical CSS properties as cheap insurance (the design system's convention, tokens[6]), so an RTL locale entering scope reopens this section with the per-component mirror table as its first deliverable, not a rebuild."
| Question | Owner | Answer by | Blocks |
|---|---|---|---|
| Does the Québec-corridor hub's obligation extend to the technician mobile app's notification text at activation, or to staff-facing web surfaces only? (Scopes the fr-CA string set.) | Product owner with counsel | At the hub-two go decision | The fr-CA activation scope only |