1

构造Intl.Displaynames()函数可以翻译 Javascript 中的语言、区域和脚本显示名称。

不幸的是,Safari 版本不支持此功能 < 14.1.(请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames#browser_compatibility)。

如何在较旧的 Safari 版本中进行这项工作?

4

1 回答 1

1

我们可以使用 polyfills(参见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"

之后,构造函数应该被填充并准备好使用。例如:

const translatedRegionNames = new Intl.DisplayNames(['en'], {type: 'region'});
...
const translatedCountryName = translatedRegionNames.of('US')
于 2021-09-28T07:55:35.337 回答