---
title: 'i18n support'
description: 'V8 optionally implements the ECMAScript 402 specification. The API is enabled by default, but can be turned off at compile time.'
---
V8 optionally implements [the ECMAScript 402 specification](https://tc39.es/ecma402/). The API is enabled by default, but can be turned off at compile time.

## Prerequisites

The i18n implementation adds a dependency on ICU. As of v7.2, V8 requires at least ICU version 63. The exact dependency is specified in [V8’s `DEPS` file](https://crsrc.org/c/v8/DEPS).

Run the following command to check out a suitable version of ICU into `third_party/icu`:

```bash
gclient sync
```

See [“staying up to date”](/docs/source-code#staying-up-to-date) for more details.

## Alternative ICU checkout

You can check out the ICU sources at a different location and define the gyp variable `icu_gyp_path` to point at the `icu.gyp` file.

## System ICU

Last but not least, you can compile V8 against a version of ICU installed in your system. To do so, specify the GYP variable `use_system_icu=1`. If you also have `want_separate_host_toolset` enabled, the bundled ICU is still compiled to generate the V8 snapshot. The system ICU is only used for the target architecture.

## Embedding V8

If you embed V8 in your application, but your application itself doesn’t use ICU, you need to initialize ICU before calling into V8 by executing:

```cpp
v8::V8::InitializeICU();
```

It is safe to invoke this method if ICU was not compiled in, then it does nothing.

## Compiling without i18n support

To build V8 without i18n support, use [`gn args`](/docs/build-gn#gn) to set `v8_enable_i18n_support = false` before compiling.
