Translation Diff Import
Documentstranslation-diff-importTranslation Diff Import is an Agent Skill for documents published in the Devolutions/UniGetUI repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Merges translated key-value pairs from a UniGetUI JSON localization patch back into the full language file and validates the merged result. Use when the user asks to apply, merge, or import a translation patch.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/Devolutions/UniGetUI/blob/HEAD/.agents/skills/translation-diff-import/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/translation-diff-import, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
translation diff import
Use this skill after the export skill produced a .source.json, .translated.json, and .reference.json set and you want to merge the translated working copy back into the full target-language JSON file.
See translation-diff-export for the patch-generation step that produces the expected inputs.
Prerequisites
- PowerShell 7 (
pwsh). cirupavailable onPATH.
Scripts
scripts/import-translation-diff.ps1: Validates and merges a translated patch into the full language file.scripts/validate-language-file.ps1: Validates placeholder, token, HTML-fragment, and newline parity for either a full language file or just the active patch keys againstlang_en.json.
Usage
Import the translated French working copy from the export skill into the full French JSON file:
pwsh ./.agents/skills/translation-diff-import/scripts/import-translation-diff.ps1 \
-TranslatedPatch ./generated/translation-diff-export/lang.diff.fr.translated.json \
-SourcePatch ./generated/translation-diff-export/lang.diff.fr.source.json \
-TargetJson ./src/Languages/lang_fr.json \
-NeutralJson ./src/Languages/lang_en.json \
-OutputJson ./src/Languages/lang_fr.merged.json
Validate the merged output:
pwsh ./.agents/skills/translation-diff-import/scripts/validate-language-file.ps1 \
-NeutralJson ./src/Languages/lang_en.json \
-TargetJson ./src/Languages/lang_fr.merged.json \
-PatchJson ./generated/translation-diff-export/lang.diff.fr.source.json
Optional parameters:
-OutputDir(default:generated/translation-diff-import)-AllowUnchangedValues-KeepIntermediate
Recommended input mapping from the export skill:
-TranslatedPatch:generated/translation-diff-export/lang.diff.fr.translated.json-SourcePatch:generated/translation-diff-export/lang.diff.fr.source.json
Output
- A merged
.jsonfile that contains both the previously translated entries and the imported patch values. - If
-KeepIntermediateis used, patch snapshots are preserved undergenerated/translation-diff-import/tmp/.
Edge cases
- If the target JSON file does not exist yet, the script can create an output from the translated patch alone.
- When
-SourcePatchis provided, the script validates translated keys, placeholder tokens, HTML-like fragments, newline counts, and likely untranslated values before delegating the merge tocirupwhile allowing missing keys for partial progress. - The import skill expects
.translated.jsonto remain sparse. Untranslated keys should be omitted instead of copied in English unless you intentionally bypass that check with-AllowUnchangedValues.