AL translation and localization for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

MITAuto-check passedWriting & Content

Install Skill Translate

skills CLI
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-translate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-translate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skill-translate .claude/skills/skill-translate && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
skill-translate
GitHub stars
109
Token cost
~2.2k tokens
SKILL.md length
645 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

AL translation and localization for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

  • Works in 4 steps: Setup → Translate → Review → …
  • Working with XLF files
  • SKILL.md covers Purpose, When to Load, Core Patterns and Workflow, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Skill Translate is an agent skill from javiarmesto/ALDC-AL-Development-Collection. AL translation and localization for Business Central. Use when working with XLF files, NAB tools, or implementing multi-language support in extensions.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Translation and Internationalization. The repository describes itself as: AL development toolkit for Business Central with specialist agents, skills and review workflows for Copilot, Claude Code and Codex. The licence is MIT.

When your agent uses it

  • Working with XLF files
  • Implementing multi-language support in extensions

Example prompts

  • “/skill-translate”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Setup
  2. Translate
  3. Review
  4. Finalize

What it can do on your machine

Read from SKILL.md and the folder at commit 4f99d7d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • learn.microsoft.com
    • marketplace.visualstudio.com
    • docs.oasis-open.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Skill Translate loads about 2.2k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 645 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~42
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from javiarmesto/ALDC-AL-Development-Collection at commit 4f99d7d, republished under its MIT licence (© javiarmesto). 645 words, ~2,182 tokens.

Download SKILL.mdSave it as .claude/skills/skill-translate/SKILL.md (or your agent's skills folder).
name
skill-translate
description
AL translation and localization for Business Central. Use when working with XLF files, NAB tools, or implementing multi-language support in extensions.

Skill: AL Translation Management

Purpose

Manage multilingual translations for AL extensions using XLF files: create and refresh language files, batch-translate with NAB AL Tools, preserve placeholders, enforce character limits, maintain terminology consistency, and implement quality review workflows.

When to Load

This skill should be loaded when:

  • A new target language needs to be added to an AL extension
  • Untranslated texts need to be translated after code changes
  • Translation quality review is needed (placeholder validation, character limits)
  • Regional language variations must be managed (es-ES vs es-MX)
  • Incremental translation is required after refreshing XLF files

Core Patterns

Before adopting BC29 namespace-aware translations, read the translation section of AL18 capability checks. Verify TranslationsWithNamespaces in the installed schema and compare generated XLF IDs and retained translations before changing an existing project's setting.

Pattern 1: Create Language File

Create a new XLF translation file from the generated source:

createLanguageXlf
  generatedXlfFilePath: "Translations/MyApp.g.xlf"
  targetLanguageCode: "es-ES"
  matchBaseAppTranslation: true    // pre-populate from Microsoft base translations

Rules:

  • The .g.xlf file is auto-generated by the AL compiler — never edit it manually
  • matchBaseAppTranslation: true copies existing Microsoft translations for standard terms
  • One language file per locale: MyApp.es-ES.xlf, MyApp.fr-FR.xlf, etc.
Pattern 2: Refresh and Retrieve Texts

After code changes, sync the language file and get new untranslated texts:

// Step 1: Refresh — adds new entries, preserves existing translations
refreshXlf
  generatedXlfFilePath: "Translations/MyApp.g.xlf"
  filePath: "Translations/MyApp.es-ES.xlf"

// Step 2: Get untranslated texts with context
getTextsToTranslate
  filePath: "Translations/MyApp.es-ES.xlf"
  limit: 50
  offset: 0

Each text entry includes:

  • id — unique identifier for the translation unit
  • source — original text to translate
  • type — context: Table Customer - Field Name - Property Caption
  • maxLength — character limit (if set in AL source)
  • comments — notes about placeholders (%1, %2)
Pattern 3: Batch Translation

Translate multiple texts in a single operation:

saveTranslatedTexts
  filePath: "Translations/MyApp.es-ES.xlf"
  translations: [
    {
      "id": "Table_ContosoProject_Field_Description_Caption",
      "targetText": "Descripción",
      "targetState": "translated"
    },
    {
      "id": "Page_ContosoProjectCard_Action_Release_Caption",
      "targetText": "Lanzar",
      "targetState": "translated"
    },
    {
      "id": "Codeunit_ContosoMgt_Error_CustomerNotFound",
      "targetText": "Cliente %1 no encontrado.",
      "targetState": "translated"
    }
  ]

Translation rules:

  1. Preserve placeholders — %1, %2, %3 must appear in the same order
  2. Respect maxLength — abbreviate if needed, never exceed
  3. Match context — same English word may have different translations depending on type
  4. Follow Microsoft terminology — use base app translations for standard BC terms
Pattern 4: Translation Quality Review

Use translation states to implement a review workflow:

StateMeaningWho
translatedInitial translation doneTranslator
needs-review-translationFlagged for reviewTranslator / QA
finalReviewed and approvedReviewer
signed-offProduction-readyLanguage lead
// Find texts needing review
getTranslatedTextsByState
  filePath: "Translations/MyApp.es-ES.xlf"
  translationStateFilter: "needs-review-translation"
  limit: 0

// After review, promote to final
saveTranslatedTexts
  filePath: "Translations/MyApp.es-ES.xlf"
  translations: [
    { "id": "...", "targetText": "...", "targetState": "final" }
  ]

Common quality issues:

// Issue 1: Missing placeholder
❌ Source: "Posted %1 of %2"
❌ Translation: "Registrado %2"         // missing %1
✅ Translation: "Registrado %1 de %2"

// Issue 2: Character limit exceeded
❌ Source: "Post" (maxLength: 10)
❌ Translation: "Registrar y contabilizar"  // 25 chars
✅ Translation: "Registrar"                 // 9 chars

// Issue 3: Context-dependent meaning
Source: "Post"
Context: Action caption → "Registrar" ✅
Context: Table name     → "Correo"    ✅  (different meaning!)
Pattern 5: Translation Memory and Glossary

Use existing translations for consistency:

// Get all translated texts as a reference map
getTranslatedTextsMap
  filePath: "Translations/MyApp.es-ES.xlf"
  limit: 0

// Search for specific terms across translations
getTextsByKeyword
  filePath: "Translations/MyApp.es-ES.xlf"
  keyword: "Customer|Vendor|Invoice"
  isRegex: true
  caseSensitive: false
  searchInTarget: true

Glossary approach:

  • Before translating a batch, retrieve existing translations with getTranslatedTextsMap
  • Search for related terms with getTextsByKeyword to ensure consistent terminology
  • Standard BC terms should match Microsoft's official base app translations
Pattern 6: Regional Variations

Manage locale-specific translations (e.g., es-ES vs es-MX):

// Step 1: Create base translation (es-ES)
createLanguageXlf
  generatedXlfFilePath: "Translations/MyApp.g.xlf"
  targetLanguageCode: "es-ES"
  matchBaseAppTranslation: true

// Step 2: Create regional variant from base
createLanguageXlf
  generatedXlfFilePath: "Translations/MyApp.g.xlf"
  targetLanguageCode: "es-MX"
  matchBaseAppTranslation: true

// Step 3: Get base translations as reference
getTranslatedTextsMap
  filePath: "Translations/MyApp.es-ES.xlf"
  limit: 0

// Step 4: Copy base, then adjust regional terms
// "Ordenador" (es-ES) → "Computadora" (es-MX)
// "Factura" stays the same in both

Workflow

Show full SKILL.md (264 more words)Show less
Step 1: Setup
  1. Build the extension to generate the .g.xlf file: al_build
  2. Create language file for each target locale (Pattern 1)
  3. If language files already exist, refresh them (Pattern 2)
Step 2: Translate
  1. Retrieve untranslated texts with getTextsToTranslate (paginate with limit/offset)
  2. Check translation memory for consistency (Pattern 5)
  3. Translate in batches of 20-50 items (Pattern 3)
  4. Save progress frequently — use targetState: "translated"
Step 3: Review
  1. Retrieve texts by state: getTranslatedTextsByState with "translated" filter
  2. Validate:
    • All placeholders preserved (%1, %2, etc.)
    • Character limits respected
    • Context-appropriate translations
    • Consistent terminology across the extension
  3. Mark reviewed texts: targetState: "needs-review-translation" → "final"
Step 4: Finalize
  1. Verify no untranslated texts remain: getTextsToTranslate with limit: 0
  2. Promote all final texts to signed-off
  3. Build the extension to verify XLF integration: al_build
  4. Test the UI in the target language

Common Language Codes

CodeLanguageCodeLanguage
es-ESSpanish (Spain)fr-FRFrench (France)
es-MXSpanish (Mexico)fr-CAFrench (Canada)
de-DEGermanpt-BRPortuguese (Brazil)
it-ITItaliannl-NLDutch
da-DKDanishsv-SESwedish
nb-NONorwegianfi-FIFinnish
pl-PLPolishcs-CZCzech
ja-JPJapanesezh-CNChinese (Simplified)

References

Constraints

  • This skill covers XLF translation management, batch translation, and quality review workflows
  • Do NOT edit .g.xlf files manually — they are compiler-generated
  • Do NOT remove or reorder placeholders (%1, %2) in translations
  • Do NOT exceed maxLength character limits defined in AL source
  • Do NOT translate without checking existing translation memory first (consistency)
  • Translation testing in UI → skill-testing.md | Page captions and tooltips → skill-pages.md

© javiarmesto, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/skill-translate of javiarmesto/ALDC-AL-Development-Collection.

Open the folder on GitHubat commit 4f99d7d

Compare with similar skills

Skill Translate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Skill Translate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Skill Translate this skilljaviarmesto/ALDC-AL-Development-Collection109—~2.2kAutomated safety check: PassMIT
Translation Diff ExportDevolutions/UniGetUI26k—~1.1kAutomated safety check: PassMIT
Translation Diff ImportDevolutions/UniGetUI26k—~750Automated safety check: PassMIT
Translation Diff TranslateDevolutions/UniGetUI26k—~934Automated safety check: PassMIT
Plane UI Translationmakeplane/plane61k—~16kAutomated safety check: PassAGPL-3.0
Translatetagspaces/tagspaces5.3k—~2.2kAutomated safety check: PassAGPL-3.0

Similar skills

  • Translation Diff Export

    Devolutions/UniGetUI

    Compares UniGetUI JSON locale files against English, identifies untranslated or source-changed keys, and generates patch, reference, and handoff files for a target language.

    26k GitHub stars~1.1k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Translation Diff Import

    Devolutions/UniGetUI

    Merges translated key-value pairs from a UniGetUI JSON localization patch back into the full language file and validates the merged result.

    26k GitHub stars~750 tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Translation Diff Translate

    Devolutions/UniGetUI

    Translates a sparse UniGetUI JSON language patch, writes completed entries into the working copy, preserves placeholders and terminology, and prepares the patch for merge-back.

    26k GitHub stars~934 tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Plane UI Translation

    makeplane/plane

    Sets the rules for translating and updating Plane's UI strings across locales: do-not-translate terms, plural forms, placeholders and AI translation review.

    61k GitHub stars~16k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Translate

    tagspaces/tagspaces

    Translate new or untranslated i18n strings from the English locale files (core.json + peri.json) into all other locales, maintaining consistency with each language's existing translations.

    5.3k GitHub stars~2.2k tokensUpdated 4 days ago
    Writing & ContentAuto-check passed
  • Translation Source Sync

    Devolutions/UniGetUI

    Synchronizes the UniGetUI English language file with source-code usage, identifies missing translation keys, removes unused entries, reports localization drift, and can reorder locale files to match…

    26k GitHub stars~1.2k tokensUpdated yesterday
    Writing & ContentAuto-check passed

More from javiarmesto/ALDC-AL-Development-Collection

All 14 skills in this repo
  • Skill Agent Instructions

    javiarmesto/ALDC-AL-Development-Collection

    Generate, review, and optimize natural language instructions for Business Central agents (Designer or SDK).

    109 GitHub stars~2.8k tokensUpdated 3 days ago
    Auto-check passed
  • Skill API

    javiarmesto/ALDC-AL-Development-Collection

    AL API development patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~3.5k tokensUpdated 3 days ago
    Auto-check passed
  • Skill Copilot

    javiarmesto/ALDC-AL-Development-Collection

    AL Copilot capability development for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~3.5k tokensUpdated 3 days ago
    Auto-check passed
  • Skill Migrate

    javiarmesto/ALDC-AL-Development-Collection

    AL version migration for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~3k tokensUpdated 3 days ago
    Auto-check passed
  • Skill Agent Task Patterns

    javiarmesto/ALDC-AL-Development-Collection

    Agent SDK task integration patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~4.2k tokensUpdated 3 days ago
    Auto-check passed
  • Skill Agent Toolkit

    javiarmesto/ALDC-AL-Development-Collection

    Build, configure, and integrate Business Central agents using the AI Development Toolkit and Agent SDK.

    109 GitHub stars~4.4k tokensUpdated 3 days ago
    Auto-check passed

Questions about Skill Translate

What does Skill Translate do?

AL translation and localization for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection. Skill Translate is an agent skill from javiarmesto/ALDC-AL-Development-Collection. AL translation and localization for Business Central.

When should I use Skill Translate?

Skill Translate fits situations like: working with XLF files; implementing multi-language support in extensions.

How do I install Skill Translate in Claude Code?

Run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-translate -a claude-code`. Or copy the skill folder (skills/skill-translate in javiarmesto/ALDC-AL-Development-Collection) into .claude/skills/skill-translate in your project. Claude Code loads it when a task matches its description.

How do I install Skill Translate in Codex?

Run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-translate -a codex`. Or copy the skill folder (skills/skill-translate in javiarmesto/ALDC-AL-Development-Collection) into .agents/skills/skill-translate in your project. Codex loads it when a task matches its description.

Can I use Skill Translate in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-translate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-translate, .gemini/skills/skill-translate, .github/skills/skill-translate and .opencode/skills/skill-translate in your project.

What does Skill Translate need to run?

SKILL.md names no scripts, command-line tools or credentials: Skill Translate is instructions for the agent only.

Does Skill Translate access the network?

SKILL.md names 3 domains. As links in the text: learn.microsoft.com, marketplace.visualstudio.com and docs.oasis-open.org. This is read from the text; nothing was executed.

Is Skill Translate safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Skill Translate use?

Skill Translate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Skill Translate use?

About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Skill Translate?

Skills that share tags, products or a category with Skill Translate: Translation Diff Export (Devolutions/UniGetUI, 26k stars), Translation Diff Import (Devolutions/UniGetUI, 26k stars), Translation Diff Translate (Devolutions/UniGetUI, 26k stars) and Plane UI Translation (makeplane/plane, 61k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Skill Translate?

javiarmesto (a GitHub user) maintains it in javiarmesto/ALDC-AL-Development-Collection, which has 109 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.

Source: javiarmesto/ALDC-AL-Development-Collection on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.