NeutralResourcesLanguageAttribute Class
Assembly: mscorlib (in mscorlib.dll)
[ComVisibleAttribute(true)] [AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple=false)] public sealed class NeutralResourcesLanguageAttribute : Attribute
/** @attribute ComVisibleAttribute(true) */ /** @attribute AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple=false) */ public final class NeutralResourcesLanguageAttribute extends Attribute
ComVisibleAttribute(true) AttributeUsageAttribute(AttributeTargets.Assembly, AllowMultiple=false) public final class NeutralResourcesLanguageAttribute extends Attribute
The NeutralResourcesLanguageAttribute informs the ResourceManager of the language used to write the neutral culture's resources for an assembly, and can also inform the ResourceManager of the assembly to use (either the main assembly or a satellite assembly) to retrieve neutral resources using the resource fallback process. When looking up resources in the same culture as the neutral resources language, the ResourceManager automatically uses the resources located in the main assembly, instead of searching for a satellite assembly with the current user interface culture for the current thread. This will improve lookup performance for the first resource you load, and can reduce your working set.
Note |
|---|
| Apply this attribute to your main assembly, passing it the name of the neutral language that will work with your main assembly. Optionally, you can pass a member of the UltimateResourceFallbackLocation enumeration to indicate the location from which to retrieve fallback resources. Using this attribute is strongly recommended. |
The following example demonstrates the use of the NeutralResourcesLanguageAttribute class.
using System; using System.Resources; using System.Globalization; using System.Threading; [assembly: NeutralResourcesLanguageAttribute("de" , UltimateResourceFallbackLocation.Satellite)] public class Demo { public static void Main(string[] args) { // If a specific culture is passed in through the command line, use that -- otherwise // just use the current ui culture String strCulture = ""; if (args.Length == 1) { strCulture = args[0]; } if (strCulture != "") { try { Thread.CurrentThread.CurrentUICulture = new CultureInfo(strCulture); } catch (ArgumentException e){ Console.WriteLine(e.Message, "Bad command-line argument"); } } else Console.WriteLine("Current culture is: {0}", CultureInfo.CurrentUICulture.ToString()); ResourceManager rm; try { rm = new ResourceManager("MyStrings", typeof(Demo).Assembly); NeutralResourcesLanguageAttribute attr = new NeutralResourcesLanguageAttribute("de", UltimateResourceFallbackLocation.Satellite); Console.WriteLine("Neutral language = " + rm.GetString("Language") + ", Fallback location = " + attr.Location.ToString() + ", Fallback culture = " + attr.CultureName.ToString()); Console.WriteLine(rm.GetString("MSG")); } catch (MissingSatelliteAssemblyException e){ Console.WriteLine(e.Message, "Unable to locate satellite Assembly"); } } }
import System.*;
import System.Resources.*;
import System.Globalization.*;
import System.Threading.*;
/** @assembly NeutralResourcesLanguageAttribute("de",
UltimateResourceFallbackLocation.Satellite)
*/
public class Demo
{
public static void main(String[] args)
{
// If a specific culture is passed in through the command line, use
// that -- otherwise just use the current ui culture
String strCulture = "";
if (args.get_Length() == 1) {
strCulture = args[0];
}
if (!(strCulture.Equals(""))) {
try {
System.Threading.Thread.get_CurrentThread().
set_CurrentUICulture(new CultureInfo(strCulture));
}
catch (ArgumentException e) {
Console.WriteLine(e.get_Message(), "Bad command-line argument");
}
}
else {
Console.WriteLine("Current culture is: {0}",
CultureInfo.get_CurrentUICulture().ToString());
}
ResourceManager rm;
try {
rm = new ResourceManager("MyStrings",
Demo.class.ToType().get_Assembly());
NeutralResourcesLanguageAttribute attr =
new NeutralResourcesLanguageAttribute("de",
UltimateResourceFallbackLocation.Satellite);
Console.WriteLine("Neutral language = "
+ rm.GetString("Language") + ", Fallback location = "
+ attr.get_Location().ToString() + ", Fallback culture = "
+ attr.get_CultureName().ToString());
Console.WriteLine(rm.GetString("MSG"));
}
catch (MissingSatelliteAssemblyException e) {
Console.WriteLine(e.get_Message(),
"Unable to locate satellite Assembly");
}
} //main
} //Demo
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.
Note