ПредишенСледващото

Ресурси, като изображения и низови таблици могат да бъдат поставени в ресурсни файлове или подчинен сглобка. Тези ресурси могат да бъдат много полезни при локализиране на приложения и .NET се предлага вградена поддръжка за търсенето на локализирани ресурси.

Преди да разгледаме как да се използват средства за локализиране на приложението, първо да се запознаете с методите за създаване и четене на ресурси, без да отчита езиковите аспекти.

Създаване на ресурсен файл

Файловете с ресурси могат да се съхраняват в продължение на елементи като изображения и таблици на реда. Като ресурсен файл може да бъде обикновен текстов файл или файл с .resx разширение, която използва XML. Тази статия се разглежда първо версия на обикновен текстов файл.

Таблицата с ресурс, включващ редове могат да бъдат генерирани в обикновен текстов файл. В този файл просто направи превключвателя за записване на час. До ключ разбира име, което може да се използва в програмата за получаване на съответните стойности. Ключовете и ценностите право да използват пространства.

По-долу е пример за създаване на прости редове таблица:

полезност Resgen.exe

За направата на файлови ресурси TXT на ***., Можете да използвате специални файлове поколение полезност Resgen.exe ресурси. Например, въведете следната команда:

да доведе до файла за създаване MyResources.resources. Генерирани от тази програма ресурс файл по-долу можете да добавите събранието като външен файл, или поставете в DLL или EXE сглобяване. Resgen полезност също така поддържа възможността за създаване на ресурсни файлове в XML формат с разширение .resX. Той се прилага много просто:

Тази команда ще създаде ресурс XML-файл с име MyResources.resX.

Resgen помощна програма поддържа силно въвели ресурси. Силно написали ресурс е представен като един клас, който има достъп до ресурсите. За да създадете този клас в помощно средства предлага опция Resgen / ул:

След като опции / ул следва да се уточни език, пространство от имена, името на класа и името на файла източник, и в този ред.

Възможност за добавяне на изображения Resgen полезност не поддържа. Примери .NET Framework SDK има например ResXGen с уроци. В ResXGen можете да се обърнете към изображението в .resX файл. Добавете изображения могат също програмно с помощта на класове или ResourceWriter ResXResourceWriter, както ще бъде показано по-долу.

клас ResourceWriter

Вместо да използвате инструмента, за да се създаде Resgen файлове ресурси, можете да напишете специален, която му позволява да се направи програмата. Клас ResourceWriter на космически System.Resources име се използва за създаване на двоични файлове ресурси и ResXResourceWriter клас - за създаване на XML-базирани файлове ресурси. И двете от тези класове подкрепя възможността за добавяне на изображения, или всякакви други сериализирани обекти. Ако заявленията ResXResourceWriter клас трябва да се отнасят до System.Windows.Forms за монтаж.

Следният код пример показва как да се създаде обект по име ResXResourceWriter RW в Demo.resx файл. След създаването на инстанция използване ResXResourceWriter клас метод AddResource () може да започне да добавите набор от ресурси, на обща стойност до 2 Gbytes. Първият аргумент в AddResource () ви позволява да укажете името на ресурса, а вторият - стойност. изображение на ресурсите може да се добави чрез използването на клас Изображение инстанция. За да можете да използвате клас изображение, трябва да се направи препратка към System.Drawing на монтаж, а също така добави, използвайки директива, за да отворите System.Drawing пространство от имена.

Тук обект на изображението се създава чрез отваряне logo.gif файл, така че трябва да или да копирате файла с изображението в изпълнима програма, или да укажете пълния път до него като аргумент ImageToFile (). използване изявление се посочва, че ресурсът на изображението автоматично да се унищожават в края на използване на блока.

По-късно през ResXResourceWriter обект добавя обикновен низ ресурси. В края на метод Close (клас ResXResourceWriter) за автоматично извиква ResXResourceWriter.Generate () за записи за ресурси в Demo.resx файл:

Стартирането на тази малка програма ще доведе до създаването на Demo.resx изображение ресурс файл logo.gif вътре.

Използване на файлове с ресурси

Добави в проекта файла ресурс сте създали по-рано Demo.resx, открит през контекстното меню Solution Explorer и изберете елемента Добави -> Добавяне на съществуващ елемент (Add -> Добавяне на съществуващ елемент). По подразбиране имот Build действие (Action за оформление) на този ресурс е настроен на Embedded ресурс (Embedded ресурс), което показва, че ресурсът трябва да бъде вградена в изходния събрание.

По-късно в настройките на проекта (чрез избор на приложението -> информация събрание (Application -> Информация за монтажа)) следва да се определи като неутрален език параметър стойност (неутрален език) от основния език:

Нетните, ресурси локализирани приложения

Промяна на стойността на този параметър ще доведе до добавянето на assemblyinfo.cs файл с атрибути [NeutralResourceLanguageAttribute]. както е показано по-долу:

Задаване на стойност за този атрибут ResourceManager повишаване на производителността, тъй като това му позволява да бързо да намерите средства за ен-САЩ, както и да ги използват като опцията по подразбиране. Този атрибут можете да определите и поставяне на ресурса по подразбиране чрез използването на втори параметър в конструктора. Тъй като можете да определите с помощта на трансфер UltimateResourceFallbackLocation на, че той трябва да бъде поставен в основната събрание (стойност MainAssembly) или в обект (Satellite стойност) на.

За да получите достъп до вградения ресурс, използван ResourceManager клас, който се намира в имената на космически System.Resources. Конструкторът на този клас като аргумент, вие може да премине на името на събранието, което съдържа ресурсите.

В този пример средствата са вградени в изпълним сглобяването, обаче във втория аргумент на конструктора на резултата от Assembly.GetExecutingAssembly на метод () трябва да бъдат предадени. Първият аргумент предава на името на основния ресурс, състоящ се от името на пространството от имена и името на файла на ресурса, но без да се разширява ресурси. Както е показано по-горе, това име може да се показва с помощта ildasm комунални услуги и просто да го премахнете от разширяването на ресурси. Името може да се получи по програмен използва метод GetManifestResourceNames (System.Reflection.Assembly клас):

пространство от System.Resources

Нека накратко мине през всички класове, които се съдържат в имената на космически System.Resources и ви позволяват да работите с ресурсите.

Тя може да се използва за получаване на средствата, свързани с текущата култура на сглобяване или ресурсни файлове. С ResourceManager да получите един куп средства за определена култура като например ResourceSet.

Тя ви позволява да представлява набор от ресурси за дадена култура. Когато създавате копие на това произвежда ResourceSet изброяване клас, осъзнавайки IResourceReader интерфейс и магазини на всички ресурси в HashTable.

ResourceSet се използва да се изброят ресурси. ResourceReader клас изпълнява този интерфейс.

Използва се за създаване на ресурсен файл и внедрява IResourceWriter интерфейс.

Класове ResXResourceSet, ResXResourceReader и ResXResourceWriter

Подобно на класовете ResourceSet и ResourceReader ResourceWriter, но не служи за създаване на двоичен файл ресурс, а не .resx XML-файлове. Вместо да вградите ресурс в XML файл, те позволяват да добавите линк към него, използвайки ResXFileRef.

пространство от System.Resources.Tools

Той съдържа клас StronglyTypedResourceBuilder, който може да се използва за създаване на клас на ресурс.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!