Apariencia
Recursos y culturas
Recursos de mensajes
Un catálogo suele contener un recurso neutro, como Messages.resx, y recursos específicos, como Messages.en.resx. Cada clave identifica una plantilla que puede traducirse sin cambiar el código que la usa.
csharp
var localizer = new ResourceMessageLocalizer(Messages.ResourceManager);
var message = Message.FromResource("error.required", localizer)
.With("field", "Correo");Resolver el texto
ResourceMessageLocalizer busca la plantilla según la cultura de interfaz activa. Si una clave no existe, devuelve la propia clave. Durante desarrollo esto hace visible un recurso faltante en lugar de ocultarlo con un texto vacío.
Las fechas, números y monedas se formatean con la cultura usada al resolver. Por eso conviene conservar el valor original como parámetro en vez de convertirlo a texto antes de crear el mensaje.
csharp
var message = Message.Create(
"El pedido {order} fue cancelado el {when}.",
("order", "A-1002"),
("when", new DateTime(2026, 9, 21)));El valor de when se formatea al resolver el mensaje, no al crear la plantilla.
Reglas de diseño
- Mantén las claves estables y descriptivas:
error.required, no texto completo. - Usa el recurso neutro como respaldo.
- Agrega un recurso por cultura solo cuando exista una traducción mantenida.
- No uses el texto localizado como identificador de una condición o error.