Javascript Android设备上需要React Native和Intl polyfill
我最近更新了我的Android Studio和许多组件/sdk,从那以后,React Intl抱怨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
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你找到解决办法了吗?这是相当恼人的,我们必须做这么多的工作来显示一个数量作为一个区域设置的函数。