> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autosana.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Language & region

> Open your app in another language from its first screen, with no test step needed

Use **Language** and **Region** to change the language the app shows and the country the device is set to. Use [Proxy location](https://docs.autosana.ai/run-location.md) only when servers must see traffic from another country.

Choose a language, a region, or both. Your app opens in that language from its first screen, on Android, iOS and web:

* **Android and iOS:** the device language is set before the first step, and your app is opened in it.
* **Web:** the browser opens in that language. Your site sees it in the `Accept-Language` header and in `navigator.language`.

Your test steps can stay in English. Autosana tells the testing AI the run's language, so a step such as "Tap Sign in" finds **Anmelden** on a German screen. Text that a step tells it to type is typed exactly as written, not translated.

Runs are cached per language. A German run never replays a run recorded in English.

## Language and Region

The run dialog and the automation editor have two pickers:

* **Language:** the language your app shows. **Default (English)** keeps English.
* **Region:** the country the device is set to: dates, money, time zone and location. **Default** uses the language's usual country, such as Germany for German and the United States for English.

Any language works with any country. For example, English with Region set to Mexico runs in English with Mexican dates, money, time zone and location (`en-MX`). The line under the pickers shows the code the device uses.

## Default

If you leave both pickers on Default, the run uses US English (`en-US`). Every device and browser starts in US English, and Autosana leaves it that way.

After a run that changed the language, the next run starts in US English again.

On a physical iPhone, and on an iOS simulator on your own machine, only your app opens in the language. The phone's own setting does not change.

## Time zone and location

When the run has a country, such as `de-DE`, it also looks like it is in that country. Choosing a language or a region in the dashboard always sets one:

* **Location:** the GPS position moves to that country, on web, Android and iOS. Web runs get the location permission automatically.
* **Time zone:** the country's main time zone, on web and Android emulators. iOS runs keep US Pacific time, and physical Android devices keep their own.

Most countries use their capital. Countries with several time zones use one city:

| Country | City and time zone |
| - | - |
| United States | Los Angeles (Pacific) |
| Canada | Toronto (Eastern) |
| Australia | Sydney |
| Brazil | São Paulo |
| Mexico | Mexico City |

A language without a country, such as `de`, changes neither. A test step that changes the location overrides it for the rest of the run. Default runs keep the device's own location and US Pacific time.

A language does not change the IP address. For that, use [Proxy location](https://docs.autosana.ai/run-location.md). When a run has both, the time zone and location follow the language, and only the IP address follows the proxy.

## Supported languages

Use a language and region code, such as:

| Code | Language |
| - | - |
| `en-GB` | English (United Kingdom) |
| `de-DE` | German (Germany) |
| `fr-CA` | French (Canada) |
| `es-MX` | Spanish (Mexico) |
| `pt-BR` | Portuguese (Brazil) |
| `ja-JP` | Japanese (Japan) |
| `zh-TW` | Chinese (Taiwan) |
| `ar-SA` | Arabic (Saudi Arabia) |

The **Language** and **Region** pickers list every supported language and country, and any language works with any country, such as `en-MX`. A language without a region, such as `de`, is also accepted. The app shows German either way. With a region, dates, numbers and currency follow that country. Without one, iOS keeps the device's region, while Android and web use the language's usual formats. Lowercase and `_` work too: `de_de` becomes `de-DE`.

An unsupported code is refused before the run starts. The error starts with `Unknown locale` and lists the valid codes.

It works on every platform and device: web, Android and iOS, emulators, simulators, physical devices and devices on your own machine.

## Choose a language

### In the dashboard

* **Run dialog:** choose **Language** and **Region** under **Run options**.
* **Automations:** in the automation editor, choose **Language** and **Region** above the browser or device picker. Every run the automation starts uses them.

Reruns and automatic retries keep the language of the original run. The run page shows the run's language.

### With the CLI

```bash theme={null}
autosana flows run --flow checkout --locale de-DE
```

`autosana builds upload --locale de-DE` gives the uploaded build a language. See [Build uploads](#build-uploads).

### With the GitHub Action

Add `locale` to the [Autosana GitHub Action](https://docs.autosana.ai/ci-cd-integration.md#run-in-another-language) step. Every run the upload starts uses it, including the tests the step selects.

```yaml theme={null}
    locale: de-DE
```

### With the API

Send `locale` in the request body of these calls:

| Call | Effect |
| - | - |
| `POST /api/v1/flows/run` ([Run Flows](https://docs.autosana.ai/api-runs.md#run-flows)) | The runs it starts use the language. |
| `POST /api/ci/upload-web-build` ([Upload Web Build](https://docs.autosana.ai/api-ci.md#upload-web-build)) | Every run the upload starts uses the language. |
| `POST /api/ci/confirm-upload` ([Confirm Upload](https://docs.autosana.ai/api-ci.md#confirm-upload)), Android and iOS | Every run the upload starts uses the language. |
| Automation create and update | The automation's runs use the language. |

```bash theme={null}
curl -X POST https://backend.autosana.ai/api/v1/flows/run \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"app_id": "my-web-app", "flow_ids": ["<flow-id>"], "locale": "de-DE"}'
```

### With MCP

These [MCP tools](https://docs.autosana.ai/mcp-setup.md) take a `locale` argument:

* `flows_run`
* `suites_run`
* `labels_run`
* `folders_run`
* `automations_create`
* `automations_update`

On `automations_update`, an empty string removes the saved language.

## Build uploads

An upload can carry a language. It applies to every run the upload starts:

* CI/CD automations. The upload's language replaces the automation's own language. If the upload has none, the automation uses its own.
* Later PR test runs against that build.

## When the language can't be set

If the device refuses the language, the run fails before the first step with an error that starts with `Could not set the device language`.

## Change the language during a test

To switch languages partway through a flow, write it as a step, such as "Set the device locale to de\_DE". See [Flows](https://docs.autosana.ai/flows.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.