Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
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)>
Doporučení
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í obvyklá sonda sestavení, zlepší se výkon při vyhledávání prvního prostředku, který načítáte, a může se tak snížit pracovní sada. 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.
Aplikace pro Windows 8.x Store
V aplikacích pro Windows 8.x Store, jejichž prostředky jsou načteny a získány pomocí třídy ResourceManager, atribut NeutralResourcesLanguageAttribute definuje neutrální jazykovou verzi, jejíž prostředky se používají v případě neúspěšného pokusu. Nespecifikuje umístění zdrojů. Ve výchozím nastavení ResourceManager používá soubor PRI (Package Resource Index) aplikace k vyhledání prostředků výchozí kultury. Neutrální kultura definovaná atributem NeutralResourcesLanguageAttribute se přidá na konec seznamu jazyků uživatelského rozhraní, aby se simuloval tento efekt.
Pokud načtete a vyvoláte prostředky pomocí třídy Windows RuntimeWindows.ApplicationModel.Resources.ResourceLoader nebo typy v oboru názvů Windows.ApplicationModel.Resources.Core, bude atribut NeutralResourcesLanguageAttribute ignorován.
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