See the question and my original answer on StackOverflow

One solution to this is to create this Namibian CultureInfo, so its fully recognized by all .NET layers. Here is a code that does it:

public static void RegisterNamibianCulture()
    // reference the sysglobl.dll assembly for this
    CultureAndRegionInfoBuilder namibianCulture = new CultureAndRegionInfoBuilder("en-NA", CultureAndRegionModifiers.None);

    // inherit from an existing culture
    namibianCulture.LoadDataFromCultureInfo(new CultureInfo("en-za"));
    namibianCulture.CultureEnglishName = "Namibia";
    namibianCulture.RegionEnglishName = "Namibia";
    namibianCulture.CultureNativeName = "Namibia"; // you may want to change this
    namibianCulture.RegionNativeName = "Namibia"; // you may want to change this

    // see, use user-defined codes
    namibianCulture.ThreeLetterISORegionName = "xna"; // I use x as 'extended' and 'na' as namibia
    namibianCulture.TwoLetterISORegionName = "xn";
    namibianCulture.ThreeLetterWindowsRegionName = namibianCulture.ThreeLetterISORegionName;

    // see
    namibianCulture.ISOCurrencySymbol = "nad";
    namibianCulture.CurrencyEnglishName = "Namibia Dollar";
    namibianCulture.CurrencyNativeName = "Namibia Dollar"; // you may want to change this

    // this is were you build something specific, like this symbol you need
    namibianCulture.NumberFormat.CurrencySymbol = "N$";

    // you'll need admin rights for this

public static void UnregisterNamibianCulture()

Once you have called the Register function once on a given machine (you will need to install this culture on end user machines), you can now use your initial WPF startup code, just change it like this:

System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NA");

And everything should work as expected. You can also use standard language tags and all that jazz, since en-NA is now recognized.