# Download the file you uploaded, with the values changed

**Category:** [String Manager](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/categories/strings)
**Updated:** 2026-10-04

## A generated file is correct, and it is not the same file

Downloading a string set normally builds a fresh file from the rows. That file is valid, and it is not the file you gave us: the comments a developer wrote are gone, the keys come back alphabetised, the sections and blank lines that made a 4,000-line `strings.xml` navigable are flattened, and anything the parser does not model — `translatable="false"`, a `#, fuzzy` flag, an XML entity declaration — is simply absent.

It matters most where it hurts most. A vendor returning a translated file is expected to return the file they were given with the values changed. Diff a generated file against the original and every line reads as changed, so nobody can review it.

## Use original file as template

Tick **Use the uploaded file as a template** in the download dialog. Instead of generating, String Manager takes the original bytes, finds where each value sits, and substitutes. Everything that is not a value is preserved exactly, because it is never touched.

The option appears only when an uploaded file is stored for that format. Before you download, a check reports what will happen — how many values will be written, and anything that cannot be.

## Two rules that keep it honest

- **A string that is not in the file cannot be added to it.** There is nowhere in the original to put it: no surrounding structure, no position anybody chose. Those strings are **reported by name**, never dropped quietly — a download that is silently short is worse than one that says what it left out. If you need them, download the generated file instead.

- **A string with no translation is left as it stands**, not blanked. In every one of these formats the source text is the fallback a runtime actually uses, and an empty value ships as an empty screen.

## Which formats

Template export works for **iOS .strings, Android XML, gettext .po, .properties, JSON, YAML, DITA, HTML, HTML blocks and generic XML**, plus **Word (.docx) and PowerPoint (.pptx)**, where the document is rewritten with its formatting intact.

Where a file uses something that cannot be located safely, the option is refused with a reason rather than producing a file that is subtly wrong. Generated download is always available.

## Through the API

The string-set download endpoint takes the same option, so a build pipeline gets the same file a person would: add `use_template=1`, and `key_platform` and `missing_keys` alongside it.

---

## Related Articles

- [API, webhooks, and automation](https://help.totalctrl.app/en-US/articles/string-manager-integrations)
- [Platform keys: one string, the name each build expects](https://help.totalctrl.app/en-US/articles/string-manager-platform-keys)
- [Find: duplicates, old terms, blocked words and tone](https://help.totalctrl.app/en-US/articles/string-manager-find-duplicates)
- [Placeholders, and why they are stored separately](https://help.totalctrl.app/en-US/articles/string-manager-placeholders)
- [Create a string set and add languages](https://help.totalctrl.app/en-US/articles/create-a-string-set)

---
[← Back to TotalCtrl Help Center](https://help.totalctrl.app/en-US/)