 <p>Instead of assigning the actual values to the attribute properties, assign keys for resource strings. Then, you can use a custom <code>ModelMetadataProvider</code> that is aware of the localization context and will provide the appropriate string. To get a better solution, you can make your custom <code>ModelMetadataProvider</code> infer conventions, (which cuts down on the need for verbose attributes).</p> <p>Phil Haack has a blog article called <a href="http://haacked.com/archive/2011/07/14/model-metadata-and-validation-localization-using-conventions.aspx">Model Metadata and Validation Localization using Conventions</a> that explains how this works. There is also a corresponding NuGet package called <a href="http://nuget.org/packages/ModelMetadataExtensionsWithBugfix">ModelMetadataExtensions</a> with source code available on github at <a href="https://github.com/Haacked/mvc-metadata-conventions">https://github.com/Haacked/mvc-metadata-conventions</a> . </p> <p><em>As a side note, I'd recommend reviewing some of the awesome answers I got on an old question of mine: <a href="http://programmers.stackexchange.com/questions/98358/effective-strategies-for-localization-in-net">Effective Strategies for Localization in .NET</a>. They don't specifically address your question, but will be very helpful if you are working on a multilingual .NET app.</em></p>