国际化支持
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
。