CODAP-1112: Sync V3 strings with POEditor using ownership model#2391
CODAP-1112: Sync V3 strings with POEditor using ownership model#2391
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2391 +/- ##
=======================================
Coverage 85.56% 85.56%
=======================================
Files 753 753
Lines 41736 41739 +3
Branches 10335 10325 -10
=======================================
+ Hits 35713 35716 +3
Misses 6008 6008
Partials 15 15
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
codap-v3
|
||||||||||||||||||||||||||||
| Project |
codap-v3
|
| Branch Review |
main
|
| Run status |
|
| Run duration | 02m 10s |
| Commit |
|
| Committer | eireland |
| View all properties for this run ↗︎ | |
| Test results | |
|---|---|
|
|
0
|
|
|
0
|
|
|
0
|
|
|
0
|
|
|
4
|
| View all changes introduced in this branch ↗︎ | |
There was a problem hiding this comment.
Pull request overview
This PR implements a string ownership model for CODAP V2 and V3 translations, splitting the combined English string file into two files to support concurrent V2/V3 development with shared POEditor infrastructure. V2 owns DG.* strings (managed from the master branch), while V3 owns V3.* strings (managed from main).
Changes:
- Splits
en-US.json5intoen-US-dg.json(1,144 DG strings from V2) anden-US-v3.json5(207 V3-owned strings) - Updates translation loader to merge both files at runtime
- Rewrites POEditor sync scripts with V3-only push filtering, retry logic, and timeout protection
- Fixes two string key prefix bugs (
DG.Undo→V3.Undofor map pins and filter formula) - Updates V3 build skill with comprehensive translation sync workflow documentation
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
v3/src/utilities/translation/lang/en-US-v3.json5 |
New file containing V3-owned strings (206 V3.* + 1 DG.* for dynamic use) |
v3/src/utilities/translation/lang/en-US-dg.json |
New file containing DG strings synced from V2 master (1,144 strings) |
v3/src/utilities/translation/languages.ts |
Updated to import and merge both DG and V3 string files |
v3/src/utilities/translation/translate.test.ts |
Updated mocks to reflect split string files |
v3/src/utilities/translation/translate.es.test.ts |
Updated mocks to reflect split string files |
v3/src/components/map/components/inspector-panel/map-measure-palette.tsx |
Fixed undo/redo string keys from DG.Undo.map to V3.Undo.map |
v3/src/components/case-tile-common/filter-formula-bar.tsx |
Fixed undo/redo string keys from DG.Undo.caseTable to V3.Undo.hideShowMenu |
v3/scripts/strings-push.sh |
Added JSON5 support and documentation; set SYNC_TERMS=0 for shared project |
v3/scripts/strings-push-project.sh |
Rewritten to push only V3-owned strings with error handling |
v3/scripts/strings-pull.sh |
Enhanced with better documentation |
v3/scripts/strings-pull-project.sh |
Completely rewritten with timeout, retry logic, and en-US DG/V3 splitting |
v3/package.json |
Changed strings:update to pull-first order (pull then push) |
.claude/skills/codap-v3-build/SKILL.md |
Added comprehensive translation sync workflow to Phase 3 |
v3/docs/plans/2026-02-13-sync-v3-strings-poeditor-design.md |
Design document explaining ownership model and architecture |
v3/docs/plans/2026-02-13-sync-v3-strings-poeditor.md |
Detailed implementation plan with 14 tasks |
v3/docs/plans/v2-build-skill-string-changes.md |
Documentation of V2 build skill changes for ownership-aware handling |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
bfinzer
left a comment
There was a problem hiding this comment.
👍🏻LGTM
Take a look at the conflicts and cypress test failures
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract all 1,144 DG.* strings from V2 master lang/strings/en-US.json into v3/src/utilities/translation/lang/en-US-dg.json. This file represents the POEditor-owned half of the translation split -- it gets overwritten by POEditor pulls and should not be manually edited by V3 developers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The old en-US.json5 file contained both DG.* and V3.* strings mixed together. It has been replaced by en-US-dg.json (DG strings from POEditor/V2) and en-US-v3.json5 (V3-only strings maintained locally). The translation loader was already updated to merge these two files, so the old combined file is no longer needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…DG/V3 split Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… JSON5 support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…g handling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove 7 unused V3 strings (dead code from early prototypes and refactored features). Fix two bugs where V3-only features (map pins, filter formula) referenced nonexistent DG.* undo/redo keys instead of their V3.* equivalents. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The script pushes all strings from en-US-v3.json5, which includes one DG.* key that is V3-owned. Update the comment to accurately describe this. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ar (Arabic), fr (French), nl (Dutch), pl (Polish) to the V3 pull script to match all languages with meaningful translations in the shared POEditor project. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Match the CFM language menu to the updated POEditor pull script by adding Arabic, French, Dutch, and Polish. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
af6b80b to
1ebc47a
Compare
…OEditor The en-US-dg.json file pulled from POEditor has 38 DG.* strings that differ from what V3 had on main. These are intentional V3 divergences (title case, ellipsis placement, removed keyboard shortcuts, wording changes, and V3-only strings not yet in POEditor). Override them to maintain V3 behavior while adopting the POEditor-based string split. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
en-US.json5into two files:en-US-dg.json(V2-owned DG.* strings from master) anden-US-v3.json5(V3-owned strings)strings-pull-project.shandstrings-push-project.shto respect string ownership — V3 only pushes/pulls V3-owned keys to/from POEditorcodap-v3-buildskill with string sync workflow documentationJira
CODAP-1112
Related
master)master)Test plan
en-US-dg.json+en-US-v3.json5merge correctly at runtime (no missing keys)strings-push-project.shonly pushes V3-owned keysstrings-pull-project.shcorrectly splits pulled translations into DG and V3 filestranslate.test.ts,translate.es.test.ts)🤖 Generated with Claude Code