NeutralResourcesLanguageAttribute Klass

Definition

Informerar resurshanteraren om en apps standardkultur. Det går inte att ärva den här klassen.

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
Arv
NeutralResourcesLanguageAttribute
Attribut

Exempel

I följande exempel används en enkel "Hello World"-app för att illustrera användningen av NeutralResourcesLanguageAttribute attributet för att definiera en standardkultur eller återställningskultur. Det kräver skapandet av separata resursfiler för de engelska (en), engelska (USA) (en-US), och franska (Frankrike) (fr-FR) kulturer. Följande visar innehållet i en textfil med namnet ExampleResources.txt för den engelska kulturen.

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

Om du vill använda resursfilen i en app måste du använda resursfilgeneratorn (Resgen.exe) för att konvertera filen från dess textformat (.txt) till ett binärt format (.resources) enligt följande:

resgen ExampleResources.txt

När appen kompileras bäddas den binära resursfilen in i huvudappsammansättningen.

Följande visar innehållet i en textfil med namnet ExampleResources.en-US.txt som tillhandahåller resurser för den engelska kulturen (USA).

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

Textfilen kan konverteras till en binär resursfil med hjälp av resursfilgeneratorn (ResGen.exe) på kommandoraden enligt följande:

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

Den binära resursfilen ska sedan kompileras till en sammansättning med hjälp av Assembly Linker (Al.exe) och placeras i underkatalogen en-US i appkatalogen genom att följande kommando utfärdas:

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

Följande visar innehållet i en textfil med namnet ExampleResources.fr-FR.txt som tillhandahåller resurser för den franska kulturen (Frankrike).

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

Textfilen kan konverteras till en binär resursfil med hjälp av ResGen.exe på kommandoraden enligt följande:

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

Filen med binära resurser ska sedan kompileras till en sammansättning med hjälp av Assembly Linker och placeras i underkatalogen fr-FR i appkatalogen genom att följande kommando utfärdas:

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

I följande exempel visas den körbara kod som anger den aktuella kulturen, frågar efter användarens namn och visar en lokaliserad sträng.

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

Det kan kompileras med hjälp av följande kommando i Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

eller med hjälp av följande kommando i C#:

csc Example.cs /resource:ExampleResources.resources

Kommentarer

I skrivbordsappar NeutralResourcesLanguageAttribute informerar attributet resurshanteraren om en apps standardkultur och platsen för dess resurser. Som standard bäddas resurserna in i huvudappsammansättningen och du kan använda attributet på följande sätt. Den här instruktionen anger att engelska (USA) är appens standardkultur.

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

Du kan också använda NeutralResourcesLanguageAttribute attributet för att ange var ResourceManager du kan hitta resurserna i standardkulturen genom att ange ett UltimateResourceFallbackLocation uppräkningsvärde i attribututdraget. Detta görs oftast för att indikera att resurserna finns i en satellitsammansättning. Följande instruktion anger till exempel att engelska (USA) är appens standardkultur eller neutrala kultur och att dess resurser finns i en satellitsammansättning. Objektet ResourceManager söker efter dem i en underkatalog med namnet en-US.

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

Tips/Råd

Vi rekommenderar att du alltid använder NeutralResourcesLanguageAttribute attributet för att definiera standardkulturen för din app.

Attributet utför två roller:

  • Om standardkulturens resurser är inbäddade i appens huvudsammansättning och ResourceManager måste hämta resurser som tillhör samma kultur som standardkulturen, ResourceManager använder automatiskt de resurser som finns i huvudsammansättningen i stället för att söka efter en satellitsammansättning. Detta kringgår den vanliga sammansättningsavsökningen, förbättrar uppslagsprestandan för den första resursen du läser in och kan minska din arbetsuppsättning. Se Paketera och distribuera resurser för den process ResourceManager som används för att söka efter resursfiler.

  • Om standardkulturens resurser finns i en satellitsammansättning i stället för i huvudappsammansättningen anger NeutralResourcesLanguageAttribute attributet kulturen och katalogen som körningen kan läsa in resurserna från.

Konstruktorer

Name Description
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Initierar en ny instans av NeutralResourcesLanguageAttribute klassen med den angivna slutgiltiga återställningsplatsen för resurser.

NeutralResourcesLanguageAttribute(String)

Initierar en ny instans av NeutralResourcesLanguageAttribute klassen.

Egenskaper

Name Description
CultureName

Hämtar kulturnamnet.

Location

Hämtar platsen för klassen ResourceManager som ska användas för att hämta neutrala resurser med hjälp av resursåterställningsprocessen.

TypeId

När den implementeras i en härledd klass hämtar du en unik identifierare för den här Attribute.

(Ärvd från Attribute)

Metoder

Name Description
Equals(Object)

Returnerar ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
GetHashCode()

Returnerar hash-koden för den här instansen.

(Ärvd från Attribute)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsDefaultAttribute()

När den åsidosättas i en härledd klass anger du om värdet för den här instansen är standardvärdet för den härledda klassen.

(Ärvd från Attribute)
Match(Object)

När den åsidosätts i en härledd klass returneras ett värde som anger om den här instansen är lika med ett angivet objekt.

(Ärvd från Attribute)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mappar en uppsättning namn till en motsvarande uppsättning av sändningsidentifierare.

(Ärvd från Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hämtar typinformationen för ett objekt, som kan användas för att hämta typinformationen för ett gränssnitt.

(Ärvd från Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hämtar antalet typinformationsgränssnitt som ett objekt tillhandahåller (antingen 0 eller 1).

(Ärvd från Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Ger åtkomst till egenskaper och metoder som exponeras av ett objekt.

(Ärvd från Attribute)

Gäller för

Se även