| 翻訳は女性のようなものです。もし彼らが美しいなら、それは間違っています。本当なら、いです。 | ||||||||||
公益事業
|
ソースコード
インターネット上の音訳について多くのことが書かれていますが、Habrahabrはそれを見つけませんでした。
/* jshint -W100 */ /** * @name translit.js * @author XGuest <xguest@list.ru> * @link https://github.com/xguest/iso_9_js * @version 1.0.4 * @copyright GPL applies. * No warranties XGuest[28.03.2016/07:59:18] translit [ver.1.0.4] * #guid {E7088033-479F-47EF-A573-BBF3520F493C} * * @description * ISO 9:1995 7.79-2000 * * @param {String} str * @param {Number} typ ± () * + * - * system A = 1-; * system B = 2-;3-;4-;5-;6-; * @example * function example() { * var a, b = [ * [], * ["", " , !"], * ["", "'і і і , і !"], * ["", " , !"], * ["", "Ј ќ , ј ј!"], * ["", " , !"], * ["ї", "'ї ' , !"] * ], c, d; * for(a = 1; a < b.length - 1; a++) { * c = b[a][0]; // Language * d = b[a][1]; // Source * e = translit(d, a); // Forward * console.log( * "%s - %s\nSource : %s\nTranslit: %s\nReverse : %s\n", * c, // Language * translit(c, a), // Transliterated language * d, // Source * e, // Forward * translit(e, -1 * a) // Reverse * ); * } * }; **/ function translit(str, typ) { var func = (function(typ) { /** Function Expression * . * * FINISHED TESTED! * . * * . * 2 : * . * - ( ). * * @param {Number} typ * @return {Array} . **/ function prep (a) { var write = !a ? function(chr, row) {trantab[row] = chr;regarr.push(row);} : function(row, chr) {trantab[row] = chr;regarr.push(row);}; return function(col, row) { // RegExp var chr = col[abs] || col[0]; // if (chr) write(chr, row); // } } var abs = Math.abs(typ); // if (typ === abs) { // str = str.replace(/(i(?=.[^\s]+))/ig, '$1`'); // "i`" . . . return [prep(), // function(str) { // str - . return str.replace(/i``/ig, 'i`'). // "i`" . . . replace(/((c)z)(?=[ieyj])/ig, '$1'); // "cz" "c" }]; } else { // str = str.replace(/(c)(?=[ieyj])/ig, '$1z'); // "cz" return [prep(1),function(str) {return str;}];// nop - . } }(typ)); var iso9 = { // // - // 0 - // 1 - 4 - MK|MKD - // 2 - BY|BLR - 5 - RU|RUS - // 3 - BG|BGR - 6 - UA|UKR - /*----------0-,-------1-,---2-,---3-,---4-,----5-,---6-*/ '\u0449': [ '', '\u015D', '','sth', '', 'shh','shh'], // '' '\u044F': [ '', '\u00E2', 'ya', 'ya', '', 'ya', 'ya'], // '' '\u0454': [ '', '\u00EA', '', '', '', '', 'ye'], // 'є' '\u0463': [ '', '\u011B', '', 'ye', '', 'ye', ''], // '\u0456': [ '', '\u00EC', 'i', 'i`', '', 'i`', 'i'], // 'і' '\u0457': [ '', '\u00EF', '', '', '', '', 'yi'], // 'ї' '\u0451': [ '', '\u00EB', 'yo', '', '', 'yo', ''], // '' '\u044E': [ '', '\u00FB', 'yu', 'yu', '', 'yu', 'yu'], // '' '\u0436': [ 'zh','\u017E'], // '' '\u0447': [ 'ch','\u010D'], // '' '\u0448': [ 'sh', '\u0161', '', '', '', '', ''], // '' '\u0473': [ '','f\u0300', '', 'fh', '', 'fh', ''], // '\u045F': [ '','d\u0302', '', '', 'dh', '', ''], // 'џ' '\u0491': [ '','g\u0300', '', '', '', '', 'g`'], // 'ґ' '\u0453': [ '', '\u01F5', '', '', 'g`', '', ''], // 'ѓ' '\u0455': [ '', '\u1E91', '', '', 'z`', '', ''], // 'ѕ' '\u045C': [ '', '\u1E31', '', '', 'k`', '', ''], // 'ќ' '\u0459': [ '','l\u0302', '', '', 'l`', '', ''], // 'љ' '\u045A': [ '','n\u0302', '', '', 'n`', '', ''], // 'њ' '\u044D': [ '', '\u00E8', 'e`', '', '', 'e`', ''], // '' '\u044A': [ '', '\u02BA', '', 'a`', '', '``', ''], // '' '\u044B': [ '', 'y', 'y`', '', '', 'y`', ''], // '' '\u045E': [ '', '\u01D4', 'u`', '', '', '', ''], // 'ў' '\u046B': [ '', '\u01CE', '', 'o`', '', '', ''], // '\u0475': [ '', '\u1EF3', '', 'yh', '', 'yh', ''], // '\u0446': [ 'cz', 'c'], // '' '\u0430': [ 'a'], // '' '\u0431': [ 'b'], // '' '\u0432': [ 'v'], // '' '\u0433': [ 'g'], // '' '\u0434': [ 'd'], // '' '\u0435': [ 'e'], // '' '\u0437': [ 'z'], // '' '\u0438': [ '', 'i', '', 'i', 'i', 'i', 'y`'], // '' '\u0439': [ '', 'j', 'j', 'j', '', 'j', 'j'], // '' '\u043A': [ 'k'], // '' '\u043B': [ 'l'], // '' '\u043C': [ 'm'], // '' '\u043D': [ 'n'], // '' '\u043E': [ 'o'], // '' '\u043F': [ 'p'], // '' '\u0440': [ 'r'], // '' '\u0441': [ 's'], // '' '\u0442': [ 't'], // '' '\u0443': [ 'u'], // '' '\u0444': [ 'f'], // '' '\u0445': [ 'x', 'h'], // '' '\u044C': [ '', '\u02B9', '`', '`', '', '`', '`'], // '' '\u0458': [ '','j\u030C', '', '', 'j', '', ''], // 'ј' '\u2019': [ '\'','\u02BC'], // ''' '\u2116': [ '#'] // '№' /*----------0-,-------1-,---2-,---3-,---4-,----5-,---6-*/ }, regarr = [], trantab = {}; /* jshint -W030 */ // RegExp for (var row in iso9) {if (Object.hasOwnProperty.call(iso9, row)) {func[0](iso9[row], row);}} /* jshint +W030 */ return func[1]( // - ( ..) str.replace( // new RegExp(regarr.join('|'), 'gi'),// RegExp function(R) { // CallBack RegExp if (R.toLowerCase() === R) { // return trantab[R]; } else { return trantab[R.toLowerCase()].toUpperCase(); } })); } module.exports = translit;
JavaScriptのシステムAおよびBのISO 9:1995 7.79-2000標準に対応する、文字変換コードを書き直すことにしました。
ロシア語、ベラルーシ語、ウクライナ語、ブルガリア語、マケドニア語をサポートしています。
ロシア、アルメニア、アゼルバイジャン、ベラルーシ、カザフスタン、キルギスタン、タジキスタン、トルクメニスタン、ウズベキスタンで使用されています。
使用の印象:もちろん、コードを単純化できます。音声規則は十分ではありませんが、標準に従う必要があります。
コメント、コメント、提案を待っています。
PS
2015年2月21日-コードについてコメントしました。
2015年2月22日-パッケージの最初のバージョンを収集しました。ご協力いただきありがとうございます。
2015/02/23-変数の名前が変更されました。
05/18/2015-JSDocにより追加。