NeutralResourcesLanguageAttribute Třída

Definice

Informuje správce prostředků o výchozí jazykové verzi aplikace. Tato třída se nemůže dědit.

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
Dědičnost
NeutralResourcesLanguageAttribute
Atributy

Příklady

Následující příklad používá jednoduchou aplikaci Hello World k ilustraci použití atributu NeutralResourcesLanguageAttribute k definování výchozí nebo záložní kultury. Vyžaduje vytvoření samostatných souborů prostředků pro kultury angličtina (en), angličtina (Spojené státy) (en-US) a francouzština (Francie) (fr-FR). Následující příklad ukazuje obsah textového souboru s názvem ExampleResources.txt pro anglickou jazykovou verzi.

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

Pokud chcete použít soubor prostředků v aplikaci, musíte použít generátor souborů prostředků (Resgen.exe) k převodu souboru z textového formátu (.txt) na binární formát (.resources), a to následujícím způsobem:

resgen ExampleResources.txt

Při kompilaci aplikace se binární soubor prostředků vloží do hlavního sestavení aplikace.

Následující příklad ukazuje obsah textového souboru s názvem ExampleResources.en-US.txt, který poskytuje zdroje pro kulturu angličtiny (Spojené státy).

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

Textový soubor lze převést na binární soubor prostředků pomocí Generátor souborů prostředků (ResGen.exe) na příkazovém řádku následujícím způsobem:

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

Binární zdrojový soubor by měl být následně zkompilován do sestavení s použitím Assembly Linker (Al.exe) a umístěn do podadresáře en-US ve složce aplikace použitím následujícího příkazu:

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

Následující příklad ukazuje obsah textového souboru s názvem ExampleResources.fr-FR.txt, který poskytuje prostředky pro francouzskou jazykovou verzi (Francie).

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

Textový soubor lze převést na binární soubor prostředků pomocí ResGen.exe na příkazovém řádku následujícím způsobem:

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

Binární soubor prostředků by se pak měl zkompilovat do sestavení pomocí Assembly Linkeru a umístit do podadresáře fr-FR adresáře aplikace vydáním následujícího příkazu:

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

Následující příklad poskytuje spustitelný kód, který nastaví aktuální jazykovou verzi, vyzve k zadání uživatelského jména a zobrazí lokalizovaný řetězec.

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

Dá se zkompilovat pomocí následujícího příkazu v jazyce Visual Basic:

vbc Example.vb /resource:ExampleResources.resources

nebo pomocí následujícího příkazu v jazyce C#:

csc Example.cs /resource:ExampleResources.resources

Poznámky

V desktopových aplikacích atribut NeutralResourcesLanguageAttribute informuje správce prostředků aplikace o výchozím kulturním nastavení aplikace a umístění jejích prostředků. Ve výchozím nastavení jsou prostředky vloženy do sestavení hlavní aplikace a atribut můžete použít následujícím způsobem. Tento příkaz určuje, že výchozí jazykovou verzí aplikace je angličtina (Spojené státy).

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

Pomocí atributu NeutralResourcesLanguageAttribute můžete také určit, kde může ResourceManager najít prostředky výchozí jazykové verze zadáním hodnoty výčtu UltimateResourceFallbackLocation v atributovém příkazu. Nejčastěji se to provádí k označení, že zdroje se nacházejí v satelitním sestavení. Například následující příkaz určuje, že angličtina (USA) je výchozí nebo neutrální kultura aplikace a že její prostředky se nacházejí v satelitním sestavení. Objekt ResourceManager je vyhledá v podadresáři s názvem en-US.

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

Tip

Doporučujeme vždy použít atribut NeutralResourcesLanguageAttribute k definování výchozí kultury vaší aplikace.

Atribut provádí dvě role:

  • Pokud jsou prostředky výchozí jazykové verze vložené do hlavního sestavení aplikace a ResourceManager musí načíst prostředky, které patří do stejné jazykové verze jako výchozí jazyková verze, ResourceManager automaticky použije prostředky umístěné v hlavním sestavení místo hledání satelitního sestavení. Tím se obchází standardní ověřování sestavení, což zlepšuje výkon při vyhledávání prvního načteného prostředku a může snížit velikost pracovní sady. Vizte Balení a nasazování prostředků pro proces ResourceManager, který používá k vyhledávání souborů prostředků.

  • Pokud se prostředky výchozí jazykové verze nacházejí v satelitním sestavení, nikoli v hlavním sestavení aplikace, určuje atribut NeutralResourcesLanguageAttribute jazykovou verzi a adresář, ze kterého může modul runtime načíst prostředky.

Konstruktory

Name Description
NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation)

Inicializuje novou instanci NeutralResourcesLanguageAttribute třídy se zadaným konečným záložním umístěním prostředku.

NeutralResourcesLanguageAttribute(String)

Inicializuje novou instanci NeutralResourcesLanguageAttribute třídy.

Vlastnosti

Name Description
CultureName

Získá název jazykové verze.

Location

Získá umístění pro ResourceManager třídu použít k načtení neutrálních prostředků pomocí záložního procesu prostředku.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Name Description
Equals(Object)

Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro

Viz také