- File extensions: .xlsx, .xlsm, .xltx, .xltm
- i18n type: XLSX
XLSX, XLSM, XLTX, and XLTM are the spreadsheet file formats used by Microsoft Excel; they can also be read by and edited in other compatible programs such as LibreOffice and Google Docs. With these formats, all source strings and translations are in the same file, which differs from the usual source and language files structure in Transifex. When you upload a spreadsheet file that already has translations in it, Transifex will add both the source strings and translations to the database. Similarly, when you download the file from Transifex, translations from all languages will be in it.
Spreadsheets used for localization typically organize their languages and strings in columns. Each column represents one language, with the header row of the column specifying the language. And below that, you have the strings/translations for that language. For example:
+=========+=========+ | English | French | +---------+---------+ | Hello | Bonjour | +=========+=========+
You can use either the languages' names or their ISO codes as values for the header/language row.
How Transifex finds the language row
Transifex is pretty forgiving about how you format your spreadsheet file. If you have rows above the languages row – for example, with instructions for your translators – Transifex will simply skip them. So this file, for example, would still be compatible with Transifex:
+=========+===========+ | Use formal language | +---------+-----------+ | English | French | +---------+-----------+ | Hello | Bonjour | +=========+===========+
And if your file has more than one sheet in it, and your strings aren’t in the first sheet, Transifex will still try to find them.
In general, Transifex will look for your strings this way:
- Go through every sheet and row in the file in order
- Find the row which looks like the one with the language names
- Consider that row and the ones below it in the sheet that it was found in as the ones that hold the actual content
You can have columns in between the language columns for notes, and Transifex won't treat them as translatable strings. It might even try to add them as developer instructions in the translation editor. For example
+=========+=========================+=========+ | English | Notes | French | +---------+-------------------------+---------+ | Hello | Appears in welcome page | Bonjour | +=========+=========================+=========+
Content in the Notes column won't be added as source strings or translations, but they'll be shown to your translators in the editor.
In Transifex, each project has a set of target languages that it's translated to. If there are any differences between the languages in the uploaded file and the project, Transifex will try to deal with this as gracefully as possible.
Here's a look at a few possible scenarios:
- If the file you upload has languages that aren't in the project, those languages will be ignored. Strings from those columns won't be added to Transifex nor appear in the Editor. To add those translations to Transifex, first add the language to the project then re-upload the file. Any content that isn't added to Transifex will remain in the file, unchanged, when you download the file.
- If the project has languages that aren't in the file, the upload will proceed without issues, though of course, no translations will be uploaded for those missing languages. You can still translate those languages in the Editor. And when you download the file, the extra languages will be added as new columns at the end of your spreadsheet.
If you are unhappy with the order the languages appear or with the style of the extra columns, you can edit the file offline to make it look as you want and upload it again as a source file.
If you upload a file through the Update Source File function in Transifex, all strings in the file will be extracted from the spreadsheet. This means both source strings and translations will be updated inside Transifex. If, however, you upload the file through the Upload File function, only strings from the selected language will be uploaded to Transifex. This gives you more control over which languages get updated.
When you download a file, however, all available translations from all languages will be included in the downloaded file. You can still choose to download only reviewed strings when downloading, in which case, only the reviewed translations will be used.