SurveyLoopr
Tips & Tricks
6 min read

How to Add Languages in ODK

Mehrab Ali
Mehrab AliPublished June 1, 2026

ODK supports multilingual forms where enumerators can switch the interface language during data collection. You add translations by creating language-specific columns in your XLSForm and listing the supported languages in the settings sheet. The enumerator then selects their language when they open the form on ODK Collect.

How ODK multilingual forms work

XLSForm uses a column naming convention to support multiple languages: label::English, label::Bangla, label::French, etc. When ODK Central detects these columns, it makes the form available in each language listed.

The :: separator tells ODK "this column is a translation of the label field in the specified language." The same convention applies to hint, constraint_message, and required_message columns.

Step 1: Add language columns to the survey sheet

Open your XLSForm in LooprAI Workspace or in Excel. In the survey sheet, rename label to label::English (or whichever language is your primary). Then add a new column for each additional language:

typenamelabel::Englishlabel::Bangla
textnameWhat is your name?আপনার নাম কি?
integerageHow old are you?আপনার বয়স কত?
select_one ynconsentDo you consent to this survey?আপনি কি এই জরিপে সম্মতি দেন?

Apply the same pattern to hint, constraint_message, and required_message if you use them.

Tip:

Keep your primary language column first (e.g., label::English). ODK uses the first language column as the default when no language is selected.

Step 2: Add language columns to the choices sheet

The choices sheet also needs translated labels. Add a label::[Language] column for each language:

list_namenamelabel::Englishlabel::Bangla
ynyesYesহ্যাঁ
ynnoNoনা
yndkDon't knowজানি না

Step 3: Configure the settings sheet

Open the settings sheet and set the default_language to your primary language. This tells ODK which language to display when the enumerator first opens the form.

form_titleform_iddefault_language
Household Survey 2026hh_survey_2026English
Note:

The language name in default_language must match exactly what you used in your column headers after label::. It is case-sensitive.

Step 4: Preview the translations

In LooprAI Workspace, click Preview to open the mobile simulation. In the preview, look for the Language selector — it appears as a globe icon or a language dropdown. Switch between languages to verify your translations display correctly.

Step 5: Common issues and fixes

Language not appearing in ODK Collect

The enumerator's device may have an older cached version of the form. Have them delete and re-download the form from the server.

Characters not displaying correctly

This usually happens with non-Latin scripts (Arabic, Bangla, Chinese). Ensure your Excel file is saved in UTF-8 encoding. In Excel: File → Save As → Tools → Web Options → Encoding → Unicode (UTF-8).

Some labels showing in wrong language

Check for missing translations in specific rows. Any empty cell in a language column causes ODK to fall back to the column name (e.g., "label::Bangla") instead of the translated text.

"Adding Bangla translations to a 70-question survey used to take a full day of careful Excel work. With LooprAI's translation assist, we did the same in about 2 hours — and caught 12 translation errors automatically."

— Rehnuma, Education Expert

Using LooprAI to generate translations

In your LooprAI Workspace, after creating the XLSForm structure, you can ask LooprAI to add translations:

/translate add Bangla

LooprAI will add the required translation columns and populate the translated labels. Always have a native speaker review machine-generated translations before deployment.

For the full LooprAI form-building workflow, see How to Convert a Word or PDF Questionnaire Using LooprAI. If you are translating inserted survey modules, also review How to Use Standardized Modules.

Next: Using Standardized Modules →

Frequently Asked Questions

How many languages can I add to an ODK form?

ODK supports unlimited languages in a single form. Each language requires separate label columns for each question and choice option. The enumerator selects their preferred language when opening the form on ODK Collect.

What's the difference between label and label::language columns?

The label column is the default language text. Label::language columns contain translations in specific languages. ODK Central uses the double colon (::) separator to identify translated columns. If no language is selected, ODK shows the default label column.

Do I need to translate all text in my form?

You should translate all user-facing text including question labels, hint text, choice option labels, constraint messages, and required messages. Internal field names and technical columns do not need translation.

How do I handle right-to-left languages like Arabic?

ODK Collect supports right-to-left languages natively. Ensure your XLSForm file is saved in UTF-8 encoding to properly display Arabic, Hebrew, and other RTL scripts. The text direction is handled automatically by ODK Collect.

Can LooprAI automatically translate my form?

Yes, LooprAI can automatically add translation columns and populate translated text using the /translate command. Always have a native speaker review machine-generated translations before deployment, as AI translation may miss context-specific terminology.

No Credit Card Required

Build the form first. Add hosting when you need it.

Start free with LooprAI, then deploy a managed ODK Central server or run DataSnap checks when your project is ready.

Automation handles the mechanical work.

Researchers decide what the evidence means.