2009-03-04 11 views
9

Ci sono un certo numero di domande su questo sito relative ai file how to access RESX in un'applicazione ASP.NET MVC e best practices al loro utilizzo.Quali sono i vantaggi dell'utilizzo della localizzazione .resx per un'app ASP.NET MVC?

Tuttavia dopo aver letto (per la prima volta mi permetto di aggiungere) il MSDN article on resources ho lasciato chiedo se ci sono anche eventuali vantaggi di utilizzare i file RESX dal momento che non ho intenzione di utilizzare i controlli server. C'è tutto questo parlare di localizzazione "implicita" e "esplicita", ma con MVC non trarrò alcun beneficio.

In definitiva la mia applicazione necessiterà di risorse stringa per pulsanti e voci di menu e anche elementi HTML molto più lunghi per contenuti misti più lunghi. Vorrei usare un CMS per gli oggetti più lunghi perché sono abbastanza sicuro di non voler incollarli in un file RESX.

Esistono validi motivi per utilizzare o non utilizzare le risorse ASP.NET in un'applicazione nuova. Assumerò che eventuali futuri miglioramenti di MVC o miglioramenti di RESX funzioneranno in armonia insieme, ma per ora sto ottenendo un IDictionary glorificato per quanto posso vedere.

Devo procedere con RESX o cercare altrove? Dovrei anche considerare un CMS per i tipi di risorse per cui è stato progettato RESX?

Qualsiasi lezione appresa sarebbe apprezzata.

risposta

9

Ci sono un paio di vantaggi alle infrastrutture RESX:

  • non si dispone di caricare le corrette risorse per-lingua. Una volta stabilito il locale del thread, il CLr si occupa di trovare l'assembly appropriato e caricare le risorse.
  • è facile trasferire le risorse locali specifiche per le localizzazioni a terze parti.
  • esiste un meccanismo di fallback predefinito per risorse non localizzate.

C'è anche uno svantaggio particolare all'approccio RESX:

  • è difficile sostenere modello di traduzione in cui gli utenti si traducono le risorse per voi.

Mi piacerebbe approfondire un po 'l'ultimo punto. Prendiamo ad esempio il modello di traduzione di Facebook. Facebook ha un modo abbastanza semplice per le persone di fornire e votare traduzioni di varie risorse. Se questi sono memorizzati in un database, sarebbe possibile utilizzarli dopo il corretto processo editoriale senza ricostruire e ridistribuire l'applicazione. Con il modello RESX, gli assembly delle risorse dovranno essere ricostruiti e ridistribuiti, il che potrebbe avere un costo sufficientemente elevato in base al processo di distribuzione.

Quindi, prima di decidere quale processo di localizzazione utilizzare, esaminerò la decisione di chi sta per eseguire la localizzazione e quale sarà il processo di distribuzione per le risorse localizzate dopo che l'applicazione principale è già stata distribuita.

MODIFICA: Ho dimenticato di menzionare che queste considerazioni sono ortogonali alla scelta di framework ASP.NET (MVC o WebForms).

+0

E per quanto riguarda le prestazioni? – jsicary

4

Direi "sì", i file resx sono ancora una buona opzione per le nuove applicazioni. Non penso che ASP.NET MVC in particolare cambi qualcosa sull'archiviazione delle stringhe.

La cosa fantastica di impiegare risorse sia

  • sono abbastanza facile da gestire
  • localizzazione del sito è un compito molto più facile che senza risorse (e sottolineo molto più facile)
  • voi può sostituire l'archivio risorse in qualsiasi momento perché le risorse utilizzano il modello di provider. Puoi cambiare i file resx per le voci db senza modificare l'implementazione del tuo sito.

Raccomando i file di risorse per le "stringhe del sito" che sono diversi dai grandi blocchi di dati che è possibile modificare su base frequente. Quindi per una raccomandazione completa, direi usare i file di risorse (resx per iniziare) per pulsanti, etichette, ecc. E un CMS per il contenuto carnoso.

+0

grazie ian. questo è il tipo di direzione verso cui mi stavo inclinando. Non ho mai dovuto localizzare nulla prima. in effetti non ho bisogno di localizzare nulla, ma voglio essere preparato. mi sono appena trovato a saltare la maggior parte dei contenuti come non rilevanti e mi ha lasciato curioso di sapere cosa dovrei fare –

+0

Stiamo attraversando il dolore di localizzare siti in questo momento. Per noi è un gruppo di app che lavorano insieme e sono in circolazione da alcuni anni. Non è un compito da poco :) Sicuramente almeno consideralo prima di impegnarti su come stai andando a fare le cose. Spero che ti aiuti e ti aiuti a lavorare :) –

+0

Mi chiedo anche se ci sia un livello di astrazione con risorse, ad esempio così potrei aggiungere un * all'inizio di ogni stringa e poi sapere cosa ho e non ho localizzato. Ovviamente con HtmlHelper posso farlo abbastanza facilmente - ma forse ci sono anche altre cose da imparare –

3

Se si utilizza Resx e non si utilizzano i controlli server come in MVC, perché non estendere i metodi MVC Helper in modo da poter creare etichette e testo localizzati? Quindi chiama semplicemente il testo dalla risorsa nel metodo helper.

ad es. '<% = Html.CultureLabel ("ResouceId")%>'

o '<% = Html.CultureButton ("Nome", "ResouceId", HtmlButtonType.Button)%>'

Proprio un pensiero.

Anche la gestione della globalizzazione di un sito è MOLTO più semplice con resx per il testo.

+0

+1 per estendere un metodo di supporto - molto bello. –

Problemi correlati