NeutralResourcesLanguageAttribute Klas

Definitie

Informeert de resourcemanager over de standaardcultuur van een app. Deze klasse kan niet worden overgenomen.

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
Overname
NeutralResourcesLanguageAttribute
Kenmerken

Voorbeelden

In het volgende voorbeeld wordt een eenvoudige 'Hallo wereld'-app gebruikt om het gebruik van het NeutralResourcesLanguageAttribute kenmerk te illustreren om een standaard- of terugvalcultuur te definiëren. Hiervoor moeten afzonderlijke bronbestanden worden gemaakt voor de Engelse culturen (en), Engels (Verenigde Staten) (en-US) en Frans (Frankrijk) (fr-FR). Hieronder ziet u de inhoud van een tekstbestand met de naam ExampleResources.txt voor de Engelse cultuur.

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

Als u het resourcebestand in een app wilt gebruiken, moet u de resourcebestandsgenerator (Resgen.exe) gebruiken om het bestand als volgt te converteren van de tekstindeling (.txt) naar een binaire indeling (.resources):

resgen ExampleResources.txt

Wanneer de app is gecompileerd, wordt het binaire resourcebestand ingesloten in de hoofd-app-assembly.

Hieronder ziet u de inhoud van een tekstbestand met de naam ExampleResources.en-US.txt dat bronnen biedt voor de Engelse cultuur (Verenigde Staten).

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

Het tekstbestand kan als volgt worden geconverteerd naar een binair resources-bestand met behulp van de resourcebestandgenerator (ResGen.exe) op de opdrachtregel:

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

Het binaire bronbestand moet vervolgens worden gecompileerd in een assembly met behulp van Assembly Linker (Al.exe) en in de en-US submap van de app-map worden geplaatst door de volgende opdracht uit te geven:

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

Hieronder ziet u de inhoud van een tekstbestand met de naam ExampleResources.fr-FR.txt dat bronnen biedt voor de Franse cultuur (Frankrijk).

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

Het tekstbestand kan als volgt worden geconverteerd naar een binair resourcebestand met behulp van ResGen.exe op de opdrachtregel:

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

Het binaire resourcesbestand moet vervolgens worden gecompileerd in een assembly met behulp van Assembly Linker en in de fr-FR-submap van de app-map worden geplaatst door het volgende commando in te voeren:

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

In het volgende voorbeeld ziet u de uitvoerbare code waarmee de huidige cultuur wordt ingesteld, de naam van de gebruiker wordt gevraagd en een gelokaliseerde tekenreeks wordt weergegeven.

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

Deze kan worden gecompileerd met behulp van de volgende opdracht in Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

of met behulp van de volgende opdracht in C#:

csc Example.cs /resource:ExampleResources.resources

Opmerkingen

In desktop-apps informeert het NeutralResourcesLanguageAttribute kenmerk de resourcemanager van de standaardcultuur van een app en de locatie van de resources. Resources worden standaard ingesloten in de hoofd-app-assembly en u kunt het kenmerk als volgt gebruiken. Deze instructie geeft aan dat engels (Verenigde Staten) de standaardcultuur van de app is.

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

U kunt ook het NeutralResourcesLanguageAttribute kenmerk gebruiken om aan te geven waar ResourceManager de resources van de standaardcultuur kunnen worden gevonden door een UltimateResourceFallbackLocation opsommingswaarde op te geven in de kenmerkinstructie. Dit wordt meestal gedaan om aan te geven dat de resources zich in een satellietassembly bevinden. De volgende instructie geeft bijvoorbeeld aan dat Engels (Verenigde Staten) de standaard- of neutrale cultuur van de app is en dat de resources zich in een satellietassembly bevinden. Het ResourceManager object zoekt deze in een submap met de naam en-US.

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

Tip

U wordt aangeraden altijd het NeutralResourcesLanguageAttribute kenmerk te gebruiken om de standaardcultuur van uw app te definiëren.

Het kenmerk voert twee rollen uit:

  • Als de standaardcultuurbronnen zijn ingesloten in de hoofdassembly van de app en ResourceManager resources moeten ophalen die tot dezelfde cultuur behoren als de standaardcultuur, worden de ResourceManager resources die zich in de hoofdassembly bevinden, automatisch gebruikt in plaats van te zoeken naar een satellietassembly. Hierdoor wordt de gebruikelijke assemblageprobe overgeslagen, worden de opzoekprestaties voor de eerste resource die u laadt verbeterd, en kunt u uw werkset verminderen. Zie Resources verpakken en implementeren voor het proces ResourceManager dat wordt gebruikt om te testen op resourcebestanden.

  • Als de resources van de standaardcultuur zich in een satellietassembly bevinden in plaats van in de hoofd-app-assembly, specificeert het NeutralResourcesLanguageAttribute kenmerk de cultuur en de map waaruit de runtime de resources kan laden.

Constructors

Name Description
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Initialiseert een nieuw exemplaar van de NeutralResourcesLanguageAttribute klasse met de opgegeven uiteindelijke terugvallocatie voor resources.

NeutralResourcesLanguageAttribute(String)

Initialiseert een nieuw exemplaar van de NeutralResourcesLanguageAttribute klasse.

Eigenschappen

Name Description
CultureName

Hiermee haalt u de naam van de cultuur op.

Location

Hiermee haalt u de locatie op voor de ResourceManager klasse die moet worden gebruikt om neutrale resources op te halen met behulp van het terugvalproces van resources.

TypeId

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id.

(Overgenomen van Attribute)

Methoden

Name Description
Equals(Object)

Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
GetHashCode()

Retourneert de hash-code voor dit exemplaar.

(Overgenomen van Attribute)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsDefaultAttribute()

Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse.

(Overgenomen van Attribute)
Match(Object)

Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object.

(Overgenomen van Attribute)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

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

Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's.

(Overgenomen van Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen.

(Overgenomen van Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1).

(Overgenomen van Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven.

(Overgenomen van Attribute)

Van toepassing op

Zie ook