Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Ez a cikk kiegészítő megjegyzéseket tartalmaz az API referenciadokumentációjához.
Az asztali alkalmazásokban a NeutralResourcesLanguageAttribute attribútum tájékoztatja az erőforrás-kezelőt az alkalmazás alapértelmezett kultúrájáról és az erőforrások helyéről. Alapértelmezés szerint az erőforrások a fő alkalmazásszerelvénybe vannak ágyazva, és az attribútumot az alábbiak szerint használhatja. Ez az utasítás azt határozza meg, hogy az angol (Egyesült Államok) az alkalmazás alapértelmezett kultúrája.
[assembly: NeutralResourcesLanguage("en-US")]
<Assembly:NeutralResourcesLanguage("en-US")>
A NeutralResourcesLanguageAttribute attribútummal azt is jelezheti, hogy ResourceManager hol találja az alapértelmezett kultúra erőforrásait, ha UltimateResourceFallbackLocation enumerálási értéket ad meg az attribútumutasításban. Ez a leggyakrabban annak jelzésére történik, hogy az erőforrások egy műholdas szerelvényben találhatók. Az alábbi utasítás például azt határozza meg, hogy az angol (Egyesült Államok) az alkalmazás alapértelmezett vagy semleges kultúrája, és hogy az erőforrásai egy műholdas szerelvényben találhatók. A ResourceManager objektum egy en-USnevű alkönyvtárban fogja keresni őket.
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
<Assembly:NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
Tipp
Javasoljuk, hogy mindig a NeutralResourcesLanguageAttribute attribútumot használja az alkalmazás alapértelmezett kultúrájának meghatározásához.
Az attribútum két szerepkört hajt végre:
Ha az alapértelmezett kultúra erőforrásai beágyazva vannak az alkalmazás főszerelvényébe, és ResourceManager le kell kérnie az alapértelmezett kultúrához tartozó erőforrásokat, a ResourceManager automatikusan a főszerelvényben található erőforrásokat használja ahelyett, hogy műholdas szerelvényt keres. Kikerüli a szokásos összeállítási vizsgálatot, javítja az első betöltendő erőforrás keresési teljesítményét, és csökkentheti a használatban lévő memória mennyiségét. Keresse meg a Erőforrások csomagolása és üzembe helyezése című részben a ResourceManager folyamat leírását az erőforrásfájlok keresésének módjáról.
Ha az alapértelmezett kultúra erőforrásai nem a fő alkalmazásszerelvényben, hanem egy műholdas szerelvényben találhatók, a NeutralResourcesLanguageAttribute attribútum határozza meg azt a kultúrát és könyvtárat, amelyből a futtatókörnyezet betöltheti az erőforrásokat.
Windows 8.x Áruházbeli alkalmazások
A Windows 8.x Áruházbeli alkalmazásokban, amelyek erőforrásait a ResourceManager osztály használatával töltik be és kérik le, a NeutralResourcesLanguageAttribute attribútum határozza meg azt a semleges kultúrát, amelynek erőforrásait sikertelen mintavétel esetén használják. Nem adja meg az erőforrások helyét. Alapértelmezés szerint ResourceManager az alkalmazás csomagerőforrás-indexének (PRI) fájljával keresi meg az alapértelmezett kultúra erőforrásait. A NeutralResourcesLanguageAttribute attribútum által definiált semleges kultúra hozzáadódik a felhasználói felület nyelvi listájának végéhez, hogy szimulálja ezt a hatást.
Ha a Windows-futtatókörnyezetiWindows.ApplicationModel.Resources.ResourceLoader osztály vagy a Windows.ApplicationModel.Resources.Core névtér típusával tölt be és kér le erőforrásokat, a rendszer figyelmen kívül hagyja a NeutralResourcesLanguageAttribute attribútumot.
Példák
Az alábbi példa egy egyszerű "Hello World" alkalmazással szemlélteti a NeutralResourcesLanguageAttribute attribútum használatát egy alapértelmezett vagy tartalék kultúra definiálásához. Ehhez külön erőforrásfájlokat kell létrehozni az angol (en), az angol (Egyesült Államok) (en-US) és a francia (Franciaország) (fr-FR) kultúrákhoz. Az alábbiakban egy ExampleResources.txt nevű szövegfájl tartalmát mutatjuk be az angol kultúrához.
# Resources for the default (en) culture.
Greeting=Hello
Az erőforrásfájl alkalmazásbeli használatához a Resource File Generator (Resgen.exe) kell használnia, hogy a fájlt a szövegből (.txt) bináris (.resources) formátumba konvertálja az alábbiak szerint:
resgen ExampleResources.txt
Az alkalmazás lefordításakor a bináris erőforrásfájl a fő alkalmazásszerelvénybe lesz beágyazva.
Az alábbiakban egy ExampleResources.en-US.txt nevű szövegfájl tartalmát mutatjuk be, amely erőforrásokat biztosít az angol (Egyesült Államok) kultúrához.
# Resources for the en-US culture.
Greeting=Hi
A szövegfájl bináris erőforrásfájllá alakítható a parancssori erőforrásfájl-generátor (ResGen.exe) használatával az alábbiak szerint:
resgen ExampleResources.en-US.txt ExampleResources.en-US.resources
A bináris erőforrásfájlt ezután össze kell állítani egy szerelvénybe Assembly Linker (Al.exe) használatával, és az alkalmazáskönyvtár en-US alkönyvtárába kell helyezni az alábbi parancs kiadásával:
al /t:lib /embed:ExampleResources.en-US.resources /culture:en-US /out:en-us\Example.resources.dll
Az alábbiakban egy ExampleResources.fr-FR.txt nevű szövegfájl tartalmát mutatjuk be, amely forrásokat biztosít a francia (Franciaország) kultúrához.
# Resources for the fr-FR culture.
Greeting=Bonjour
A szövegfájl bináris erőforrásfájllá alakítható a parancssori ResGen.exe használatával az alábbiak szerint:
resgen ExampleResources.fr-FR.txt ExampleResources.fr-FR.resources
A bináris erőforrásfájlt ezután az Assembly Linker használatával kell összeállítani egy szerelvénybe, és az alkalmazáskönyvtár fr-FR alkönyvtárába kell helyezni az alábbi parancs kiadásával:
al /t:lib /embed:ExampleResources.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll
Az alábbi példa az aktuális kultúrát beállító végrehajtható kódot, a felhasználó nevének megadását kéri, és egy honosított sztringet jelenít meg.
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
Fordításához használja a következő parancsot a Visual Basicben:
vbc Example.vb /resource:ExampleResources.resources
vagy használja a következő parancsot a C#-ban:
csc Example.cs /resource:ExampleResources.resources