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

时间:2017-05-03 19:44:35

标签: javascript momentjs

我在地区有一个月份名称的数组(例如ianuare,februarie,martie,aprilie,mai,iunie,iulie ......)我想把它翻译成en-gb locale(1月,2月,3月......) )。这是我正在使用的代码片段:

    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

1 个答案:

答案 0 :(得分:2)

默认情况下,时间使用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有关设置区域设置的详细信息。

这里是你的小提琴的工作版本,我已经开始使用locale(key)之前添加了month(n)



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>
&#13;
&#13;
&#13;