usar teclado ruso rusas pronunciacion pegar manuscrito letras español descargar copiar como cirilico alfabeto abecedario c# .net transliteration

c# - teclado - pronunciacion alfabeto ruso



Cómo transliterar el texto cirílico al latín (9)

Tengo un método que convierte cualquier texto latino (por ejemplo, inglés, francés, alemán, polaco) en su forma de babosa,

por ejemplo, Alpha Bravo Charlie => alpha-bravo-charlie

Pero no puede funcionar con texto cirílico (por ejemplo, ruso), por lo que lo que quiero hacer es transliterar el texto cirílico a caracteres latinos, y luego refinarlo.

¿Alguien tiene alguna manera de hacer esa transliteración? Ya sea por fuente real o una biblioteca.

Estoy codificando en C #, por lo que una biblioteca .NET funcionará. Alternativamente, si no tiene código C #, estoy seguro de que podría convertirlo.



Aquí hay un gran article que describe cómo hacer un equivalente en C # de this JavaScript.

string result = DisplayInEnglish("Олъга Виктровна Василенко");


Microsoft tiene una herramienta de transliteración que incluye una DLL a la que podría conectarse (necesitaría verificar las restricciones de licencia si no va a usarla personalmente). Puedes leer más sobre esto en la publicación del blog de Dejan Vesić


Puede usar .NET open source dll library UnidecodeSharpFork para transliterar el cirílico y muchos más idiomas al latín.

Ejemplo de uso:

Assert.AreEqual("Rabota s kirillitsey", "Работа с кириллицей".Unidecode()); Assert.AreEqual("CZSczs", "ČŽŠčžš".Unidecode()); Assert.AreEqual("Hello, World!", "Hello, World!".Unidecode());

Pruebas cirílicas:

/// <summary> /// According to http://en.wikipedia.org/wiki/Romanization_of_Russian BGN/PCGN. /// http://en.wikipedia.org/wiki/BGN/PCGN_romanization_of_Russian /// With converting "ё" to "yo". /// </summary> [TestMethod] public void RussianAlphabetTest() { string russianAlphabetLowercase = "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я"; string russianAlphabetUppercase = "А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я"; string expectedLowercase = "a b v g d e yo zh z i y k l m n o p r s t u f kh ts ch sh shch /" y '' e yu ya"; string expectedUppercase = "A B V G D E Yo Zh Z I Y K L M N O P R S T U F Kh Ts Ch Sh Shch /" Y '' E Yu Ya"; Assert.AreEqual(expectedLowercase, russianAlphabetLowercase.Unidecode()); Assert.AreEqual(expectedUppercase, russianAlphabetUppercase.Unidecode()); }

Sencillo, rápido y potente. Y es fácil de ampliar / modificar la tabla de transliteración si lo desea.


Puede usar mi biblioteca para la transliteración: https://github.com/nick-buhro/Translit
También está disponible en NuGet .

Ejemplo:

var latin = Transliteration.CyrillicToLatin( "Предками данная мудрость народная!", Language.Russian); Console.WriteLine(latin); // Output: Predkami dannaya mudrost` narodnaya!


Revisa este código:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Transliter { public partial class Form1 : Form { Dictionary<string, string> words = new Dictionary<string, string>(); public Form1() { InitializeComponent(); words.Add("а", "a"); words.Add("б", "b"); words.Add("в", "v"); words.Add("г", "g"); words.Add("д", "d"); words.Add("е", "e"); words.Add("ё", "yo"); words.Add("ж", "zh"); words.Add("з", "z"); words.Add("и", "i"); words.Add("й", "j"); words.Add("к", "k"); words.Add("л", "l"); words.Add("м", "m"); words.Add("н", "n"); words.Add("о", "o"); words.Add("п", "p"); words.Add("р", "r"); words.Add("с", "s"); words.Add("т", "t"); words.Add("у", "u"); words.Add("ф", "f"); words.Add("х", "h"); words.Add("ц", "c"); words.Add("ч", "ch"); words.Add("ш", "sh"); words.Add("щ", "sch"); words.Add("ъ", "j"); words.Add("ы", "i"); words.Add("ь", "j"); words.Add("э", "e"); words.Add("ю", "yu"); words.Add("я", "ya"); words.Add("А", "A"); words.Add("Б", "B"); words.Add("В", "V"); words.Add("Г", "G"); words.Add("Д", "D"); words.Add("Е", "E"); words.Add("Ё", "Yo"); words.Add("Ж", "Zh"); words.Add("З", "Z"); words.Add("И", "I"); words.Add("Й", "J"); words.Add("К", "K"); words.Add("Л", "L"); words.Add("М", "M"); words.Add("Н", "N"); words.Add("О", "O"); words.Add("П", "P"); words.Add("Р", "R"); words.Add("С", "S"); words.Add("Т", "T"); words.Add("У", "U"); words.Add("Ф", "F"); words.Add("Х", "H"); words.Add("Ц", "C"); words.Add("Ч", "Ch"); words.Add("Ш", "Sh"); words.Add("Щ", "Sch"); words.Add("Ъ", "J"); words.Add("Ы", "I"); words.Add("Ь", "J"); words.Add("Э", "E"); words.Add("Ю", "Yu"); words.Add("Я", "Ya"); } private void button1_Click(object sender, EventArgs e) { string source = textBox1.Text; foreach (KeyValuePair<string, string> pair in words) { source = source.Replace(pair.Key, pair.Value); } textBox2.Text = source; } } }

criollo al latín

text.Replace(pair.Key, pair.Value);

latín a cryllic

source.Replace(pair.Value,pair.Key);


Use este método Solo pase su palabra cirílica que contiene la cadena y este método devuelve la cadena del inglés latino correspondiente a la cadena cirílica.

public static string GetLatinCodeFromCyrillic(string str) { str = str.Replace("б", "b"); str = str.Replace("Б", "B"); str = str.Replace("в", "v"); str = str.Replace("В", "V"); str = str.Replace("г", "h"); str = str.Replace("Г", "H"); str = str.Replace("ґ", "g"); str = str.Replace("Ґ", "G"); str = str.Replace("д", "d"); str = str.Replace("Д", "D"); str = str.Replace("є", "ye"); str = str.Replace("Э", "Ye"); str = str.Replace("ж", "zh"); str = str.Replace("Ж", "Zh"); str = str.Replace("з", "z"); str = str.Replace("З", "Z"); str = str.Replace("и", "y"); str = str.Replace("И", "Y"); str = str.Replace("ї", "yi"); str = str.Replace("Ї", "YI"); str = str.Replace("й", "j"); str = str.Replace("Й", "J"); str = str.Replace("к", "k"); str = str.Replace("К", "K"); str = str.Replace("л", "l"); str = str.Replace("Л", "L"); str = str.Replace("м", "m"); str = str.Replace("М", "M"); str = str.Replace("н", "n"); str = str.Replace("Н", "N"); str = str.Replace("п", "p"); str = str.Replace("П", "P"); str = str.Replace("р", "r"); str = str.Replace("Р", "R"); str = str.Replace("с", "s"); str = str.Replace("С", "S"); str = str.Replace("ч", "ch"); str = str.Replace("Ч", "CH"); str = str.Replace("ш", "sh"); str = str.Replace("Щ", "SHH"); str = str.Replace("ю", "yu"); str = str.Replace("Ю", "YU"); str = str.Replace("Я", "YA"); str = str.Replace("я", "ya"); str = str.Replace(''ь'', ''"''); str = str.Replace("Ь", ""); str = str.Replace(''т'', ''t''); str = str.Replace("Т", "T"); str = str.Replace(''ц'', ''c''); str = str.Replace("Ц", "C"); str = str.Replace(''о'', ''o''); str = str.Replace("О", "O"); str = str.Replace(''е'', ''e''); str = str.Replace("Е", "E"); str = str.Replace(''а'', ''a''); str = str.Replace("А", "A"); str = str.Replace(''ф'', ''f''); str = str.Replace("Ф", "F"); str = str.Replace(''і'', ''i''); str = str.Replace("І", "I"); str = str.Replace(''У'', ''U''); str = str.Replace("у", "u"); str = str.Replace(''х'', ''x''); str = str.Replace("Х", "X"); return str; }



public static string Translit(string str) { string[] lat_up = {"A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "Y", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "Kh", "Ts", "Ch", "Sh", "Shch", "/"", "Y", "''", "E", "Yu", "Ya"}; string[] lat_low = {"a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "y", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "kh", "ts", "ch", "sh", "shch", "/"", "y", "''", "e", "yu", "ya"}; string[] rus_up = {"А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я"}; string[] rus_low = { "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я"}; for (int i = 0; i <= 32; i++) { str = str.Replace(rus_up[i],lat_up[i]); str = str.Replace(rus_low[i],lat_low[i]); } return str; }