NeutralResourcesLanguageAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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) |