// System.Globalization.CultureInfo // // Miguel de Icaza (miguel@ximian.com) // // (C) Ximian, Inc. 2001 (http://www.ximian.com) namespace System.Globalization { public class CultureInfo { static CultureInfo invariant_culture_info; bool is_read_only; int lcid; bool use_user_override; NumberFormatInfo number_format; // // Returns the Invariant Culture Information ("iv") // static public CultureInfo InvariantCulture { get { if (invariant_culture_info != null) return invariant_culture_info; invariant_culture_info = new CultureInfo (0x07f, false); invariant_culture_info.is_read_only = true; return invariant_culture_info; } } // // Creates a CultureInfo for a specific ID // public static CultureInfo CreateSpecificCulture (string name) { switch (name){ case "iv": return InvariantCulture; default: throw new ArgumentException ("CreateSpecificCultureName"); } } public virtual int LCID { get { return lcid; } } // // Gets the string-encoded name of the culture // public virtual string Name { get { switch (lcid){ case 0x007f: return "iv"; } throw new Exception ("Miss constructed object for LCID: " + lcid); } } // // Returns whether the current culture is neutral (neutral cultures // only specify a language, not a country. // public virtual bool IsNeutralCulture { get { return (lcid & 0xff00) == 0; } } // // Returns the NumberFormat for the current lcid // public virtual NumberFormatInfo NumberFormat { get { if (number_format == null){ lock (this){ if (number_format == null) number_format = new NumberFormatInfo (lcid); } } return number_format; } set { if (is_read_only) return; if (value == null) throw new ArgumentNullException ("NumberFormat"); number_format = value; } } public CultureInfo (int code, bool use_user_override) { switch (lcid){ case 0x007f: // iv Invariant case 0x0036: // af Afrikaans case 0x0436: // af-ZA Afrikaans - South Africa case 0x001c: // sq Albanian case 0x041c: // sq-AL Albanian - Albania case 0x0001: // ar Arabic case 0x1401: // ar-DZ Arabic - Algeria case 0x3c01: // ar-BH Arabic - Barhain case 0x0c01: // ar-EG Arabic - Egypt case 0x0801: // ar-IQ Arabic - Iraq case 0x2c01: // ar-JO Arabic - Jordan case 0x3401: // ar-KQ Arabic - Kuwait case 0x3001: // ar-LB Arabic - Lebanon case 0x1001: // ar-LY Arabic - Libya case 0x1801: // ar-MA Arabic - Morocco case 0x2001: // ar-OM Arabic - Oman case 0x4001: // ar-QA Arabic - Qatar case 0x0401: // ar-SA Arabic - Saudi Arabia case 0x2801: // ar-SY Arabic - Syria case 0x1c01: // ar-TN Arabic - Tunisia case 0x3801: // ar-AE Arabic - United Arab Emirates case 0x2401: // ar-YE Arabic - Yemen lcid = code; this.use_user_override = use_user_override; break; default: throw new ArgumentException ("CultureInfoCode"); } } } }