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.!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
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
Report the total deduplicated ids first, then include the corresponding changed file groups for each id. State the commit analyzed 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.