This kind of globalization and localization is based on
satellite assemblies and
fallback. The basic idea is: you globalize the product starting with just one, base culture, using resources, make the UI fluid, so the change of the string lengths won't screw up the layout, take into account different date/time/currency formats, and so on. When your product is ready, you can add localizations by adding satellite assemblies each containing the same set of resources, but only resources, so the localization can be written by another person or a team, even if they have no access to original source code, except those resources.
The system automatically chooses requires localization based on the current thread culture, which you can dynamically switch. If some culture absent from satellites, the fallback mechanism automatically chooses the closest implemented culture.
For further detail, please see my past answers:
How to use a Single resx file for 3 languages[
^],
globalization in winforms[
^],
globalization/localization problem in winform .net[
^].
See also:
Globalization of Checkboxes[
^].
—SA