With firefox I think the reason why it works for you manually is because your language preferences got saved into your profile (default profile).
But when you run your test, WebDriver creates a dummy profile and spawns firefox using that profile. The dummy profile would only have the default settings of firefox and wouldnt have any customizations that you did to your browser.
To get Firefox to work, here is what you would need to do :
FirefoxProfile profile = new ProfilesIni().getProfile("default");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability(FirefoxDriver.PROFILE, profile);
FirefoxDriver driver = new FirefoxDriver(dc);
With IE, the reason why it works is both manually as well via automation is because IE doesnt work with profiles. All settings that you do to IE is saved somewhere globally (Registry perhaps ?)
I think the same is the case with Chrome as well (Similar to firefox)
Thanks & Regards
Krishnan Mahadevan
"All the desirable things in life are either illegal, expensive, fattening or in love with someone else!"