CSV / TSV (multi-locale) localization with AI
CSV and TSV spreadsheets with a key column and one column per locale.
.csv.tsvformat: csvevery locale in one file
What it is
Many teams keep strings in a spreadsheet, exported as CSV or TSV: one row per key, one column per language. Game engines (Unity, Godot) use the same layout.
Example
translations/strings.csv
key,description,en,es,demenu.play,Main menu button,Play,Jugar,Spielenmenu.quit,Main menu button,Quit,Salir,BeendenHow Glossa handles it
- Plurals
- CSV has no plural structure; keep plural variants as separate keys.
- Comments and context
- A description, comment or context column is detected and used as context.
- Placeholders
- Common placeholder styles in cells are protected and checked.
- Round trip
- The first locale column is the source. Comma, semicolon and tab delimiters are detected, and every locale column is imported in one push.
Translate it from the command line
Push the source-language file; strings are deduplicated against the rest of your workspace and queued for translation. Pull writes translations/strings.csv back in the same format.
npx @meterapp/glossa loginnpx @meterapp/glossa push translations/strings.csv --project appnpx @meterapp/glossa pull --project app --locale es,de,jaOr ask an agent over MCP: “Push translations/strings.csv to Glossa and pull Spanish.” It calls push_file and pull_file. See the CLI and MCP guides.
Other formats
Xcode String CatalogFlutter ARBJSON (key/value, i18next)YAML (Rails i18n)Apple .stringsApple .stringsdictAndroid strings.xmlGettext PO/POTXLIFF 1.2 / 2.0Java .properties.NET RESX
Moving from Crowdin? Read the comparison.