# Locale and timezone (/docs/sims/conditions/locale)



`device.locale` and `device.timezone` change what the app formats dates, numbers and strings with. Both take `null` to put the setting back, and both are undone when the test ends.

```ts
await device.locale("fr-FR");
await device.timezone("Asia/Tokyo");
await app.open(); // iOS: the next launch picks both up
```

| Member                               | Does                                 |
| ------------------------------------ | ------------------------------------ |
| `locale(tag \| null, { bundleId? })` | a BCP 47 tag (`"fr-FR"`) for the app |
| `timezone(tz \| null)`               | an IANA name (`"Asia/Tokyo"`)        |

## Per platform [#per-platform]

|          | iOS simulator                                                                   | Android emulator                    |
| -------- | ------------------------------------------------------------------------------- | ----------------------------------- |
| Locale   | applies to the app launched next (`-AppleLanguages` / `-AppleLocale`)           | Android 13+ (API 33): per app, live |
| Timezone | applies to the app launched next (`TZ`); the result has `appliesOnLaunch: true` | live and device-wide                |

On iOS, set both before `app.open()`, or relaunch the app.

## In a suite [#in-a-suite]

```ts title="warden.config.ts"
conditions: { locale: "fr-FR", timezone: "Asia/Tokyo" },
```

## By hand [#by-hand]

```bash
warden ui locale fr-FR
warden ui timezone Asia/Tokyo
warden ui locale status
warden ui timezone reset
```

On iOS the change is staged for the next launch (`staged: true` and a warning): `warden ui open --relaunch`. Release clears the app locale and puts the timezone back.
