# V2 Localization Workflow, Vendor Integration, And QA Process

This handbook defines the phase-72 localization operating process for
`TODOS.phase-72.72.11.2.15`. It ties the individual localization feature docs
into one release workflow that production, vendor management, localization QA,
audio, UI, and release engineering can verify.

## Source Of Truth

The authoritative source locale is `en-US`. Launch locale coverage comes from
`V2/ue/Content/Localization/V2/LocalizationVoiceOverPipeline_V2_Contract.json`
and includes `en-US`, `en-GB`, `fr-FR`, `fr-CA`, `es-ES`, `es-419`, `pt-BR`,
`pt-PT`, `de-DE`, `it-IT`, `pl-PL`, `ru-RU`, `tr-TR`, `ar`, `he`, `ja-JP`,
`ko-KR`, `zh-Hans`, `zh-Hant`, `th-TH`, `vi-VN`, and `id-ID`.

Source text, context, and release handoff are governed by these docs and
artifacts:

- `V2/docs/localization/string-id-system.md`
- `V2/docs/localization/translation-file-format.md`
- `V2/docs/localization/context-screenshots.md`
- `V2/docs/localization/translation-management-platform.md`
- `V2/docs/localization/translation-memory-integration.md`
- `V2/docs/localization/continuous-localization-ci.md`
- `V2/ue/Content/Localization/V2/StringTables/StringIdRegistry_V2.json`
- `V2/ue/Content/Localization/V2/Extracted/StringExtractionCatalog_V2.json`
- `V2/ue/Content/Localization/V2/Schemas/V2TranslationFileFormat.schema.json`
- `V2/ue/Content/Localization/V2/Translations/en-US.v2loc.json`

## End-To-End Workflow

Every localized release follows this ordered workflow:

1. Source-string authoring assigns stable string IDs, text roles, occurrence
   paths, named variables, and `maxCharacterLength` budgets.
2. String-id review blocks duplicate IDs, unstable copy keys, missing context,
   and UI strings without a screenshot reference.
3. String extraction refreshes
   `V2/ue/Content/Localization/V2/Extracted/StringExtractionCatalog_V2.json`.
4. TMS source push sends provider payloads with `tmsAlias`,
   `contextDescription`, `screenshotReference`, `textRole`, variables, and
   deterministic content hashes.
5. Translation-memory pretranslation applies exact and fuzzy memory matches
   before new vendor work starts.
6. Vendor translation and review complete in the selected provider, with
   glossary, linguistic review, cultural review, and brand review required.
7. Pull translations imports provider-approved strings into `.v2loc.json` files
   without replacing source metadata.
8. Automated QA runs untranslated-string, temporary-build-text, encoding-error,
   broken-variable, string-length, pseudo-localization, CJK, RTL, and fallback
   checks.
9. Localized asset build packages the approved translations and generated VO,
   subtitle, lip-sync, and TTS fallback assets.
10. Locale screenshot pass runs localization testing mode across every launch
    locale and localized screen.
11. Release signoff records the commit SHA, provider export ID, QA reports,
    screenshot bundle, unresolved waivers, and approvers.

## Vendor Integration

Phrase is the selected provider in
`V2/ue/Content/Localization/V2/TMS/TranslationManagementPlatform_V2.json`.
Crowdin and Lokalise endpoints are configured as provider adapters, while the
broader workflow vendor roster tracked in the voice-over pipeline remains
Crowdin, Smartling, Lokalise, and Wordbee for production scheduling.

Vendor handoff rules:

- Credentials are referenced only by environment variable names such as
  `V2_PHRASE_API_TOKEN`, `V2_CROWDIN_API_TOKEN`, and `V2_LOKALISE_API_TOKEN`.
  Raw tokens must never be committed, logged, or copied into vendor payloads.
- `V2/ue/Content/Localization/V2/TMS/SourcePushPayload_V2.json` is the source
  push artifact. It preserves `id`, `tmsAlias`, `contextDescription`,
  `maxCharacterLength`, `screenshotReference`, `textRole`, `variables`, and
  `occurrencePaths`.
- `V2/ue/Content/Localization/V2/Screenshots/ContextScreenshotUploadPayload_V2.json`
  carries translator screenshots so vendors can see the UI state for each
  string.
- `V2/ue/Content/Localization/V2/TMS/PhrasePull_fr-FR_V2.json` is the tracked
  provider pull fixture, and
  `V2/ue/Content/Localization/V2/Translations/fr-FR.v2loc.json` is the canonical
  pulled locale output.
- VO vendor handoff uses
  `V2/docs/localization/voice-over-recording-script-export.md`,
  `V2/docs/localization/voice-over-asset-management.md`, and
  `V2/ue/Content/Localization/V2/VoiceOver/RecordingScripts/VoiceOverRecordingScriptExport_V2.json`.

## QA Process

Localization QA has three required layers.

Automated content QA runs `V2/ue/Tools/check-v2-translation-qa-automation.py`
and blocks untranslated-string, temporary-build-text, encoding-error, and
broken-variable issues from
`V2/ue/Content/Localization/V2/QA/TranslationQAConfig_V2.json`.

Layout and runtime QA runs string-length validation, pseudo-localization, locale
fallback, locale-specific formatting, RTL text rendering, RTL UI mirroring, CJK
font coverage, CJK text layout, CJK text density, and locale selection UI
checks. UI screenshots are produced by
`V2/docs/localization/localization-testing-mode.md` and must cover every launch
locale and every localized screen in
`V2/ue/Content/Localization/V2/Testing/LocalizationTestingModePlan_V2.json`.

Audio and accessibility QA runs voice-over asset management, recording script
export, VO integration, per-locale lip-sync, subtitle timing from VO, and
text-to-speech fallback checks. Subtitle-only launch locales must keep the
tracked VO patch plan visible in dashboard and release evidence.

QA source docs and artifacts:

- `V2/docs/localization/translation-qa-automation.md`
- `V2/docs/localization/string-length-validation.md`
- `V2/docs/localization/pseudo-localization.md`
- `V2/docs/localization/localization-status-dashboard.md`
- `V2/docs/localization/rtl-text-rendering.md`
- `V2/docs/localization/rtl-ui-mirroring.md`
- `V2/docs/localization/cjk-font-coverage.md`
- `V2/docs/localization/cjk-text-layout.md`
- `V2/docs/localization/cjk-text-density.md`
- `V2/docs/localization/voice-over-integration-pipeline.md`
- `V2/docs/localization/voice-over-lip-sync-per-locale.md`
- `V2/docs/localization/subtitle-timing-from-voice-over.md`
- `V2/docs/localization/tts-fallback-for-missing-vo.md`
- `V2/ue/Content/Localization/V2/QA/TranslationQAReport_V2.json`
- `V2/ue/Content/Localization/V2/Length/StringLengthValidationReport_V2.json`

Manual QA requires native-speaker review for each launch locale, with dedicated
passes for glossary adherence, tone, cultural sensitivity, UI truncation, RTL
focus order, CJK line breaking, subtitle timing, VO sync, and region-variant
copy. Waivers must name the string ID, locale, owner, risk, expiration, and
release approver.

## Live Ops And Hotfixes

Battle Pass, daily challenges, news feed, cosmetic shop, moderation
announcements, and emergency hotfix copy follow the same workflow as launch
content. Emergency hotfix and moderation announcements have a 24-hour
localization SLA, and any locale missing the SLA must ship with an explicit
release waiver and fallback behavior.

Live-ops changes must rerun extraction, source push, translation pull,
translation QA, string-length validation, status dashboard generation, and the
targeted screenshot pass for changed screens. Player-facing copy cannot bypass
vendor review unless the release manager records the incident ID and fallback
locale.

## Ownership And Signoff

Production owns source schedule, string freeze, waiver approval, and provider
export IDs. Localization engineering owns extraction, TMS sync, deterministic
artifacts, CI wiring, and localized asset build. Localization QA owns automated
QA results, native-speaker review, screenshots, and release evidence. Audio owns
VO recording scripts, asset naming, lip-sync, subtitle timing, and TTS fallback
coverage. Release engineering owns final gate status and archive retention.

Signoff requires a green localization dashboard, zero blocking QA violations,
complete screenshot coverage, provider-approved translations, VO and subtitle
coverage for the locale tier, and documented waivers for any nonblocking gaps.

## Release Gates And Evidence

Required evidence for each release candidate:

- Git SHA and branch.
- Provider project, locale export IDs, and timestamp.
- Source push payload and pulled translation fixture.
- Translation memory report and fuzzy-match review summary.
- Translation QA report, string-length report, pseudo-localization report, CJK
  reports, RTL reports, and locale fallback matrix.
- Localization status dashboard export.
- Localization testing mode screenshot bundle.
- VO asset coverage, recording script export report, lip-sync report, subtitle
  timing report, and TTS fallback report.
- Native-speaker review notes, waiver register, and final approvers.

Required gates:

- `localization-documentation-contract`
- `localization-documentation-workflow`
- `localization-documentation-vendor-integration`
- `localization-documentation-qa-process`
- `localization-documentation-release-evidence`
- `localization-documentation-ci-wired`

## Verification

Run these checks after changing localization process docs, vendor config, QA
policy, generated reports, CI wiring, or Horde gates:

```bash
python3 V2/ue/Tools/check-v2-localization-documentation.py
python3 V2/ue/Tools/check-v2-translation-management-platform.py
python3 V2/ue/Tools/check-v2-translation-qa-automation.py
python3 V2/ue/Tools/check-v2-continuous-localization-ci.py
python3 V2/ue/Tools/check-v2-localization-testing-mode.py
python3 V2/ue/Tools/check-v2-localization-voice-over.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
```
