我在地区有一个月份名称的数组(例如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/
答案 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;