Suggerimenti per lo sviluppo di applicazioni internazionali

In questa sezione vengono forniti alcuni suggerimenti da seguire per lo sviluppo di applicazioni internazionali.

Suggerimenti per la globalizzazione

  1. Fare in modo che l’applicazione si basi internamente sulla codifica Unicode.

  2. Utilizzare classi con il supporto della lingua fornite dallo spazio dei nomi System.Globalization per modificare e formattare i dati.

    • Per l'ordinamento, utilizzare le classi SortKey e CompareInfo.

    • Per i confronti di stringhe, utilizzare la classe CompareInfo.

    • Per la formattazione della data e dell'ora, utilizzare la classe DateTimeFormatInfo.

    • Per la formattazione dei numeri, utilizzare la classe NumberFormatInfo.

    • Per i calendari gregoriano e non gregoriano, utilizzare la classe Calendar o una delle implementazioni specifiche di Calendar.

  3. Utilizzare le impostazioni delle proprietà relative alla lingua fornite dalla classe System.Globalization.CultureInfo nelle situazioni appropriate. Utilizzare la proprietà CultureInfo.CurrentCulture per le operazioni di formattazione, ad esempio per la formattazione della data e dell'ora o dei numeri. Utilizzare la proprietà CultureInfo.CurrentUICulture per recuperare le risorse. Si noti che le proprietà CurrentCulture e CurrentUICulture possono essere impostate per thread singoli.

  4. Impostare l'applicazione in modo da consentire la lettura e scrittura di dati da e verso una vasta gamma di codifiche, utilizzando le classi di codifica nello spazio dei nomi System.Text. Non utilizzare dati ASCII. Partire dal presupposto che verranno forniti caratteri internazionali in qualsiasi punto in cui un utente può immettere testo. Accettare, ad esempio, i caratteri internazionali nei nomi di server, nelle directory, nei nomi file, nei nomi utente e negli URL.

  5. Quando si utilizza la classe UTF8Encoding, per motivi di sicurezza è consigliabile utilizzare la funzionalità di rilevamento degli errori offerta da questa classe. Per attivare la funzionalità di rilevamento degli errori, creare un'istanza della classe utilizzando il costruttore che accetta un parametro throwOnInvalidBytes e impostare il valore di throwOnInvalidBytes su true.

  6. Quando possibile, gestire le stringhe come unità intere e non come serie di caratteri singoli. Questo metodo di gestione è particolarmente importante quando si ordinano o si cercano sottostringhe. In questo modo non si verificheranno problemi associati all'analisi dei caratteri combinati.

  7. Visualizzare il testo utilizzando le classi fornite dallo spazio dei nomi System.Drawing.

  8. Per garantire l'uniformità tra i sistemi operativi, non consentire l'override di CultureInfo da parte delle impostazioni utente. Utilizzare il costruttore CultureInfo che accetta un parametro useUserOverride e impostarlo su false.

  9. Eseguire il test della funzionalità dell'applicazione in versioni localizzate dei sistemi operativi utilizzando dati internazionali.

  10. Se una decisione relativa alla sicurezza è basata sul risultato di un confronto di stringhe o di una modifica delle lettere maiuscole e minuscole, eseguire un'operazione indipendente dalla lingua specificando in modo esplicito la proprietà CultureInfo.InvariantCulture. In questo modo viene garantito che il valore di CultureInfo.CurrentCulture non influisce sul risultato. Per un esempio in cui viene illustrato come i confronti di stringhe dipendenti dalla lingua possono provocare risultati incoerenti, vedere Regole di ordinamento e mapping di maiuscole e minuscole personalizzati.

Suggerimenti per la localizzazione

  1. Spostare tutte le risorse localizzabili in DLL distinte di sole risorse. Le risorse localizzabili includono gli elementi dell'interfaccia utente quali, ad esempio, stringhe, messaggi di errore, finestre di dialogo, menu e risorse di oggetti incorporati.

  2. Non impostare stringhe o risorse dell'interfaccia utente come hardcoded.

  3. Non collocare le risorse non localizzabili nelle DLL di sole risorse, per evitare di creare confusione ai traduttori.

  4. Non utilizzate stringhe composte che sono generate in fase di esecuzione da frasi concatenate. Le stringhe composte sono difficili da localizzare, in quanto richiedono spesso un ordine grammaticale in inglese che non è valido per tutte le lingue.

  5. Evitare costrutti ambigui, come ad esempio "Empty Folder" in cui le stringhe possono essere tradotte in modo diverso in base alle regole grammaticali dei componenti delle stringhe. La stringa "empty", ad esempio, può essere un verbo o un aggettivo e può essere tradotta in modo diverso in alcune lingue, come ad esempio l'italiano o il francese.

  6. Evitare l'utilizzo di immagini e icone contenenti testo all'interno dell'applicazione, in quanto sono costose da localizzare.

  7. Lasciare sufficiente spazio vuoto per consentire l'espansione della lunghezza delle stringhe nell'interfaccia utente. In alcune lingue le frasi possono richiedere il 50-75% di spazio in più.

  8. Utilizzare la classe System.Resources.ResourceManager per recuperare le risorse in base alla lingua.

  9. Utilizzare Microsoft Visual Studio 2005 per creare le finestre di dialogo di Windows Form, in modo che sia possibile localizzarle utilizzando Editor risorse di Windows Form (Winres.exe). Non codificare manualmente le finestre di dialogo di Windows Form.

  10. Assegnare la localizzazione (traduzione) a professionisti.

  11. Per una descrizione completa della creazione e localizzazione delle risorse, vedere Risorse nelle applicazioni.

Suggerimenti per la globalizzazione per le applicazioni ASP.NET

  1. Impostare esplicitamente le proprietà CurrentUICulture e CurrentCulture nell'applicazione. Non utilizzare i valori predefiniti.

  2. Si noti che le applicazioni ASP.NET sono applicazioni gestite e possono utilizzare le stesse classi delle altre applicazioni gestite per il recupero, la visualizzazione e la manipolazione delle informazioni in base alla lingua.

  3. Tenere presente che in ASP.NET è possibile specificare i tre tipi di codifiche descritti di seguito.

    • requestEncoding: specifica la codifica ricevuta dal browser del client.

    • responseEncoding: specifica la codifica da inviare al browser del client. Nella maggior parte dei casi deve essere la stessa codifica di requestEncoding.

    • fileEncoding: specifica la codifica predefinita per l'analisi dei file con estensione aspx, asmx e asax.

  4. Specificare i valori per gli attributi requestEncoding, responseEncoding, fileEncoding, culture e uiCulture nei seguenti tre punti in un'applicazione ASP.NET:

    • Nella sezione di globalizzazione di un file Web.config. Questo file è esterno all'applicazione ASP.NET. Per ulteriori informazioni, vedere l'elemento <globalization>.

    • In un'istruzione di pagina. Si noti che quando in un'applicazione viene visualizzata una pagina, il file è già stato letto, pertanto non è più possibile specificare fileEncoding e requestEncoding. In un'istruzione di pagina è possibile specificare solo uiCulture, Culture e responseEncoding.

    • A livello di codice, nel codice dell'applicazione. Questa impostazione può variare in base alla richiesta. Come con un'istruzione di pagina, raggiunto il codice dell'applicazione non è più possibile specificare fileEncoding e requestEncoding. Nel codice dell'applicazione è possibile specificare solo uiCulture, Culture e responseEncoding.

  5. Si noti che uiCulture può essere impostato sulla lingua del browser. Per ulteriori dettagli, vedere l'esempio di utilizzo delle risorse in Guida rapida ad ASP.NET.

Vedere anche

Concetti

Risorse nelle applicazioni

Altre risorse

Codifica e localizzazione