¿Es posible usar una variable para la anotación de datos `[Mostrar (Nombre =“ Algo ”)]` en MVC3 (C #)

No estoy seguro de por qué, pero la anotación de datos en MVC3 insiste en tener valores constantes, que simplemente no puedo entender para cosas como mensajes de error y nombres de visualización. Me encantan estas anotaciones, son tan fáciles de usar y tan poderosas, pero ¿qué sucede si necesita admitir varios idiomas?

Imagina que tengo el siguiente modelo:

public class Person
{
    public string First_Name { get; set; }
}

Si no cambio nada y utilizo las vistas CRUD que MVC3 construirá para mí, obtengo una etiqueta junto a los campos de texto que dice "Nombre_primero", por lo que agrego la anotación de datos para cambiar el nombre para mostrar así:

public class Person
{
    [Display(Name="First name")]
    public string First_Name { get; set; }
}

Lo que funciona bien. Pero quiero proporcionar un nombre de visualización diferente según el idioma del usuario, utilizando una función que hice anteriormenteGetDisplayName(string ToGet, string Language) que solo devuelve la cadena en la que estoy interesado, pero si cambio mi anotación de datos a esto:

public class Person
{
    [Display(Name=GetDisplayName("First_Name", "English"))]
    public string First_Name { get; set; }
}

Entonces me aparece un error del compilador que me dice que la anotación requiere valores constantes, ¿POR QUÉ?

¿Alguien sabe una manera de lograr lo que estoy tratando de hacer? Gracias

ACTUALIZAR

Ok, parece que la mejor manera de hacerlo es con.resx archivos de recursos según varias respuestas a continuación y los de otras publicaciones. que funciona muy bien en su mayor parte.

¿Alguien sabe cómo puedo solicitar un recurso con un nombre de variable? no en el contexto de atributos de datos esta vez, sino solo en controladores y vistas.

Básicamente en este momento estoy llegando a los recursos con@Resources.SomeKey pero me gustaría poder usar eso dentro de una función en una@Resources["SomeOtherKey"] dóndeSomeOtherKey Es una cadena generada dinámicamente.