If you are managing localization for a SaaS product, you know that translating a marketing site is the easy part. Translating the actual software application is an operational headache.
A typical SaaS application contains thousands of “strings”: the individual snippets of text that make up your buttons, error messages, tooltips, and dashboard headers.
To go multilingual, these strings must be extracted, translated, and re-integrated without breaking the application’s code. This guide covers how modern SaaS teams use CSV exports and AI to localize their app interfaces at scale, securely and accurately.
The Challenge of App String Localization
Translating a blog post is a fluid, contextual exercise. Translating an app string is a rigid, technical one.
SaaS strings present three unique challenges:
- Lack of Context: A string that just says “Lead” could be a noun (a sales lead) or a verb (to lead a team). Translators often guess wrong.
- Code Variables: Strings often contain dynamic variables like
Welcome back, {{first_name}}!orYou have {count} new messages. If a translator accidentally alters the variable syntax, the app breaks. - Strict Terminology: If your app uses the term “Dashboard” in English, it needs to be consistently translated as “Tableau de bord” in French across all 500 instances. Inconsistencies confuse users.
The CSV Workflow for App Strings
Most modern frameworks (React, Vue, Ruby on Rails) use i18n (internationalization) libraries that store strings in JSON, YAML, or CSV files.
For translation purposes, converting these files to a flat CSV is the most reliable approach. A standard SaaS string CSV looks like this:
| string_key | source_en | target_fr | context_notes |
|---|---|---|---|
btn_save |
Save Changes | Button on settings page | |
err_network |
Connection failed. Please retry. | Toast notification | |
nav_dashboard |
Dashboard | Main sidebar |
Once you have this CSV, AI can do the heavy lifting.
Using AI for String Translation (The Safe Way)
You cannot simply dump an app string CSV into a standard translation tool. You need a dedicated workflow that respects the technical constraints of software.
Using a platform like AI Glot, the workflow looks like this:
1. Describe the columns
Upload your CSV and write one sentence: translate the source_en column into the empty target_fr column. The string_key column is left out, ensuring your code identifiers are never accidentally translated.
2. Lock down your variables
SaaS strings are full of code. You need an AI tool that allows you to provide Custom Instructions.
Before launching the batch, you provide a simple instruction: “Do not translate any text enclosed in curly braces, such as {{variable}}.” The AI will process the natural language but leave your code syntax perfectly intact.
Placeholders are already on the protected list applied to every string the engine writes, alongside HTML tags, markdown, URLs and identifiers. Your own instruction is a second layer on top of that, and it is worth writing whenever your syntax is unusual.
string_key,source_en,target_frgreet_user,"Welcome back, {{first_name}}!",greet_user,"Welcome back, {{first_name}}!","Bon retour, {{first_name}} !"msg_inbox,"You have {count} new messages",msg_inbox,"You have {count} new messages","Vous avez {count} nouveaux messages"3. Enforce UI consistency with Glossaries
This is the most critical step for SaaS localization.
Your software likely has specific nouns (Dashboard, Workspace, Repository) and verbs (Deploy, Commit, Sync) that form your core user experience.
You must establish a Translation Glossary. Upload a list mapping your core English UI terms to their exact target-language equivalents. The AI will strictly apply these rules across all thousands of strings, guaranteeing that “Workspace” isn’t translated three different ways in the same application.
Two instructions, and they are not interchangeable
Steps 1 and 2 above look like the same feature written twice. They are two different layers, and putting a sentence in the wrong one fails quietly.
- Decides WHICH text gets translated
- Read once, against the structure of your file
- Turned into code that runs over every row
- Example: "fill target_fr from source_en, leave string_key alone"
- Decide HOW each string is written
- Applied while one single string is being written
- The only thing in view is that one string
- Example: "keep anything in double curly braces exactly as written"
So “never translate the key column” written in the batch instructions does nothing at all, and nothing warns you: by then the key column was already excluded, or already included, by the plan. Describe structure in the plan, and describe what a string must look like in the batch instructions.
Re-integrating and Testing
Once the AI processes the CSV, you download the completed file. Because you mapped the columns precisely, your string_key column is perfectly aligned with your new target_fr column.
A spreadsheet holds as many languages side by side as you give it columns, so French is not a separate run from German.
You can now convert this CSV back into your required i18n format (JSON, YAML) and push it to your codebase.
The Bottom Line
SaaS localization doesn’t have to require expensive enterprise translation management systems (TMS) or months of manual work by offshore teams.
By structuring your app strings in a clean CSV and using a controlled, glossary-enforced AI workflow, you can localize your entire application interface in an afternoon.
Ready to localize your app strings? Try AI Glot and translate your first batch of SaaS strings for free.
