Use the bundled script for this task. It codifies the fragile parts of the workflow:
_ar.properties, _ja.properties, _fr_FR.properties, _ar.js, and basename locale files such as ar.js..properties, extract only property keys changed by the target commit's diff.*_zh_CN.<ext> or zh-CN.js baseline.git blame on each changed key or changed line in the baseline file to find the source commit for that text.--source-range; the interval is not the translation commit to analyze.!123 with (?<=\s)!\d+.wmweb!1025.Default supported extensions mirror template.NG/build/i18n/collectResources.js: .properties, .js, .jsp, .letter, .eml, .html, .cf, and .txt.
Run from the git repository root:
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py HEAD
When a latest translation commit must be traced only to source commits in a given range, keep the two inputs separate:
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py HEAD --source-range <base>..<tip>
Useful options:
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py <commit> --json
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py <commit> --no-groups
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py <commit> --locales ar,ja,ko,vi
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py <commit> --extensions properties,js,jsp,letter,eml,html,cf,txt
python3 /path/to/collect-i18n-change-merge-requests/scripts/collect_i18n_change_mrs.py <translation-commit> --source-range <base>..<tip> --json
Report the total deduplicated ids first, then include the corresponding changed file groups for each id. State the translation commit analyzed, any source range applied, and the strict extraction rule. If the script reports missing baseline keys, include that as residual risk rather than inventing ids from full file history.
Use the script output as the source of truth. Do not fall back to git log -- <file> for the whole file unless the user explicitly asks for full-file history.