使用 Moment JS 将日期本地化为其他语言(如阿拉伯语或印地语)时,显示数字的英文。

3
我想使用moment js本地化日期,但只显示英文数字而不是其他语言。
假设我有一段印地文(hi)的日期。
“नव. ३०, २०”
我想将其显示为
“नव. 30, 20”
我还希望这也适用于FromNow()、calendar()和humanize()等提供描述性日期的函数。
例如:
“कल दोपहर ११:१९ बजे”
应该显示为
“कल दोपहर 11:19 बजे”

找到本地化文件并将数字本地化更新为正常的,如果可以的话。 - Praveen Kumar Purushothaman
1
我认为你可以使用这里展示的解决方案:自定义Moment阿拉伯本地化中的数字值 - VincenzoC
@VincenzoC 是的,那正是我在寻找的,非常感谢你,如果你发布答案的话,我会很乐意接受它。这样可以帮助其他人。 - Abu Taha
很高兴其他答案对你有所帮助,我将其标记为重复问题,因为答案与链接的那个完全相同。 - VincenzoC
没问题,只是一个小的补充,在那个帖子中,楼主正在创建一种新的自定义语言,而在这里,我正在尝试使用现有的语言,所以代码几乎相似,但是使用了不同的函数moment.locale('hi', { preparse: function (string) {return string;},postformat: function (string) {return string;}}); - Abu Taha
显示剩余2条评论
1个回答

0
你可以定制它这样。加入了一些注释,但是你可以根据自己的需求来定制所有的文本内容。(将语言设置为英文以显示正常的数字)
moment.locale('en', {
    // e.g months: "January_febuary_march_april......split('_')
    months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
    monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
    monthsParseExact : true,
    weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
    weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
    weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
    weekdaysParseExact : true,
    longDateFormat : {
        LT : 'HH:mm',
        LTS : 'HH:mm:ss',
        L : 'DD/MM/YYYY',
        LL : 'D MMMM YYYY',
        LLL : 'D MMMM YYYY HH:mm',
        LLLL : 'dddd D MMMM YYYY HH:mm'
    },
    calendar : {
        sameDay : '[Aujourd’hui à] LT',
        nextDay : '[Demain à] LT',
        nextWeek : 'dddd [à] LT',
        lastDay : '[Hier à] LT',
        lastWeek : 'dddd [dernier à] LT',
        sameElse : 'L'
    },
//the text in [] are generated as it is
    relativeTime : {
        future : 'dans %s', //in %s seconds
        past : 'il y a %s', // %s seconds ago
        s : 'quelques secondes', //a second
        m : 'une minute', //a minute
        mm : '%d minutes', 
        h : 'une heure', //an hour
        hh : '%d heures',
        d : 'un jour', //a day
        dd : '%d jours', //%d days
        M : 'un mois', //a month
        MM : '%d mois', //%d months
        y : 'un an',
        yy : '%d ans'
    },
    dayOfMonthOrdinalParse : /\d{1,2}(er|e)/,
    ordinal : function (number) {
        return number + (number === 1 ? 'er' : 'e');
    },
    meridiemParse : /PD|MD/,
    isPM : function (input) {
        return input.charAt(0) === 'M';
    },
    // In case the meridiem units are not separated around 12, then implement
    // this function (look at locale/id.js for an example).
    // meridiemHour : function (hour, meridiem) {
    //     return /* 0-23 hour, given meridiem token and hour 1-12 */ ;
    // },
    meridiem : function (hours, minutes, isLower) {
        return hours < 12 ? 'PD' : 'MD';
    },
    week : {
        dow : 1, // Monday is the first day of the week.
        doy : 4  // Used to determine first week of the year.
    }
});

谢谢你的回答,但我还是搞不清楚在哪里可以用英文数字覆盖本地化数字。 - Abu Taha
将以下与编程相关的内容从英文翻译成中文。只返回翻译后的文本:你将其设置为en,数字将以en显示 - Someone Special
这可能适用于已知的1或2种语言,但在我的情况下,工作语言事先是未知的,所以为所有语言定制并不可行。 - Abu Taha
然而,大多数语言使用罗马数字。 - Someone Special

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接