React Native moment.locale不起作用

时间:2017-07-23 11:38:54

标签: react-native locale momentjs

我正在使用React Native版本0.45.1和版本2.18.1。

我正在尝试根据设备本地更改日期,但我总是在'en-Us'区域设置中获取日期。 我无法导入所有语言环境,就像我在某些解决方案中看到的那样,因为我事先并不知道设备语言环境。 (例如:https://github.com/moment/moment/issues/2962

还有其他选择吗?

2 个答案:

答案 0 :(得分:17)

  

我无法导入所有语言环境,就像我在某些解决方案中看到的那样,因为我事先并不知道设备语言环境。

实际上,你可以import all of the locales这样的时间homepage上就提到了moment-with-locales

import moment from 'moment/min/moment-with-locales'
// Or if you are using require instead:
var moment = require('moment/min/moment-with-locales')

然后,您应该能够使用您喜欢的任何模块/方法获取您的设备区域设置(在我的示例中,我将使用Expo)并将当前区域设置更改为它。例如:

var deviceLocale = await Expo.Util.getCurrentLocaleAsync()
moment.locale(deviceLocale)

我不会说导入所有内容是处理此问题的最佳方法,因为moment-with-locales大于moment,但它会完成您希望它完成的任务。你也可以选择导入你支持的语言环境,就像我链接到的Github评论中提到的那样。

答案 1 :(得分:2)

我不是通过语言环境导入语言环境,而是使用此解决方案来全局设置语言环境:

import { getDeviceLocale } from "react-native-device-info";
import moment from "moment";
import "moment/min/locales";

const deviceLocale = getDeviceLocale();

moment.locale(deviceLocale); //set your locale (eg: fr)
moment(1316116057189).fromNow(); // il y a 7 ans

将此分享给需要的人