Javascript Android设备上需要React Native和Intl polyfill

Javascript Android设备上需要React Native和Intl polyfill,javascript,android,react-native,intl,react-intl,Javascript,Android,React Native,Intl,React Intl,我最近更新了我的Android Studio和许多组件/sdk,从那以后,React Intl抱怨Intl库丢失,尽管它以前工作得很好 我已经安装了intlpolyfill,并将其导入到主文件App.js的顶部。我还从react intl导入localeData,并添加它。然后,我在IntlProvider中呈现我的视图,指定locale,而不显示任何消息(我现在只使用FormattedNumber) 这是我的代码的简化版本: import 'intl'; import { IntlProvid

我最近更新了我的Android Studio和许多组件/sdk,从那以后,React Intl抱怨
Intl
库丢失,尽管它以前工作得很好

我已经安装了
intl
polyfill,并将其导入到主文件
App.js
的顶部。我还从
react intl
导入
localeData
,并添加它。然后,我在
IntlProvider
中呈现我的视图,指定
locale
,而不显示任何消息(我现在只使用
FormattedNumber

这是我的代码的简化版本:

import 'intl';
import { IntlProvider, FormattedNumber, addLocaleData } from 'react-intl';
import en from 'react-intl/locale-data/en';

addLocaleData(en);

[...]

render() {
    return (
        <IntlProvider locale="en">
            <Text>
                <FormattedNumber value={123} />
            </Text>
        </IntlProvider>
    )
}
导入“intl”;
从'react intl'导入{IntlProvider,FormattedNumber,addLocaleData};
从“react intl/locale data/en”导入en;
addLocaleData(en);
[...]
render(){
返回(
)
}
我得到以下错误:

[React Intl]格式化数字时出错。ReferenceError:没有区域设置数据 已为此对象提供

我不明白发生了什么事。有人遇到过同样的问题吗


感谢我没有从
react intl
导入区域设置数据,而是解决了从
intl
导入polyfill和区域设置数据的问题

npm install intl
安装
intl

npm install intl
在应用程序的最顶端添加以下内容:

import 'intl';
import 'intl/locale-data/jsonp/en';

请注意,现在只需执行
导入'intl'即可在顶部,仍然从
react intl
加载区域设置数据。使用以下版本:

"intl": "^1.2.5",
"react-intl": "^2.2.2",
修改“build.gradle” 在android上,您可以修改/android/app/build.gradle中的“build.gradle”文件。记住,它不是/android/app/gradle/build.gradle中的文件

然后,转到站点文件并搜索:

/** * The preferred build flavor of JavaScriptCore. * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+' /** *JavaScriptCore的首选构建风格。 * *例如,要使用国际变体,可以使用: *'def jscFlavor='org.webkit:android jsc intl:+'` * *国际变体包括ICU i18n库和必要的数据 *允许使用例如'Date.toLocalString'和'String.localeCompare'等 *在使用非en-US语言环境时给出正确的结果。注意 *这种变体每种体系结构比默认值大约6MB。 */ def jscFlavor='org.webkit:android jsc:+' 现在,修改最后一行,或者简单地注释它,复制并粘贴上面类似的一行。结果是:

/** * The preferred build flavor of JavaScriptCore. * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ //def jscFlavor = 'org.webkit:android-jsc:+' def jscFlavor = 'org.webkit:android-jsc-intl:+' /** *JavaScriptCore的首选构建风格。 * *例如,要使用国际变体,可以使用: *'def jscFlavor='org.webkit:android jsc intl:+'` * *国际变体包括ICU i18n库和必要的数据 *允许使用例如'Date.toLocalString'和'String.localeCompare'等 *在使用非en-US语言环境时给出正确的结果。注意 *这种变体每种体系结构比默认值大约6MB。 */ //def jscFlavor='org.webkit:android jsc:+' def jscFlavor='org.webkit:android jsc intl:+'
谢谢你救了我的命。你是怎么做addLocaleData部分的?别理它?或者从“int/locale data/jsonp/es”导入es?如果我们事先不知道语言环境怎么办?e、 g.我希望
Intl
根据电话语言行事。@kunanbi我放弃了这个解决方案。@CanPoyrazoğlu你找到解决办法了吗?这是相当恼人的,我们必须做这么多的工作来显示一个数量作为一个区域设置的函数。