Excel round-trip workflow

Hand a single XLSX to a translator and import it back without losing context.

The Excel round-trip is the load-bearing workflow for most localization teams. This guide covers the export, what translators see, and the safety nets on re-import.

Export #

With the model open, File → Export translations…. Pick CSV or XLSX, choose the destination, and save.

The export contains:

  • A schema-version marker (cell A1 on XLSX, a #-prefixed comment line on CSV)
  • Four fixed informational columns: Object ID, Type, Parent, Name
  • Two columns per culture: Caption ({culture}) and Description ({culture})
  • One row per translatable object (tables, columns, measures, hierarchies, hierarchy levels)

UTF-8 with BOM, so Excel opens the file correctly when a translator double-clicks it on Windows. CSV uses CRLF line endings for the same reason.

Translator experience #

Translators open the file. They see one familiar Excel grid. They fill in the empty cells in the cultures they’re working on, save, and send it back. They don’t need to install Daxlate.

The first column (Object ID) is the import-time identity key. Translators should treat it as a foreign key and not edit it. The same goes for Type, Parent, and Name, which are there to help translators understand each row’s context.

Re-import #

In the app, File → Import translations…, pick the file, and confirm. The app previews the import in a dialog before applying:

  • Row count, with the number of cells changed
  • Any new cultures detected in the file (they’ll be added to the model)
  • Warnings for unknown columns, unknown Object IDs, and schema-version mismatches (a file from a newer major version is rejected outright)

Click Apply to commit. The result lands in the editor as a single undoable batch in v1.x. For v1.0, imports clear the undo history.

Empty-cell semantics #

There is no sentinel value. The import overlays what’s in the file onto the model:

  • A non-empty cell sets the translation for that culture.
  • An empty cell clears the translation if there was one, or is a no-op if there wasn’t.

In practice, that means: if a translator returns the file with cells they haven’t worked on still blank, the existing translations for those cells are cleared on import. To preserve existing translations, the translator should leave them in place rather than deleting them.

If a column in the file refers to a culture that doesn’t yet exist on the model, the import adds the culture and populates it from the file’s cells.

Schema version #

Both CSV and XLSX exports carry a version marker (Daxlate/1.0, in cell A1 on XLSX or as a comment on the first CSV line). On import, files from a newer major version are rejected with a clear error so a stale build doesn’t half-apply an incompatible file. Files with no marker are treated as 1.0 for back-compat.