É possível usar uma variável para a anotação de dados `[Display (Name =“ Something ”)]` no MVC3 (C #)

Não tenho certeza porque, mas a anotação de dados no MVC3 insistem em ter valores constantes, o que eu não consigo entender para coisas como mensagens de erro e nomes de exibição. Eu amo essas anotações, elas são tão fáceis de usar e tão poderosas, mas e se você precisar dar suporte a vários idiomas?

Imagine que eu tenha o seguinte modelo:

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

Se eu não mudar nada e usar as visualizações CRUD que o MVC3 construirá para mim, recebo um rótulo ao lado dos campos de texto que diz "First_Name", então adiciono a anotação de dados para alterar o nome de exibição da seguinte forma:

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

Que funciona muito bem. Mas eu quero fornecer um nome de exibição diferente, dependendo do idioma dos usuários, usando uma função que eu fiz anteriormenteGetDisplayName(string ToGet, string Language) que apenas retorna a string que eu estou interessado, mas se eu mudar minha anotação de dados para isso:

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

Então eu recebo um erro de compilador me dizendo que a anotação requer uma constante valores, por que ??

Alguém sabe uma maneira de realizar o que estou tentando fazer? obrigado

ATUALIZAR

Ok, parece que a melhor maneira de fazer isso é com.resx arquivos de recursos como por várias respostas abaixo e aqueles em outros posts. que funciona muito bem na maior parte.

Alguém sabe como posso solicitar um recurso com um nome de variável? não no contexto de atributos de dados desta vez, mas apenas em controladores e visualizações.

Basicamente no momento estou chegando aos recursos com@Resources.SomeKey mas eu gostaria de ser capaz de usar isso dentro de uma função em um@Resources["SomeOtherKey"] OndeSomeOtherKey é uma string gerada dinamicamente.

questionAnswers(5)

yourAnswerToTheQuestion