130 messaggi dal 26 agosto 2004
Ciao Moreno, ti ringrazio per l'articolo ben chiaro. Ne approfitto per chiederti una cosa: nel nostro progetto la traduzione dei testi viene letta dal DB (con un meccanismo di cache,per non accedere al DB continuamente). Trovo questo approccio particolarmente semplice, ma non è mai quello consigliato sul WEB (basti pensare al sistema di internalizzazione proposto da angular).
cosa c'è di sbagliato?
GRAZIE!

Stefano M.
11.885 messaggi dal 09 febbraio 2002
Contributi
Hey ciao Stefano, grazie a te!


nel nostro progetto la traduzione dei testi viene letta dal DB
con un meccanismo di cache
cosa c'è di sbagliato?


Non c'è nulla di sbagliato, è semplicemente un'altra tecnica per localizzare i contenuti della pagina.
Se preferisci tenere i testi nel DB per renderli facilmente modificabili da un amministratore, va benissimo. Tutte le tecnologie sono a tua disposizione per implementare al meglio i requisiti di business, poi sta a te farne un uso razionale. E dato che stai già usando la cache, direi che riuscirai ad ottenere ottime prestazioni.
Ricordati giusto di invalidare la cache quando l'amministratore aggiorna un valore. Lo puoi fare usando il metodo Remove del servizio IMemoryCache.

Lunedì leggi il seguito di questo script che mostra come costruire un servizio custom per ottenere i testi localizzati. In quel caso faccio vedere i file di risorse ma tu puoi mettere al suo interno della logica personalizzata che vada a sfruttare i servizi IMemoryCache e DbContext per recuperare il testo localizzato.
Così ti integri con i servizi offerti da ASP.NET Core e recuperare un valore sarà facile come scrivere:
string valore = mioLocalizer["chiave"];


ciao,
Moreno
Modificato da BrightSoul il 23 giugno 2019 11:06 -

Enjoy learning and just keep making
4 messaggi dal 02 aprile 2002
Ciao Moreno,
è possibile incorporare la culture all'interno della url come primo parametro di routing (es. https://www.miosito/it/corsi)
Ed è possibile localizzare la stessa url in base alla culture (es. https://www.miosito/en/courses)?

Grazie in anticipo
11.885 messaggi dal 09 febbraio 2002
Contributi
Ciao,
sì è possibile, ho messo una spiegazione completa e un'applicazione demo a questo indirizzo:
https://github.com/BrightSoul/aspnetcore-localization-demo

La parte più ostica è stata la localizzazione degli url, cioè la funzionalità che hai suggerito:

localizzare la stessa url in base alla culture


Ho trovato una soluzione ma non è proprio elegante perché - almeno io - tra i molti punti di estendibilità offerti da ASP.NET Core non ne ho trovato uno che mi permettesse contemporaneamente di riscrivere sia le richieste in ingresso che la generazione dei link.
Infatti, anche i link interni all'applicazione, come:
<a asp-action="Chapter1" asp-controller="Book">1</a>

Devono produrre un output localizzato in base alla Culture corrente, come:
<a href="/it/Libro/Capitolo1">1</a>


Purtroppo ci sono delle issue qua e là che ho menzionato nel progetto che la rendono una soluzione poco elegante.
Ho scritto a un'altra persona che pure stava cercando di realizzare la stessa cosa in ASP.NET Core 3.x per capire se ha consigli che possano migliorare lo stato attuale delle cose.
https://github.com/saaratrix/asp.net-core-mvc-localized-routing/issues/36

Ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.