There is a build in way in .Net using resx files.
You can find the short introduction here.
More on Programmers stackexchange
MSDN is quite extensive with it's documentation about this topic and it is a good read. MSDN
There are a lot of Tools out there helping with the translation based on .Net localization but you can also do it in VS directly.
- Maybe ResXManager is of your taste
The .Net applications able to change translations on the fly usually use custom made internationalization e.g. loading text files and refreshing the GUI.
If you want to do something like that on your own be aware that you also have to resize controls so that the text fits.
For your problem wiht #count text text and text text #count you can use string.Format like.
- Add a resx file to your project like Localized.resx
- Add a string property "CountText" with value {0} text text.
- Add a second resx Localized.en.resx
- Add string property "CountText" with value text text {0}. to Localized.en.resx
- Where you write your progress to the GUI use string.Format(Localized.CountText, myCount);
- Switch the program language as shown in the first link.
- .Net automatically loads the corresponding resource for a language.
To learn about all the possibilities especially translating with VS you really should go through the MSDN library articles. Translation can get cumbersome if you miss something.