title: Best way to represent Gender in a class library used in multilingual applications
body: <p>I'm creating class library with some commonly used classes like persons, addresses etc. This library will be used in an multilingual application, and I am looking for the most convenient way to represent a persons gender.  </p>
  
  <p>Ideally I would like to be able to code like this:  </p>
  
  <pre><code>Person person = new Person { Gender = Genders.Male, 
                               FirstName = "Nice", 
                               LastName = "Dude" }
  
  if (person.Gender == Genders.Male)
    Console.WriteLine("person is Male");
  
  Console.WriteLine(person.Gender); //Should output: Male
  
  Console.WriteLine(person.Gender.ToString("da-DK")); 
  //Should output the name of the gender in the language provided
  
  List&lt;Gender&gt; genders = Genders.GetAll();
  foreach(Gender gender in genders)
  {
    Console.WriteLine(gender.ToString());
    Console.WriteLine(gender.ToString("da-DK"));
  }
  </code></pre>
  
  <p>What would you do? An enumeration and a specialized Gender class? But what about the localization then?</p>
  
  <hr>
  
  <p>Edit: I'd like to point out that this question is at least as much about how to code some classes that enables writing code as above, I don't have a Gender class or gender enumeration, I'm trying to figure out how to write code that would enable the above code. What would the Genders class look like? Would you use an enum for the Genders? </p>
  
  <p>Regards<br>
  Jesper Hauge</p>