agent-builder
Agent Toolkit Builder — specialist in designing and coding Business Central agents using the AI Development Toolkit and Agent…
AL translation and localization for Business Central. Use when working with XLF files, NAB tools, or implementing multi-language support in extensions.
$ npx -y skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-translate --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/skill-translateContext preview
The summary Claude sees to decide when to auto-load this skill.
AL translation and localization for Business Central. Use when working with XLF files, NAB tools, or implementing multi-language support in extensions.
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."
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.
This skill should be loaded when:
Before adopting BC29 namespace-aware translations, read the translation section of [AL18 capability checks](../skill-migrate/references/al18-capabilities.md). Verify `TranslationsWithNamespaces` in the installed schema and compare generated XLF IDs and retained translations before changing an existing project's setting.
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:**
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:
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
Use translation states to implement a review workflow:
| State | Meaning | Who | |---|---|---| | `translated` | Initial translation done | Translator | | `needs-review-translation` | Flagged for review | Translator / QA | | `final` | Reviewed and approved | Reviewer | | `signed-off` | Production-ready | Language 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!)
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:**
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
Skills-based, spec-driven, TDD-orchestrated development framework for Microsoft Dynamics 365 Business Central. Engineering systems, visibly reasoned.
Agent Toolkit Builder — specialist in designing and coding Business Central agents using the AI Development Toolkit and Agent…
Generate optimized natural language instructions for Business Central agents (Designer or SDK). Applies the…
End-to-end workflow to create a coded Business Central agent using the Agent SDK. Orchestrates the 7 phases following the…
Generate optimized natural language instructions for Business Central agents (Designer or SDK). Applies the…
Generate AL code for Business Central Agent SDK task integration. Applies the patterns from skill-agent-task-patterns to produce…
Generate comprehensive test codeunits for Business Central Agent SDK integrations. Covers 6 categories: Registration, Factory,…