Nello scorso script abbiamo visto come sfruttare Globalize e CLDR nella validazione client side di ASP.NET MVC 5. L'esempio che abbiamo fatto, però, soffre ancora di una lacuna: se inseriamo un valore non valido, infatti, il messaggio di errore mostrato è ancora quello standard in lingua inglese:
Se ispezioniamo l'HTML della pagina, infatti, notiamo subito che il messaggio di errore per l'obbligatorietà della data è correttamente tradotto in italiano, mentre quello relativo alla data non valida è invece ancora in inglese. Come mai questa differenza di comportamento?
<input class="..." data-val="true" data-val-date="The field Start must be a date." data-val-required="Il campo Start è obbligatorio." ... />
La ragione è molto semplice: nel primo caso, il messaggio proviene dall'attributo Required - implicitamente aggiunto visto che la data non è Nullable - che fa parte del .NET Framework e viene già installato con i file di risorse in lingua.
Il secondo messaggio, invece, viene generato da ClientDataTypeModelValidatorProvider, che è una classe interna di ASP.NET MVC, e quindi installata tramite package NuGet. In questo caso, il problema sta nel fatto che, per default, gli unici file di risorse che vengono installati sono quelli inglesi. Se ne abbiamo bisogno, però, possiamo scaricare da NuGet gli assembly con le varie localizzazioni. Per esempio, volendo supportare la lingua italiana, tutto ciò che dobbiamo fare è installare il seguente package:
Install-Package Microsoft.AspNet.Mvc.it
A questo punto, il messaggio di errore apparirà correttamente tradotto:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare il flickering dei componenti nel prerender di Blazor 8
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Utilizzare le collection expression in C#
Potenziare Azure AI Search con la ricerca vettoriale
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Eseguire attività basate su eventi con Azure Container Jobs
Specificare il versioning nel path degli URL in ASP.NET Web API
Utilizzare la libreria Benchmark.NET per misurare le performance
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Creazione di componenti personalizzati in React.js con Tailwind CSS
Disabilitare automaticamente un workflow di GitHub