I have changed the Regional Settings
in my computer to Russian and have observed that VS 2010 delivers the expected performance for all the situations (SilverLight, ASP, winforms). Note that I have done my tests with Chrome (same version than yours) and Windows 7. I don't know why happens the error you report.
What you can do is making sure that your application will always output Russian characters, independently upon the exact configuration in the target machine. I found a quite interesting post on this front.; the option I like the most is the first one: relying on a conversion dictionary. Applied to your case, it would be something like this:
Dictionary declared globally:
Dictionary<string, string> enToRus;
Function called at Form Load
populating the aforementioned dictionary:
private void populateDict()
{
enToRus = new Dictionary<string, string>();
enToRus.Add("P", "П");
enToRus.Add("e", "e");
enToRus.Add("t", "т");
enToRus.Add("r", "р");
//etc.
}
Method (on textBox1
TextChanged Event
) dealing with the character replacement in case of being applicable.
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
textBox1.Select(textBox1.Text.Length - 1, 1);
if (textBox1.SelectedText.Trim().Length > 0)
{
if (!enToRus.ContainsValue(textBox1.SelectedText) && enToRus.ContainsKey(textBox1.SelectedText))
{
textBox1.SelectedText = enToRus[textBox1.SelectedText];
}
}
textBox1.Select(textBox1.Text.Length, 1);
}
Bear in mind that it comes from a pretty simplistic approach (checks whether the given character is not listed within the Russian ones before performing the change) which might drive to not so accurate results. I don't have any Russian knowledge (neither understand the exact conditions under which the problem you refer appear) and thus cannot be of further help on this front; but I guess that you will not find any problem to improve the accuracy of this pre-analysis (deciding when a character should be replaced).