Documentation · Reference
XLSX and CSV file format
The schema of the round-trip workbook.
Daxlate exports translations as either XLSX (via ClosedXML) or CSV (via CsvHelper). Both formats share a column layout. XLSX adds a header sheet and visual treatment, while CSV is the canonical comma-separated form.
XLSX layout #
A single worksheet named Translations:
| Row | Contents |
|---|---|
| 1 | Schema-version marker in cell A1 (Daxlate/1.0, italic, gray) |
| 2 | Header row, bold, with a beige background |
| 3+ | One row per translatable object |
The header row freezes so column titles stay visible as the translator scrolls. The first four columns also freeze so the identity columns stay visible as they scroll right across the culture columns.
Columns #
Four fixed informational columns come first:
| Column | Notes |
|---|---|
Object ID | Import-time identity key. Do not edit. |
Type | One of Table, Column, Measure, Hierarchy, Level. |
Parent | Containing object’s name (e.g. the table a measure lives in). |
Name | The object’s name in the model (the default-culture caption). |
Then, for each culture in the model, two columns:
Caption ({culture}) Description ({culture})
The model’s default culture columns get a shaded background so it’s clear which column is the source of truth.
Object ID convention #
Daxlate composes IDs from the object’s kind and qualified name:
| Kind | Form | Example |
|---|---|---|
| Table | t.{Name} | t.Sales |
| Column | c.{Table}.{Name} | c.Sales.Revenue |
| Measure | m.{Table}.{Name} | m.Sales.Total Revenue |
| Hierarchy | h.{Table}.{Name} | h.Date.Calendar |
| Hierarchy Level | {HierarchyId}.l{Ordinal} | h.Date.Calendar.l1 |
Renaming an object in the model changes its ID. On re-import, rows with an unknown Object ID are surfaced as warnings in the preview dialog and skipped; the import does not silently drop them.
Schema version #
Cell A1 of the XLSX (or the first comment line of the CSV) carries the
schema version. The reader rejects files from a newer major version with a
clear warning and treats missing markers as 1.0 for back-compat with
exports made before versioning was added.
The current marker is Daxlate/1.0. Bumps are minor for additive
columns (new columns are ignored with a warning) and major for breaking
changes (e.g. a different Object ID convention).
CSV layout #
CSV uses the same column layout, comma-separated. Line 1 holds the schema marker as a comment:
# Daxlate/1.0
Object ID,Type,Parent,Name,Caption (en-US),Description (en-US),Caption (fr-FR),Description (fr-FR)
t.Sales,Table,,Sales,Sales,,Ventes,
c.Sales.Revenue,Column,Sales,Revenue,Revenue,,Chiffre d'affaires,
UTF-8 with BOM, CRLF line endings, for Excel double-click compatibility.
Empty cells #
Empty cells in an import file are not a sentinel for “leave as is”. They mean “set this translation to empty”. The import preview surfaces this as a change count; nothing is overwritten silently. See Excel round-trip for the full re-import flow.