Skip to content
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 across parser-backed localization files.

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. Turn on the relevant retranslation trigger if the refresh should happen from source changes.
  2. Update base source content, base context/comment, or base review state.
  3. Run sync/import.
  4. Review non-base rows moved to NeedsReview.

What happens in parser sync

  • Base value changes mark matching non-base rows as NeedsReview + Pending when Retranslate when base text changes is enabled. TestFlight What-to-Test base content changes always refresh related locale notes.
  • 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 can mark stale non-base rows NeedsReview when the base-text retranslation trigger is enabled.
  • Locale-only XML sync does not trigger global review fan-out.

i18next JSON

  • Locale is inferred from the file path, and namespace files are grouped together for tracking.
  • Base value changes follow the base-text retranslation trigger.
  • Existing target values are preserved unless the row is queued for refresh.

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.