NeutralResourcesLanguageAttribute Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
- 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) |