bcquality/custom/knowledge/architecture/al-identifiers-must-be-english.md
Michael Dieringer 288f64df16 Add BCApps citations to Tier 1+2 knowledge files; add 2 new rules
- All 7 existing Tier 1/2 knowledge files now include a BCApps Reference
  section with concrete source links and observed patterns
- New: bcpt-scenarios-must-be-app-specific — PerformanceTest apps must
  include app-domain BCPT scenarios, not only Microsoft generic samples
- New: permission-sets-must-follow-least-privilege — View/Edit/Admin
  hierarchy with IncludedPermissionSets, mirroring BCApps BusFound pattern
- api-page-key-fields-must-be-editable-on-insert clarified: SystemId as
  ODataKeyField + Editable=false is valid (auto-generated); rule applies
  to consumer-provided key fields only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 17:48:37 +02:00

2.1 KiB

AL Naming Convention: English Identifiers Only

Core Rule

All AL identifiers must be written in English, regardless of the developer's native language. "Translations are handled separately via XLIFF files — never by writing Danish, German or other language identifiers in AL source code."

What This Covers

The rule applies to:

  • Variable and procedure names
  • Parameter and field names
  • Object identifiers (tables, codeunits, pages, enums, reports)
  • Enum value names
  • Label identifiers and default text

Captions and ToolTips may use target language in source files but require XLIFF translations for supported locales.

Practical Example

Wrong approach: Using Danish identifiers like Beløb (amount) or BeregnTotalbeløb (calculate total amount)

Correct approach: Write Amount: Decimal and CalculateTotalAmount() in code, with Danish translations managed separately through XLIFF configuration files.

Developer Conversation Handling

When developers describe requirements in their native language—such as "opret en variabel til beløbet"—the agent translates the intent into English identifiers (Amount: Decimal) rather than transliterating the original words directly into code.

This separation ensures source code remains universally readable while localization remains flexible and maintainable.

BCApps Reference

The entire BCApps codebase — maintained by Microsoft engineers across many nationalities, including Danes — uses exclusively English identifiers without exception. Across hundreds of thousands of lines of AL, no native-language identifiers appear anywhere in the source.

  • Source: https://github.com/microsoft/BCApps
  • Pattern: Every variable, procedure, field, and object name in BCApps is English. All localization is handled via caption properties and XLIFF files — never by changing identifier names.
  • Why this matters: BCApps is a multi-contributor open source project. Non-English identifiers would make the code unreadable to international contributors — the same argument applies to any CURABIS PTE shared across teams.