Intil.DisplayNames() 在 Safari 版本 < 14.1 中未定义
Intil.DisplayNames() undefined in Safari version < 14.1
Intl.Displaynames()
构造函数启用 Javascript 中的语言、区域和脚本显示名称的翻译。
遗憾的是,< 14.1.
版本的 Safari 不支持此功能(参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames#browser_compatibility)。
如何在旧版 Safari 中实现此功能?
我们可以使用 polyfill(参见 https://formatjs.io/docs/polyfills/intl-displaynames/)使它在旧的 Safari 版本中工作。
将以下 polyfill 添加到您的代码中以使 Intl.DisplayNames()
构造函数按预期工作:
// the actual polyfills:
require('@formatjs/intl-locale/polyfill');
require('@formatjs/intl-displaynames/polyfill');
// the locale data of the languages that you need to support:
require('@formatjs/intl-displaynames/locale-data/de');
require('@formatjs/intl-displaynames/locale-data/en');
这需要以下依赖项:
"@formatjs/intl-displaynames"
"@formatjs/intl-getcanonicallocales"
"@formatjs/intl-locale"
之后,构造函数应该被 polyfilled 并准备好使用。例如:
const translatedRegionNames = new Intl.DisplayNames(['en'], {type: 'region'});
...
const translatedCountryName = translatedRegionNames.of('US')
Intl.Displaynames()
构造函数启用 Javascript 中的语言、区域和脚本显示名称的翻译。
遗憾的是,< 14.1.
版本的 Safari 不支持此功能(参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames#browser_compatibility)。
如何在旧版 Safari 中实现此功能?
我们可以使用 polyfill(参见 https://formatjs.io/docs/polyfills/intl-displaynames/)使它在旧的 Safari 版本中工作。
将以下 polyfill 添加到您的代码中以使 Intl.DisplayNames()
构造函数按预期工作:
// the actual polyfills:
require('@formatjs/intl-locale/polyfill');
require('@formatjs/intl-displaynames/polyfill');
// the locale data of the languages that you need to support:
require('@formatjs/intl-displaynames/locale-data/de');
require('@formatjs/intl-displaynames/locale-data/en');
这需要以下依赖项:
"@formatjs/intl-displaynames"
"@formatjs/intl-getcanonicallocales"
"@formatjs/intl-locale"
之后,构造函数应该被 polyfilled 并准备好使用。例如:
const translatedRegionNames = new Intl.DisplayNames(['en'], {type: 'region'});
...
const translatedCountryName = translatedRegionNames.of('US')