Fix Bad Translations with Needs Review

// Guides

Fix Bad Translations with Needs Review

Translation wrong? Learn when to fix one locale vs. refresh all languages, and how NeedsReview propagation works in xcstrings and Android XML.

Use this guide when a translation is wrong and you need to decide whether to re-review one locale or all locales.

Decision Rule

  1. Use locale-only NeedsReview when one target language is wrong.
  2. Use base-wide refresh when base copy or translation guidance changed and every locale should be revisited.

Locale-Only Fix (One Language)

  1. Open the target non-base translation.
  2. Change state to NeedsReview.
  3. Save and confirm re-translation.

What happens

  • A re-translation task is queued for that single locale row.
  • Base language rows do not fan out from this action.
  • If the row was already NeedsReview, duplicate confirmation is skipped.

Base-Wide Fix (All Languages)

Use this when source meaning changed, or when a comment/context update should refresh all locales.

  1. Update base source content (or base context/comment in parser-backed source).
  2. Run sync/import.
  3. Review non-base rows moved to NeedsReview.

What happens in parser sync

  • Base value changes mark matching non-base rows as NeedsReview + Pending.
  • Existing non-base values are preserved for reviewer context.
  • Base rows stay stable while downstream locale review is propagated.

Important Parser Nuances

XCStrings

  • Repeated identical needs_review signals are coalesced to reduce duplicate processing.
  • Comment/context updates can retrigger locale review when guidance changes.
  • Completed rows are not reprocessed unless new changes are detected.
  • In-flight review rows (Pending / InProgress) are preserved during follow-up syncs.

Android XML

  • Base value changes mark stale non-base rows NeedsReview.
  • Locale-only XML sync does not trigger global review fan-out.

TestFlight What-to-Test

  • Only base-language content changes trigger global NeedsReview.
  • Non-base file processing does not override base-driven review state.

When Not to Use Base-Wide

  • Typo or style issue in one language only.
  • Glossary or term issue isolated to a single locale.