I think what you are missing is setting the Culture of the current Thread:
System.Threading.Thread.CurrentThread.CurrentCulture = my_culture;
Check out Felipe Vaz' blog entry "Localizable forms in C# or How to translate your C# application in the right way:" [
^].