echarts统计图中世界国家汉化表及汉化方式
最近项目中需要用到echarts的世界地图,同时需要将世界地图中的国家名进行汉化,在网上找了很久没有找到特全的汉化方式,因此准备基于网上朋友整理的内容,扩充下汉化表。部分翻译内容来源自:https://blog.csdn.net/u012557538/article/details/78490267
本内容基于echarts2中echarts-all.js
。echarts-all.js
中的国家皆在下列json中。
{
"Afghanistan": "阿富汗",
"Angola": "安哥拉",
"Albania": "阿尔巴尼亚",
"United Arab Emirates": "阿联酋",
"Argentina": "阿根廷",
"Armenia": "亚美尼亚",
"French Southern and Antarctic Lands": "法属南半球和南极领地",
"Australia": "澳大利亚",
"Austria": "奥地利",
"Azerbaijan": "阿塞拜疆",
"Burundi": "布隆迪",
"Belgium": "比利时",
"Benin": "贝宁",
"Burkina Faso": "布基纳法索",
"Bangladesh": "孟加拉国",
"Bulgaria": "保加利亚",
"The Bahamas": "巴哈马",
"Bosnia and Herzegovina": "波黑",
"Belarus": "白俄罗斯",
"Belize": "伯利兹",
"Bermuda": "百慕大",
"Bolivia": "玻利维亚",
"Brazil": "巴西",
"Brunei": "文莱",
"Bhutan": "不丹",
"Botswana": "博茨瓦纳",
"Central African Republic": "中非共和国",
"Canada": "加拿大",
"Switzerland": "瑞士",
"Chile": "智利",
"China": "中国",
"Ivory Coast": "象牙海岸",
"Cameroon": "喀麦隆",
"Democratic Republic of the Congo": "刚果(金)",
"Republic of the Congo": "刚果(布)",
"Colombia": "哥伦比亚",
"Costa Rica": "哥斯达黎加",
"Cuba": "古巴",
"Northern Cyprus": "北塞浦路斯",
"Cyprus": "塞浦路斯",
"Czech Republic": "捷克",
"Germany": "德国",
"Djibouti": "吉布提",
"Denmark": "丹麦",
"Dominican Republic": "多米尼加共和国",
"Algeria": "阿尔及利亚",
"Ecuador": "厄瓜多尔",
"Egypt": "埃及",
"Eritrea": "厄立特里亚",
"Spain": "西班牙",
"Estonia": "爱沙尼亚",
"Ethiopia": "埃塞俄比亚",
"Finland": "芬兰",
"Fiji": "斐",
"Falkland Islands": "福克兰群岛",
"France": "法国",
"Gabon": "加蓬",
"United Kingdom": "英国",
"Georgia": "格鲁吉亚",
"Ghana": "加纳",
"Guinea": "几内亚",
"Gambia": "冈比亚",
"Guinea Bissau": "几内亚比绍",
"Equatorial Guinea": "赤道几内亚",
"Greece": "希腊",
"Greenland": "格陵兰",
"Guatemala": "危地马拉",
"French Guiana": "法属圭亚那",
"Guyana": "圭亚那",
"Honduras": "洪都拉斯",
"Croatia": "克罗地亚",
"Haiti": "海地",
"Hungary": "匈牙利",
"Indonesia": "印度尼西亚",
"India": "印度",
"Ireland": "爱尔兰",
"Iran": "伊朗",
"Iraq": "伊拉克",
"Iceland": "冰岛",
"Israel": "以色列",
"Italy": "意大利",
"Jamaica": "牙买加",
"Jordan": "约旦",
"Japan": "日本",
"Kazakhstan": "哈萨克斯坦",
"Kenya": "肯尼亚",
"Kyrgyzstan": "吉尔吉斯斯坦",
"Cambodia": "柬埔寨",
"South Korea": "韩国",
"Kosovo": "科索沃",
"Kuwait": "科威特",
"Laos": "老挝",
"Lebanon": "黎巴嫩",
"Liberia": "利比里亚",
"Libya": "利比亚",
"Sri Lanka": "斯里兰卡",
"Lesotho": "莱索托",
"Lithuania": "立陶宛",
"Luxembourg": "卢森堡",
"Latvia": "拉脱维亚",
"Morocco": "摩洛哥",
"Moldova": "摩尔多瓦",
"Madagascar": "马达加斯加",
"Mexico": "墨西哥",
"Macedonia": "马其顿",
"Mali": "马里",
"Myanmar": "缅甸",
"Montenegro": "黑山",
"Mongolia": "蒙古",
"Mozambique": "莫桑比克",
"Mauritania": "毛里塔尼亚",
"Malawi": "马拉维",
"Malaysia": "马来西亚",
"Namibia": "纳米比亚",
"New Caledonia": "新喀里多尼亚",
"Niger": "尼日尔",
"Nigeria": "尼日利亚",
"Nicaragua": "尼加拉瓜",
"Netherlands": "荷兰",
"Norway": "挪威",
"Nepal": "尼泊尔",
"New Zealand": "新西兰",
"Oman": "阿曼",
"Pakistan": "巴基斯坦",
"Panama": "巴拿马",
"Peru": "秘鲁",
"Philippines": "菲律宾",
"Papua New Guinea": "巴布亚新几内亚",
"Poland": "波兰",
"Puerto Rico": "波多黎各",
"North Korea": "朝鲜",
"Portugal": "葡萄牙",
"Paraguay": "巴拉圭",
"Qatar": "卡塔尔",
"Romania": "罗马尼亚",
"Russia": "俄罗斯",
"Rwanda": "卢旺达",
"Western Sahara": "西撒哈拉",
"Saudi Arabia": "沙特阿拉伯",
"Sudan": "苏丹",
"South Sudan": "南苏丹",
"Senegal": "塞内加尔",
"Solomon Islands": "所罗门群岛",
"Sierra Leone": "塞拉利昂",
"El Salvador": "萨尔瓦多",
"Somaliland": "索马里兰",
"Somalia": "索马里",
"Republic of Serbia": "塞尔维亚",
"Suriname": "苏里南",
"Slovakia": "斯洛伐克",
"Slovenia": "斯洛文尼亚",
"Sweden": "瑞典",
"Swaziland": "斯威士兰",
"Syria": "叙利亚",
"Chad": "乍得",
"Togo": "多哥",
"Thailand": "泰国",
"Tajikistan": "塔吉克斯坦",
"Turkmenistan": "土库曼斯坦",
"East Timor": "东帝汶",
"Trinidad and Tobago": "特里尼达和多巴哥",
"Tunisia": "突尼斯",
"Turkey": "土耳其",
"United Republic of Tanzania": "坦桑尼亚",
"Uganda": "乌干达",
"Ukraine": "乌克兰",
"Uruguay": "乌拉圭",
"United States of America": "美国",
"Uzbekistan": "乌兹别克斯坦",
"Venezuela": "委内瑞拉",
"Vietnam": "越南",
"Vanuatu": "瓦努阿图",
"West Bank": "西岸",
"Yemen": "也门",
"South Africa": "南非",
"Zambia": "赞比亚",
"Zimbabwe": "津巴布韦",
"Singapore Rep.": "新加坡",
"Dominican Rep.": "多米尼加",
"Palestine": "巴勒斯坦",
"Bahamas": "巴哈马",
"Timor-Leste": "东帝汶",
"Guinea-Bissau": "几内亚比绍",
"Côte d'Ivoire": "科特迪瓦",
"Siachen Glacier": "锡亚琴冰川",
"Br. Indian Ocean Ter.": "英属印度洋领土",
"Bosnia and Herz.": "波斯尼亚和黑塞哥维那",
"Central African Rep.": "中非",
"Dem. Rep. Congo": "刚果民主共和国",
"Congo": "刚果",
"N. Cyprus": "北塞浦路斯",
"Czech Rep.": "捷克",
"Eq. Guinea": "赤道几内亚",
"Korea": "韩国",
"Lao PDR": "老挝",
"Dem. Rep. Korea": "朝鲜",
"W. Sahara": "西撒哈拉",
"S. Sudan": "南苏丹",
"Solomon Is.": "所罗门群岛",
"Serbia": "塞尔维亚",
"Tanzania": "坦桑尼亚",
"United States": "美国"
}
使用效果及方式:
部分js
// https://blog.csdn.net/u012557538/article/details/78490267
var nameMap = {
// 上面那个json
};
for(let key in nameMap) {
nameMap[key.toLowerCase()] = nameMap[key];
}
然后在echarts中使用
tooltip: {
show: true,
label: {
show: true,
},
hideDelay: 3000,
alwaysShowContent: true,
trigger: 'item',
backgroundColor: 'rgba(0,0,0,0.0)',
textStyle: {
color: 'white',
align: 'center',
baseline: 'middle',
fontSize: '16px',
},
enterable: true,
formatter: function(params, ticket, callback) {
let res = '';
let param = params[1].toLowerCase();
// 返回汉化后的国家名
return nameMap[param.toLowerCase()] || param;
}
},
最后,再教大家一个小技巧:如何从echarts中提取所有国家名
就如本例中的echarts-all.js为例,首先在js中搜索“world_geo”,这个就是包含世界国家的内容,如图
后面的features: [{xxx}] 即为国家列表,我们需要单独将它复制出来,以phpstorm为例,数据定位到features后的“[”前面,按俩下 “ctrl + w”即可选中“[]”列表中的数据,如下图
然后复制一下,打开笔记本(notepad++),然后整理成如下代码
var c = [{......}]
var nameMap = {};
for(var i in c){
nameMap[c[i].properties.name]="";
}
console.log(JSON.stringify(nameMap));
然后随便打开一个网页,通过F12切换到console栏,将上述整理的代码复制进去,按下回车
喏,红框框里面的就是所有的国家名,剩下的就是汉化了。因为网上已经有朋友整理了一部分(https://blog.csdn.net/u012557538/article/details/78490267)。
所以我们可以直接在这个基础上完善一下。首先将上方红框中的内容复制,然后依照上方链接中的例子,编写以下代码
var newNameMap = {
"Afghanistan": "",
"Angola": "",
...
"Zimbabwe": ""
};
var nameMap = {
'Singapore Rep.':'新加坡',
'Dominican Rep.':'多米尼加',
...
'Zimbabwe':'津巴布韦'
};
$.extend(newNameMap, nameMap);
console.log(JSON.stringify(newNameMap))
按照上面那种方式,复制到console面板中执行,如图
这就是最全版的世界国家内容,剩下的就是找出其他未汉化的国家名,手动去汉化。
(为了方便观看,请先将json格式化一下)
我是在notepad++中操作的,如图,ctrl+f打开查找面板,选择正则方式查找,然后输入正则表达式后搜索出未被汉化的国家名,再去网上翻译一下即可。
PS:此方法不限于该文章所示的场景,其他任何一个需要从js中提取数据的需求,都可以使用该方法
最后打个广告,如果你觉得这篇文章对你有用,可以关注我的技术公众号:码一码,你的关注和转发是对我最大的支持,O(∩_∩)O
- 本文标签: JS 正则
- 本文链接: https://zhyd.me/article/116
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权