如何将Serbian Cyrilic alphabet添加到我的HTML中,以使我的浏览器识别它?
例如,我需要将“Povrce”变成“Поврће”。
我只需要一个代码,所以当我输入“Поврће”或“Povrće”时,浏览器就可以显示它。
答案 0 :(得分:2)
你的意思是transliterating拉丁语塞尔维亚语西里尔语(反之亦然)。这没有问题,因为音译是一次一个字符的可逆转换(而转录是语音的)。只需使用alphabet设置“关联”对象,然后相应地设置map()
。这是一些概念证明:
var latinString = 'Povrce';
var latinToSerbian = { "P":"П", "o":"о", "v":"в", "r":"р", "c":"ћ", "e":"е" /* ... */ };
var serbianString = latinString.split('').map(function(character){
return latinToSerbian[character];
}).join('');
console.log( latinString + ' = ' + serbianString ); // Povrce = Поврће
对于HTML,当然,总会有实体来诉诸。看一下Cyrillic Unicode block,您可以轻松地将字符转换为十进制或十六进制代码点:
element.innerHTML = 'Поврће';
element.onclick = function(){ alert('\u041F\u043E\u0432\u0440\u045B\u0435'); };
如果您想在网站上打字时进行即时音译,请使用charCodeAt(),<input>
element作为输入的文字,其中包含以下内容:
var latinToCyrillic = { "80": 1055 /* entire alphabet */ };
var cyrillicToLatin = { "1115" : 263 /* entire alphabet */ };
var toCyrillic = function(character){
return String.fromCharCode(latinToCyrillic[character.charCodeAt(0)]);
};
var toLatin = function(character){
return String.fromCharCode(cyrillicToLatin[character.charCodeAt(0)]);
};
console.log(
toCyrillic('P'), // === "П"
toLatin('ћ') // === "ć"
);
答案 1 :(得分:0)
我做了这个解决方案,有点简单,但也许可以帮助你:
var pp='VOĆE POVRĆE DINJA';
var ss=["NJ","V","O","Ć","E","P","R","D","I","A"];
var cyr=["Њ","В","О","Ћ","Е","П","Р","Д","И","А"];
for(var i=0;i<ss.length;i++) {
var tt=cyr[i];
pp=pp.replace(new RegExp(ss[i], "g"),tt);
}
ss
和cyr
中的字符位置非常重要。因此,首先是lj
和nj
等字符。
更新 使用文本框,失去焦点后,短语将被转换。当然,你必须将所有字符放在数组中。
function chChar(ele) {
var pp=ele.value;
var ss=["NJ","V","O","Ć","E","P","R","D","I","A"];
var cyr=["Њ","В","О","Ћ","Е","П","Р","Д","И","А"];
for(var i=0;i<ss.length;i++) {
var tt=cyr[i];
pp=pp.replace(new RegExp(ss[i], "gi"),tt);
}
document.getElementById('cyr').innerHTML=pp;
}
&#13;
<input type="text" onblur="chChar(this);" /><br>
<div id="cyr"></div>
&#13;
答案 2 :(得分:0)
wikipedia list中完整的语言音译映射,包括大写和小写,只是没有其他人列出它。根据音译方向,翻转映射(当前为西里尔字母->拉丁字母)。
const langmap = {
"А": "A",
"Б": "B",
"В": "V",
"Г": "G",
"Д": "D",
"Ђ": "Đ",
"Е": "E",
"Ж": "Ž",
"З": "Z",
"И": "I",
"Ј": "J",
"К": "K",
"Л": "L",
"Љ": "Lj",
"М": "M",
"Н": "N",
"Њ": "Nj",
"О": "O",
"П": "P",
"Р": "R",
"С": "S",
"Т": "T",
"Ћ": "Ć",
"У": "U",
"Ф": "F",
"Х": "H",
"Ц": "C",
"Ч": "Č",
"Џ": "Dž",
"Ш": "Š",
"а": "a",
"б": "b",
"в": "v",
"г": "g",
"д": "d",
"ђ": "đ",
"е": "e",
"ж": "ž",
"з": "z",
"и": "i",
"ј": "j",
"к": "k",
"л": "l",
"љ": "lj",
"м": "m",
"н": "n",
"њ": "nj",
"о": "o",
"п": "p",
"р": "r",
"с": "s",
"т": "t",
"ћ": "ć",
"у": "u",
"ф": "f",
"х": "h",
"ц": "c",
"ч": "č",
"џ": "dž",
"ш": "š",
}
function remapLang (str) {
return str.replace(/[^\u0000-\u007E]/g, function(a){
return langmap[a] || a;
});
}
然后进行眼球测试:
var tests = [
"First name: ГЕОРГИ, Last name: КОСТАДИНОВ.",
// --> First name: GEORGI, Last name: KOSTADINOV.
"First name: Димитър, Last name: Стоев."
// --> First name: Dimitъr, Last name: Stoev
];
tests.map(remapLang).forEach(console.log);
我会注意到上述测试是真实的示例,因此Wiki似乎缺少与“不赞成使用的”(?)“硬符号”相同的词,我想人们仍然会使用? YMMV ...