Не верь, не бойся, не проси - [entries|archive|friends|userinfo]
phantom

[ website | My Website ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Mar. 24th, 2008|07:54 am]
Previous Entry Add to Memories Tell A Friend Next Entry
LinkLeave a comment

Comments:
From:[info]phantom
Date:March 25th, 2008 - 11:32 am
(Link)
тэкс, попробуем выложить исходник

// ==UserScript==
// @name           untranslit kaledin
// @namespace      http://userscripts.org/users/48278
// @description    переводит утошгу каледина с молдавского на русский
// @include        http://lj.rossia.org/*
// ==/UserScript==

var links=document.getElementsByTagName('a');
for (var i = 0; i < links.length; ++i) {
	var change = "";
	if (links[i].innerHTML == "kaledin")
		change = "утошга каледин";
	else if (links[i].innerHTML == "triglau")
		change = "утошга триглав";
    if (change != "") {
	links[i].innerHTML = change;
	var node = links[i];
	while (node.id.substring(0, 5) != "ljcmt" && node.tagName != "BODY")
		node = node.parentNode;
	if (node) untranslitNode(node);
    }
}

function untranslitNode(node) {
	if (node.nodeName == "#text")
		node.nodeValue = untranslit(node.nodeValue)
	else
		for (var i = 0; i < node.childNodes.length; ++i)
			untranslitNode(node.childNodes[i]);
}

function untranslit(s) {
	var symbols = {
  'A': '\u0410',                       'a': '\u0430',
  'B': '\u0411',                       'b': '\u0431',
  'V': '\u0412',                       'v': '\u0432',
  'G': '\u0413',                       'g': '\u0433',
  'D': '\u0414',                       'd': '\u0434',
  'E': '\u0415',                       'e': '\u0435',
  'Yo': '\u0401',                      'yo': '\u0451',
  'Zz': '\u0416',                      'zh': '\u0436',
  'Z': '\u0417',                       'z': '\u0437',
  'I': '\u0418',                       'i': '\u0438',
  'J': '\u0419',                       'j': '\u0439',
  'K': '\u041A',                       'k': '\u043A',
  'L': '\u041B',                       'l': '\u043B',
  'M': '\u041C',                       'm': '\u043C',
  'N': '\u041D',                       'n': '\u043D',
  'O': '\u041E',                       'o': '\u043E',
  'P': '\u041F',                       'p': '\u043F',
  'R': '\u0420',                       'r': '\u0440',
  'S': '\u0421',                       's': '\u0441',
  'T': '\u0422',                       't': '\u0442',
  'U': '\u0423',                       'u': '\u0443',
  'F': '\u0424',                       'f': '\u0444',
  'X': '\u0425', 'H': '\u0425',        'x': '\u0445', 'h': '\u0445',
  'C': '\u0426', 'Ts': '\u0426',       'c': '\u0446', 'ts': '\u0446',
  'Ch': '\u0427',                      'ch': '\u0447',
  'Sh': '\u0428',                      'sh': '\u0448',
  'w': '\u0429',                       'w': '\u0449',
  '""': '\u042A',                      "''": '\u044A',
  'Y': '\u042B',                       'y': '\u044B',
//  '"': '\u042C',                       "'": '\u044C',
  'Je': '\u042D',                      'je': '\u044D',
  'Ju': '\u042E', 'Yu': '\u042E',      'ju': '\u044E', 'yu': '\u044E',
  'Ja': '\u042F', 'Ya': '\u042F',      'ja': '\u044F', 'ya': '\u044F',

  'Tz': '\u0426',       'tz': '\u0446',
  "'": '\u044C',
  'Eh': 'Э',                       'eh': 'э',
  'Kh': '\u0425',
  'kh': '\u0445',
  '?': ' кря?!',
	};
	var v = '';
	var i = 0;
	while (i < s.length) {
		var translated = false;
		var j = 2;
		while (j > 0 && !translated) {
			var letter = pick(s, i, j);
			var t = symbols[letter];
			if (t) {
				v += t;
				translated = true;
				i += j;
			}
			--j;
		}
		if (!translated) {
			v += s[i];
			++i;
		}
	}
	var s = "";
	while (s != v) {
		if (s == "") s = v;
		v = s;
		s = s.replace('бла ', 'кря ');
		s = s.replace(' бла', ' кря');
	}
	return s;
}

function pick(s, i, j) {
	var v = s[i];
	for (var k = 1; k < j; ++k)
		v += s[i + k];
	return v;
}
[User Picture]
From:[info]ketmar
Date:March 25th, 2008 - 11:38 am
(Link)
добавлю ещё свой вариант untranslit:
var trTableDif = {
  Y: { O: '\u0401', o: '\u0401', U: '\u042E', u: '\u042E', A: '\u042F', a: '\u042F' },
  y: { O: '\u0451', o: '\u0451', U: '\u044E', u: '\u044E', A: '\u044F', a: '\u044F' },
  J: { E: '\u042D', e: '\u042D', U: '\u042E', u: '\u042E', A: '\u042F', a: '\u042F' },
  j: { E: '\u044D', e: '\u044D', U: '\u044E', u: '\u044E', A: '\u044F', a: '\u044F' },
  Z: { H: '\u0416', h: '\u0416' },
  z: { H: '\u0436', h: '\u0436' },
  T: { S: '\u0426', s: '\u0426' },
  t: { S: '\u0446', s: '\u0446' },
  C: { H: '\u0427', h: '\u0427' },
  c: { H: '\u0447', h: '\u0447' },
  S: { H: '\u0428', h: '\u0428' },
  s: { H: '\u0448', h: '\u0448' },
  E: { H: '\u042D', h: '\u042D' },
  e: { H: '\u044D', h: '\u044D' },
  K: { H: '\u0425', h: '\u0425' },
  k: { H: '\u0445', h: '\u0445' },
  '"': { '"': '\u042A' },
  "'": { "'": '\u044A' }
};

var trTable = {
  A: '\u0410', a: '\u0430',
  B: '\u0411', b: '\u0431',
  V: '\u0412', v: '\u0432',
  G: '\u0413', g: '\u0433',
  D: '\u0414', d: '\u0434',
  E: '\u0415', e: '\u0435',
  Z: '\u0417', z: '\u0437',
  I: '\u0418', i: '\u0438',
  J: '\u0419', j: '\u0439',
  K: '\u041A', k: '\u043A',
  L: '\u041B', l: '\u043B',
  M: '\u041C', m: '\u043C',
  N: '\u041D', n: '\u043D',
  O: '\u041E', o: '\u043E',
  P: '\u041F', p: '\u043F',
  R: '\u0420', r: '\u0440',
  S: '\u0421', s: '\u0441',
  T: '\u0422', t: '\u0442',
  U: '\u0423', u: '\u0443',
  F: '\u0424', f: '\u0444',
  X: '\u0425', x: '\u0445',
  H: '\u0425', h: '\u0445',
  C: '\u0426', c: '\u0446',
  w: '\u0429', w: '\u0449',
  Y: '\u042B', y: '\u044B',
  "'": '\u044C',
  //'"': '\u044C',
};

function untranslit (s) {
  var res = "", len = s.length;
  for (var f = 0; f < len; f++) {
    var n = s.charAt(f);
    var rus = trTable[n], dif = trTableDif[n];
    if (dif) {
      var n1 = s.charAt(f+1);
      rus1 = dif[n1];
      if (rus1) { rus = rus1; f++; }
    }
    res += rus?rus:n;
  }
  return res;
}
[User Picture]
From:[info]ketmar
Date:March 25th, 2008 - 02:45 pm
(Link)
йопт! var rus1, естественно.
[User Picture]
From:[info]ppkk
Date:March 25th, 2008 - 02:29 pm
(Link)
Отлично выглядит, мне он не нужен (так как я уже сохранял его у себя и ковырялся), но просто ЛЖР позволяет выкладывать текст, а исходник — текст. Так что я сообщил тебе о такой возможности.