NeutralResourcesLanguageAttribute Classe

Definizione

Informa il gestore risorse delle impostazioni cultura predefinite di un'app. La classe non può essere ereditata.

public ref class NeutralResourcesLanguageAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
public sealed class NeutralResourcesLanguageAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NeutralResourcesLanguageAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
type NeutralResourcesLanguageAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly, AllowMultiple=false)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NeutralResourcesLanguageAttribute = class
    inherit Attribute
Public NotInheritable Class NeutralResourcesLanguageAttribute
Inherits Attribute
Ereditarietà
NeutralResourcesLanguageAttribute
Attributi

Esempio

L'esempio seguente utilizza una semplice app "Hello World" per illustrare l'uso dell'attributo NeutralResourcesLanguageAttribute per definire una cultura predefinita o di fallback. Richiede la creazione di file di risorse separati per la cultura inglese (en), inglese (Stati Uniti) (en-US) e francese (Francia) (fr-FR). Di seguito viene mostrato il contenuto di un file di testo denominato ExampleResources.txt per la cultura inglese.

# Resources for the default (en) culture.
Greeting=Hello

Per usare il file di risorse in un'app, è necessario usare il Generatore di file di risorse (Resgen.exe) per convertire il file dal relativo formato di testo (.txt) in un formato binario (con estensione resources) come indicato di seguito:

resgen ExampleResources.txt

Quando l'app viene compilata, il file di risorse binario verrà incorporato nell'assembly principale dell'app.

Di seguito viene illustrato il contenuto di un file di testo denominato ExampleResources.en-US.txt che fornisce risorse per la cultura inglese (Stati Uniti).

# Resources for the en-US culture.
Greeting=Hi

Il file di testo può essere convertito in un file di risorse binarie usando il generatore di file di risorse (ResGen.exe) nella riga di comando come indicato di seguito:

resgen ExampleResources.en-US.txt ExampleResources.en-US.resources

Il file di risorse binario deve quindi essere compilato in un assembly usando Assembly Linker (Al.exe) e inserito nella sottodirectory en-US della directory dell'app eseguendo il comando seguente:

al /t:lib /embed:ExampleResources.en-US.resources /culture:en-US /out:en-us\Example.resources.dll

Di seguito viene illustrato il contenuto di un file di testo denominato ExampleResources.fr-FR.txt che fornisce risorse per la cultura francese (Francia).

# Resources for the fr-FR culture.
Greeting=Bonjour

Il file di testo può essere convertito in un file di risorse binario usando ResGen.exe nella riga di comando come indicato di seguito:

resgen ExampleResources.fr-FR.txt ExampleResources.fr-FR.resources

Il file di risorse binarie deve quindi essere compilato in un assembly usando Assembly Linker e inserito nella sottodirectory fr-FR della directory dell'app eseguendo il comando seguente:

al /t:lib /embed:ExampleResources.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll

L'esempio seguente fornisce il codice eseguibile che imposta le impostazioni cultura correnti, richiede il nome dell'utente e visualizza una stringa localizzata.

using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Threading;

[assembly: NeutralResourcesLanguageAttribute("en")]
public class Example
{
    public static void Main()
    {
        // Select the current culture randomly to test resource fallback.
        string[] cultures = { "de-DE", "en-us", "fr-FR" };
        Random rnd = new Random();
        int index = rnd.Next(0, cultures.Length);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures[index]);
        Console.WriteLine($"The current culture is {CultureInfo.CurrentUICulture.Name}");

        // Retrieve the resource.
        ResourceManager rm = new ResourceManager("ExampleResources",
                                                 typeof(Example).Assembly);
        string greeting = rm.GetString("Greeting");

        Console.Write("Enter your name: ");
        string name = Console.ReadLine();
        Console.WriteLine($"{greeting} {name}!");
    }
}
Imports System.Globalization
Imports System.Resources
Imports System.Threading 

<Assembly:NeutralResourcesLanguageAttribute("en")>

Module Example
   Public Sub Main()
      ' Select the current culture randomly to test resource fallback.
      Dim cultures() As String = { "de-DE", "en-us", "fr-FR" }
      Dim rnd As New Random()
      Dim index As Integer = rnd.Next(0, cultures.Length)
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(cultures(index))      
      Console.WriteLine("The current culture is {0}", 
                        CultureInfo.CurrentUICulture.Name)       

      ' Retrieve the resource.
      Dim rm As New ResourceManager("ExampleResources" , GetType(Example).Assembly)
      Dim greeting As String = rm.GetString("Greeting")
      
      Console.Write("Enter your name: ")
      Dim name As String = Console.ReadLine()
      Console.WriteLine("{0} {1}", greeting, name)
   End Sub
End Module

Può essere compilato usando il comando seguente in Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

oppure usando il comando seguente in C#:

csc Example.cs /resource:ExampleResources.resources

Commenti

Nelle app desktop, l'attributo NeutralResourcesLanguageAttribute informa il gestore risorse della cultura predefinita di un'app e della posizione delle sue risorse. Per impostazione predefinita, le risorse vengono incorporate nell'assembly principale dell'app ed è possibile usare l'attributo come indicato di seguito. Questa istruzione specifica che l'inglese (Stati Uniti) è la lingua predefinita dell'app.

[assembly: NeutralResourcesLanguage("en-US")]
<Assembly:NeutralResourcesLanguage("en-US")>

È anche possibile usare l'attributo NeutralResourcesLanguageAttribute per indicare dove ResourceManager può trovare le risorse delle impostazioni cultura predefinite fornendo un valore di enumerazione UltimateResourceFallbackLocation nell'istruzione attribute. Questa operazione viene eseguita più comunemente per indicare che le risorse risiedono in un assembly satellite. Ad esempio, l'istruzione seguente specifica che l'inglese (Stati Uniti) è la cultura predefinita o neutrale dell'app e che le sue risorse si trovano in un assembly satellite. L'oggetto ResourceManager li cercherà in una sottodirectory denominata en-US.

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
<Assembly:NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>

Tip

È consigliabile usare sempre l'attributo NeutralResourcesLanguageAttribute per definire le impostazioni cultura predefinite dell'app.

L'attributo esegue due ruoli:

  • Se le risorse della cultura predefinita sono incorporate nell'assembly principale dell'app e ResourceManager deve recuperare risorse che appartengono alla stessa cultura della cultura predefinita, ResourceManager automaticamente usa le risorse presenti nell'assembly principale anziché cercare un assembly satellite. Questo bypassa la normale sonda di assembly, migliora le prestazioni di ricerca per la prima risorsa caricata e può ridurre l'insieme di lavoro. Vedere Creazione di pacchetti e distribuzione di risorse per il processo ResourceManager che utilizza per rilevare i file di risorse.

  • Se le risorse della cultura predefinita si trovano in un assembly satellite anziché nell'assembly principale dell'app, l'attributo NeutralResourcesLanguageAttribute specifica la cultura e la directory da cui il runtime può caricare le risorse.

Costruttori

Nome Descrizione
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Inizializza una nuova istanza della NeutralResourcesLanguageAttribute classe con il percorso di fallback della risorsa finale specificato.

NeutralResourcesLanguageAttribute(String)

Inizializza una nuova istanza della classe NeutralResourcesLanguageAttribute.

Proprietà

Nome Descrizione
CultureName

Ottiene il nome delle impostazioni cultura.

Location

Ottiene il percorso della ResourceManager classe da usare per recuperare le risorse neutre usando il processo di fallback delle risorse.

TypeId

Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute.

(Ereditato da Attribute)

Metodi

Nome Descrizione
Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
GetHashCode()

Restituisce il codice hash per questa istanza.

(Ereditato da Attribute)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsDefaultAttribute()

Quando sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
Match(Object)

Quando sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per un'interfaccia.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto .

(Ereditato da Attribute)

Si applica a

Vedi anche