Consider looking at CultureInfo's constructor that takes a string for examples (e.g. "en-us")
Provides information about a specific
culture (called a "locale" for
unmanaged code development). The
information includes the names for the
culture, the writing system, the
calendar used, and formatting for
dates and sort strings.
It's fairly specific to what's actually out there being used in the real world (e.g. the country/language pairs make sense). You can also create your own cultures.
You specified that the language might not be the one spoken in the country. Could you clarify what exactly you'll use it for? Without further information, it seems like you're trying to define something similar to a CultureInfo.
Alternatively, you could also define a simple object that just had the two properties (Country and Language) where Country is an ISO 3166-2 string and Language is an ISO 639-1 string as Edward Loper suggests below.
You could store a list of the ISO codes in an XML file and parse them using traditional techniques. I suggested CultureInfo because you specified that you were looking for something already in the BCL.
Using enums is, in general, discouraged by the Framework Design Guidelines for open sets:
DO NOT use an enum for open sets (such
as the operating system version, names
of your friends, etc.).
You could take a hybrid approach where you define two static class that has a bunch of static readonly strings as in
// ISO-3166-2 codes
public static Countries
{
public static readonly string France = "FR";
...
}
// CultureInfo style codes
public static Languages
{
public static readonly string BritishEnglish = "en-GB";
}
UPDATE: Based on your comment that this is specifically for movies, you could still use a CultureInfo for the culture where it was produced and the culture of the content. Anything beyond that is probably too political for Microsoft to be involved with making it part of the OS (c.f. this). Thus, you'd have to define your own.