Everything is awesome in this method: the name, going to upper and lower with no sense at all, replacing stuff which cannot be there after previous replace. This is a really robust when you want to add additional language to your app:)
[code]
public static string Umlaut2Common(string str)
{
//Poland
str = str.ToUpper().Replace("Ą", "A");
str = str.ToLower().Replace("ą", "a");
str = str.ToUpper().Replace("Ę", "E");
str = str.ToLower().Replace("ę", "e");
str = str.ToUpper().Replace("Ć", "C");
str = str.ToLower().Replace("ć", "c");
str = str.ToUpper().Replace("Ł", "L");
str = str.ToLower().Replace("ł", "l");
str = str.ToUpper().Replace("Ń", "N");
str = str.ToLower().Replace("ń", "n");
str = str.ToUpper().Replace("Ó", "O");
str = str.ToLower().Replace("ó", "o");
str = str.ToUpper().Replace("Ś", "S");
str = str.ToLower().Replace("ś", "s");
str = str.ToUpper().Replace("Ź", "Z");
str = str.ToLower().Replace("ż", "z");
str = str.ToUpper().Replace("Ż", "Z");
str = str.ToLower().Replace("ż", "z");
// Czech
str = str.ToLower().Replace("ě", "e");
str = str.ToLower().Replace("é", "e");
str = str.ToLower().Replace("š", "s");
str = str.ToLower().Replace("č", "c");
str = str.ToLower().Replace("ř", "r");
str = str.ToLower().Replace("ž", "z");
str = str.ToLower().Replace("ý", "y");
str = str.ToLower().Replace("á", "a");
str = str.ToLower().Replace("í", "i");
str = str.ToLower().Replace("ů", "u");
str = str.ToLower().Replace("ú", "u");
return str;
}[/code]