NeutralResourcesLanguageAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сообщает диспетчеру ресурсов язык и региональные параметры по умолчанию приложения. Этот класс не наследуется.
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
- Наследование
- Атрибуты
Примеры
В следующем примере используется простое приложение «Hello World» для иллюстрации использования атрибута NeutralResourcesLanguageAttribute для определения культуры по умолчанию или резервной культуры. Для этого требуется создание отдельных файлов ресурсов для языков и региональных параметров английского (en), английского (США) (en-US) и французского (Франция) (fr-FR) языка и региональных параметров. Ниже показано содержимое текстового файла с именем ExampleResources.txt для англоязычной культуры.
# Resources for the default (en) culture.
Greeting=Hello
Чтобы использовать файл ресурсов в приложении, необходимо использовать генератор файлов ресурсов (Resgen.exe) для преобразования файла из его текстового формата (.txt) в двоичный (.resources) формат следующим образом:
resgen ExampleResources.txt
При компиляции приложения файл двоичного ресурса будет внедрен в основную сборку приложения.
Ниже показано содержимое текстового файла с именем ExampleResources.en-US.txt, предоставляющего ресурсы для языковых и культурных стандартов английского языка (США).
# Resources for the en-US culture.
Greeting=Hi
Текстовый файл можно преобразовать в файл двоичных ресурсов с помощью генератора файлов ресурсов (ResGen.exe) в командной строке следующим образом:
resgen ExampleResources.en-US.txt ExampleResources.en-US.resources
Затем файл двоичного ресурса должен быть скомпилирован в сборку с помощью компоновщика сборок (Al.exe) и помещен в подкаталог en-US каталога приложения, выполнив следующую команду:
al /t:lib /embed:ExampleResources.en-US.resources /culture:en-US /out:en-us\Example.resources.dll
Ниже показано содержимое текстового файла с именем ExampleResources.fr-FR.txt, который предоставляет ресурсы для французской культуры (Франция).
# Resources for the fr-FR culture.
Greeting=Bonjour
Текстовый файл можно преобразовать в двоичный файл ресурсов с помощью ResGen.exe в командной строке следующим образом:
resgen ExampleResources.fr-FR.txt ExampleResources.fr-FR.resources
Затем файл двоичных ресурсов должен быть скомпилирован в сборку с помощью компоновщика сборок и помещен в подкаталог fr-FR каталога приложения, выполнив следующую команду:
al /t:lib /embed:ExampleResources.fr-FR.resources /culture:fr-FR /out:fr-FR\Example.resources.dll
В следующем примере представлен исполняемый код, который задает текущий язык и региональные параметры, запрашивает имя пользователя и отображает локализованную строку.
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
Его можно скомпилировать с помощью следующей команды в Visual Basic:
vbc Example.vb /resource:ExampleResources.resources
или с помощью следующей команды в C#:
csc Example.cs /resource:ExampleResources.resources
Комментарии
В настольных приложениях атрибут NeutralResourcesLanguageAttribute сообщает диспетчеру ресурсов о культуре по умолчанию приложения и расположении его ресурсов. По умолчанию ресурсы внедрены в основную сборку приложения, и атрибут можно использовать следующим образом. Это утверждение указывает, что английская (США) локализация является культурой по умолчанию приложения.
[assembly: NeutralResourcesLanguage("en-US")]
<Assembly:NeutralResourcesLanguage("en-US")>
Можно также использовать NeutralResourcesLanguageAttribute атрибут, чтобы указать, где ResourceManager можно найти ресурсы культуры по умолчанию, указав UltimateResourceFallbackLocation значение перечисления в инструкции атрибута. Это чаще всего делается, чтобы указать, что ресурсы находятся в вспомогательной сборке. Например, следующее утверждение указывает, что английский (Соединенные Штаты) является языком по умолчанию или нейтральной культурой приложения и что его ресурсы находятся во вспомогательной сборке. Объект ResourceManager будет искать их в подкаталоге с именем en-US.
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
<Assembly:NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)>
Tip
Мы рекомендуем всегда использовать атрибут NeutralResourcesLanguageAttribute, чтобы задать культуру по умолчанию для вашего приложения.
Атрибут выполняет две роли:
Если ресурсы языка и региональных параметров по умолчанию внедрены в основную сборку приложения, и ResourceManager должен извлекать ресурсы, принадлежащие тому же языку и региональным параметрам, что и язык и региональные параметры по умолчанию, ResourceManager автоматически использует ресурсы, расположенные в основной сборке, вместо поиска во вспомогательной сборке. Это позволяет обойти обычную проверку сборки, улучшить производительность поиска для первого загружаемого ресурса, а также сократить рабочий набор. См. Упаковка и развертывание ресурсов, чтобы узнать, какой процесс ResourceManager используется для поиска файлов ресурсов.
Если ресурсы культуры по умолчанию расположены в сателлитной сборке, а не в основной сборке приложения, атрибут NeutralResourcesLanguageAttribute указывает культуру и каталог, из которого среда выполнения может загружать ресурсы.
Конструкторы
| Имя | Описание |
|---|---|
| NeutralResourcesLanguageAttribute(String, UltimateResourceFallbackLocation) |
Инициализирует новый экземпляр NeutralResourcesLanguageAttribute класса с указанным конечным резервным расположением ресурса. |
| NeutralResourcesLanguageAttribute(String) |
Инициализирует новый экземпляр класса NeutralResourcesLanguageAttribute. |
Свойства
| Имя | Описание |
|---|---|
| CultureName |
Возвращает имя языка и региональных параметров. |
| Location |
Возвращает расположение для класса, используемого ResourceManager для получения нейтральных ресурсов с помощью резервного процесса ресурса. |
| TypeId |
При реализации в производном классе получает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute) |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| GetHashCode() |
Возвращает хэш-код для этого экземпляра. (Унаследовано от Attribute) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IsDefaultAttribute() |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
| Match(Object) |
При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса. (Унаследовано от Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к свойствам и методам, предоставляемым объектом. (Унаследовано от Attribute) |