国际化支持

V8 可选地实现 ECMAScript 402 规范。该 API 默认启用,但可以在编译时关闭。

先决条件 #

国际化实现添加了对 ICU 的依赖。从 v7.2 开始,V8 至少需要 ICU 版本 63。确切的依赖关系在 V8 的 DEPS 文件 中指定。

运行以下命令将合适的 ICU 版本签出到 third_party/icu

gclient sync

有关更多详细信息,请参阅 “保持最新”

替代 ICU 签出 #

您可以在其他位置签出 ICU 源代码,并定义 gyp 变量 icu_gyp_path 指向 icu.gyp 文件。

系统 ICU #

最后,您可以针对系统中安装的 ICU 版本编译 V8。为此,请指定 GYP 变量 use_system_icu=1。如果您还启用了 want_separate_host_toolset,则捆绑的 ICU 仍然会被编译以生成 V8 快照。系统 ICU 仅用于目标架构。

嵌入 V8 #

如果您在应用程序中嵌入 V8,但应用程序本身不使用 ICU,则需要在调用 V8 之前通过执行以下操作来初始化 ICU:

v8::V8::InitializeICU();

如果未编译 ICU,则调用此方法是安全的,它不会执行任何操作。

在没有国际化支持的情况下编译 #

要构建没有国际化支持的 V8,请使用 gn args 在编译之前设置 v8_enable_i18n_support = false