gpt4 book ai didi

javascript - Moment.js - 将本地月份名称翻译成 en-gb

转载 作者:行者123 更新时间:2023-11-30 15:20:43 25 4
gpt4 key购买 nike

我有一个在语言环境中包含月份名称的数组(例如 ianuare、februarie、martie、aprilie、mai、iunie、iulie...),我想将它翻译成 en-gb 语言环境(January、February、March .. .).这是我正在使用的代码片段:

    let months = [...momentLocaleObject.months(), ...momentLocaleObject.monthsShort()]
months.map((n) => {
dateMap.get(RULE_ENTITIES.MONTHS).set(n, moment().month(n).locale('en-gb').format('MMMM'));
});

问题是它不能正常工作,有些月份翻译不正确(请看附图)。我可以请你帮忙吗?

编辑:JSFiddle 在这里:https://jsfiddle.net/ef9bmng7/

enter image description here

最佳答案

Moment 默认使用 en 语言环境。

在您的代码中,n 是给定语言环境中月份的名称,您必须正确设置语言环境才能生成 month()工作。

moment().month('ianuarie')

如果当前语言环境是 en 则无效,而这会起作用:

// Setting locale locally
moment().locale('ro').month('ianuarie')
// Setting locale globally
moment.locale('ro');
moment().month('ianuarie');

参见 here有关设置语言环境的更多详细信息。

如前所述,这里是你的 fiddle 的工作版本,我刚刚在使用 month(n) 之前添加了 locale(key):

const countriesMap = new Map();

const roMap = new Map();
const roMapSpecials = new Map();
const roMapDate = new Map();
const roMapWeekdays = new Map();
const roMapMonths = new Map();

countriesMap.set('ro', roMap);

//roMap.set('Specials', roMapSpecials);
//roMapDate.set('Weekdays', roMapWeekdays);
roMapDate.set('Months', roMapMonths);
roMap.set('Date', roMapDate);

for (let pair of countriesMap) {
let [key, value] = pair;
let momentLocaleObject = moment.localeData(key);
let dateMap = value.get('Date');

let months = [...momentLocaleObject.months(), ...momentLocaleObject.monthsShort()]
months.map((n) => {
dateMap.get('Months').set(n, moment().locale(key).month(n).locale('en-gb').format('MMMM'));
});
}

console.log(countriesMap.get('ro').get('Date').get('Months'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>

关于javascript - Moment.js - 将本地月份名称翻译成 en-gb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com