I finally found the solution : A SelectList seems to be based on the IEnumerable it needs. The property Text of every SelectListItem are dynamics and depends on every item of the IEnumerable.
We need to change the IEnumerable, not the SelectList :
What I finally did :
public class AppointmentStatus
{
public int Id {get;set;}
public string I18NKey {get;set;}
public string Translation {get;set;}
}
public static IEnumerable<AppointmentStatus> TranslateValue(IEnumerable<AppointmentStatus> list)
{
foreach (var tmp in list)
{
tmp.Translation = I18nHelper.Message(tmp.I18NKey);
}
return list;
}
Html.DropDownListFor(x=>x.Id, new SelectList(HelperClass.TranslateValue(MyListOfStatus), "Id","Translation")
Hope that it will help you.