Greeklish text converter
The below class in C#, will convert Greek text to a Latin equivalent, that can be easily read by Greek people, yet
uses English letters.
/// <summary>
/// Converts Greek text to a latin equivalent
/// </summary>
public class Greeklish
{
public Greeklish()
{
}
public static string Greek2Roman(string input)
{
char[] charInput = Greeklish.filterPunctuation(input).ToCharArray();
string output = "";
for (int i = 0; i <= input.Length - 1; i++)
{
switch (charInput[i].ToString())
{
case "Α":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "ι":
output = output + "Ai";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "υ":
if (i + 2 <= input.Length - 1)
{
switch (charInput[i + 2].ToString())
{
case "β":
case "γ":
case "δ":
case "ζ":
case "λ":
case "μ":
case "ν":
case "ρ":
case "α":
case "ε":
case "η":
case "ι":
case "ο":
case "υ":
case "ω":
output = output + "Av";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "Af";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "Av";
i = i + 1;
}
break;
default:
output = output + "A";
break;
}
}
else
{
output = output + "A";
}
break;
case "α":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "ι":
output = output + "ai";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "υ":
if (i + 2 <= input.Length - 1)
{
switch (charInput[i + 2].ToString())
{
case "β":
case "γ":
case "δ":
case "ζ":
case "λ":
case "μ":
case "ν":
case "ρ":
case "α":
case "ε":
case "η":
case "ι":
case "ο":
case "υ":
case "ω":
output = output + "av";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "af";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "av";
i = i + 1;
}
break;
default:
output = output + "a";
break;
}
}
else
{
output = output + "a";
}
break;
case "Β":
output = output + "B";
break;
case "β":
output = output + "b";
break;
case "Γ":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "γ":
output = output + "Ng";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "κ":
output = output + "Gg";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "ξ":
output = output + "Nx";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "χ":
output = output + "Nch";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "G";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "G";
}
break;
case "γ":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "γ":
output = output + "ng";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "κ":
output = output + "gg";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "ξ":
output = output + "nx";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "χ":
output = output + "nch";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "g";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "g";
}
break;
case "Δ":
output = output + "D";
break;
case "δ":
output = output + "d";
break;
case "Ε":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "ι":
output = output + "Ei";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "υ":
if (i + 2 <= input.Length - 1)
{
switch (charInput[i + 2].ToString())
{
case "β":
case "γ":
case "δ":
case "ζ":
case "λ":
case "μ":
case "ν":
case "ρ":
case "α":
case "ε":
case "η":
case "ι":
case "ο":
case "υ":
case "ω":
output = output + "Ev";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "Ef";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "Ev";
i = i + 1;
}
break;
default:
output = output + "E";
break;
}
}
else
{
output = output + "E";
}
break;
case "ε":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "ι":
output = output + "ei";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
case "υ":
if (i + 2 <= input.Length - 1)
{
switch (charInput[i + 2].ToString())
{
case "β":
case "γ":
case "δ":
case "ζ":
case "λ":
case "μ":
case "ν":
case "ρ":
case "α":
case "ε":
case "η":
case "ι":
case "ο":
case "υ":
case "ω":
output = output + "ev";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "ef";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "ev";
i = i + 1;
}
break;
default:
output = output + "e";
break;
}
}
else
{
output = output + "e";
}
break;
case "Ζ":
output = output + "Z";
break;
case "ζ":
output = output + "z";
break;
case "Η":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "υ":
if (i + 2 <= input.Length - 1)
{
switch (charInput[i + 2].ToString())
{
case "β":
case "γ":
case "δ":
case "ζ":
case "λ":
case "μ":
case "ν":
case "ρ":
case "α":
case "ε":
case "η":
case "ι":
case "ο":
case "υ":
case "ω":
output = output + "Iv";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "If";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "Iv";
i = i + 1;
}
break;
default:
output = output + "I";
break;
}
}
else
{
output = output + "I";
}
break;
case "η":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "υ":
if (i + 2 <= input.Length - 1)
{
switch (charInput[i + 2].ToString())
{
case "β":
case "γ":
case "δ":
case "ζ":
case "λ":
case "μ":
case "ν":
case "ρ":
case "α":
case "ε":
case "η":
case "ι":
case "ο":
case "υ":
case "ω":
output = output + "iv";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
default:
output = output + "if";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
}
else
{
output = output + "iv";
i = i + 1;
}
break;
default:
output = output + "i";
break;
}
}
else
{
output = output + "i";
}
break;
case "Θ":
output = output + "Th";
break;
case "θ":
output = output + "th";
break;
case "Ι":
output = output + "I";
break;
case "ι":
output = output + "i";
break;
case "Κ":
output = output + "K";
break;
case "κ":
output = output + "k";
break;
case "Λ":
output = output + "L";
break;
case "λ":
output = output + "l";
break;
case "Μ":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "π":
if (i == 0 || charInput[i - 1].ToString() == " ")
{
output = output + "B";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
else
{
output = output + "Mp";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
default:
output = output + "M";
break;
}
}
else
{
output = output + "M";
}
break;
case "μ":
if (i + 1 <= input.Length - 1)
{
switch (charInput[i + 1].ToString())
{
case "π":
if (i == 0 || charInput[i - 1].ToString() == " ")
{
output = output + "b";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
else
{
output = output + "mp";
i = i + 1;
break; // TODO: might not be correct. Was : Exit Select
}
default:
output = output + "m";
break;
}
}
else
{
output = output + "m";
}
break;
case "Ν":
output = output + "N";
break;
case "ν":
output = output + "n";
break;
case "Ξ":
output = output + "X";
break;
case "ξ":
output = output + "x";
break;
case "Ο":
output = output + "O";
break;
case "ο":
output = output + "o";
break;
case "Π":
output = output + "P";
break;
case "π":
output = output + "p";
break;
case "Ρ":
output = output + "R";
break;
case "ρ":
output = output + "r";
break;
case "Σ":
output = output + "S";
break;
case "σ":
output = output + "s";
break;
case "ς":
output = output + "s";
break;
case "Τ":
output = output + "T";
break;
case "τ":
output = output + "t";
break;
case "Υ":
output = output + "Y";
break;
case "υ":
output = output + "y";
break;
case "Φ":
output = output + "F";
break;
case "φ":
output = output + "f";
break;
case "Χ":
output = output + "Ch";
break;
case "χ":
output = output + "ch";
break;
case "Ψ":
output = output + "Ps";
break;
case "ψ":
output = output + "ps";
break;
case "Ω":
output = output + "O";
break;
case "ω":
output = output + "o";
break;
default:
output = output + charInput[i].ToString();
break;
}
}
return output;
}
private static string filterPunctuation(string input)
{
char[] charInput = input.ToCharArray();
string output = "";
for (int i = 0; i <= input.Length - 1; i++)
{
switch (charInput[i].ToString())
{
case "Ά":
output = output + "Α";
break;
case "ά":
output = output + "α";
break;
case "Έ":
output = output + "Ε";
break;
case "έ":
output = output + "ε";
break;
case "Ή":
output = output + "Η";
break;
case "ή":
output = output + "η";
break;
case "Ί":
output = output + "Ι";
break;
case "ί":
output = output + "ι";
break;
case "Ύ":
output = output + "Υ";
break;
case "ύ":
output = output + "υ";
break;
case "Ό":
output = output + "Ο";
break;
case "ό":
output = output + "ο";
break;
case "Ώ":
output = output + "Ω";
break;
case "ώ":
output = output + "ω";
break;
default:
output = output + charInput[i].ToString();
break;
}
}
return output;
}
}