public static CultureInfo CreateSpecificCulture (string name)
{
if (name == null)
throw new ArgumentNullException ("name");
if (name.Length == 0)
return InvariantCulture;
var src_name = name;
name = name.ToLowerInvariant ();
CultureInfo ci = new CultureInfo ();
if (!ci.construct_internal_locale_from_name (name)) {
int idx = name.IndexOf ('-');
if (idx < 1 || !ci.construct_internal_locale_from_name (name.Substring (0, idx)))
throw CreateNotFoundException (src_name);
}
if (ci.IsNeutralCulture)
ci = CreateSpecificCultureFromNeutral (ci.Name);
return ci;
}