Visual Basic, .NET, ASP, VBScript
 

   
 
Описание для автора не найдено
 
     
   
 
Рекомендации по разработке библиотеки классов: Ресурсы
Автор: Krzysztof Cwalina, - (http://blogs.msdn.com/kcwalina/)
Перевод: Шатохина Надежда(sna@uneta.org), Ukraine .Net Alliance (http://www.uneta.org/)
28 апреля 2004
Содерджание:
  • Ресурсы
  • Присваивание имен ресурсам
  • Ресурсы

    Ресурсы могут использоваться в библиотеках для хранения сообщений об ошибках, меток и значков. Статья MSDN Ресурсы и локализация в .NET Framework SDK (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptutorials/html/Resources_and_Localization_using_the__NET_Framework_SDK.asp) – хороший источник исходной информации по модели ресурсов .NET Framework.

    Существует две модели, которые могут использовать разработчики при организации своих ресурсов. Первая – поместить все ресурсы, включая нейтральные ресурсы (neutral resources), в сопутствующие сборки, освободив от них основную сборку. Вторая модель – поместить нейтральные ресурсы в основную сборку, а остальные ресурсы – в сопутствующие сборки.

    Комментарий: Первая из описанных выше моделей – Все ресурсы в сопутствующих сборках – не поддерживается в V1.0 и V1.1.

    Не вносите строки в исходный код, храните все строки в ресурсах.

    string errorMsg = “File not found. Please check the path.”;
    

    Этот код трудно локализовать, потому что строка находится в коде, поэтому единственный способ локализовать ее – предоставить исполняемый файл для каждой культуры.

    string errorMsg = resourceManager.GetString(“FileNotFound”);
    

    Этот код проще локализовать, и хранение всех сообщений в ресурсах разъединяет их с исходным кодом. Также создание вспомогательных сборок для ваших локализованных ресурсов упростит поддержку многих языков в будущем.

    Храните все ресурсы, включая нейтральные, в сопутствующих сборках. В этом случае их проще локализовать, проще настраивать и быстрее загружать или скачивать, если это загружаемая библиотека.

    Комментарий: Возможно, в некоторых ситуациях, когда именно ваш нейтральный язык будет использоваться большинством ваших пользователей, надо рассмотреть размещение нейтральных ресурсов в основной сборке.

    Включайте в имена создаваемых сопутствующих сборок слово .resources, как, например, "MyLibrary.resources.dll", при том, что имя основной сборки – "MyLibrary.dll”.

    Не задавайте культуру в основной сборке. Основная сборка используется для кода, и должна содержать только нейтральные ресурсы.

    Чтобы сборка была нейтральной с точки зрения культуры, не вводите атрибут culture в нее и не задавайте культуру в компоновщике при генерировании основной сборки. Например, не делайте ничего из нижеприведенного.

    [assembly:AssemblyCultureAttribute(“en”)]// Задание культуры English
    al /out:MyLibrary.DLL /embed:ErrorStrings.resources /culture:en
    

    Не вставляйте название культуры в имена ресурсов манифеста в основной сборке.

    Основная сборка содержит нейтральные к языкам ресурсы, и эти ресурсы должны быть нейтральными к культуре. Имя ресурса манифеста в основной сборке не должно содержать имени культуры, например, ErrorStrings.en.resources. Именем ресурса манифеста должно быть ErrorStrings.resources. Это можно проконтролировать вручную с помощью инструмента ildasm.exe для проверки имен ресурсов в манифесте сборки.

    Задавайте культуру в сопутствующей сборке.

    Применяйте атрибут NeutralResourcesLanguageAttribute к основной сборке.

    Чтобы использовать атрибут NeutralResourcesLanguageAttribute в основной сборке, язык нейтральных ресурсов которой – “en”, и нейтральные ресурсы находятся в сопутствующей сборке, используйте следующий код.

    [Assembly:NeutralResourcesLangaugeAttribute(“en”,
    UltimateResourceFallbackLocation.ResourceLocation = Satellite)]
    

    Чтобы использовать атрибут NeutralResourcesLanguageAttribute в основной сборке, язык нейтральных ресурсов которой – “en”, и нейтральные ресурсы находятся в основной сборке, используйте следующий код.

    [Assembly:NeutralResourcesLangaugeAttribute(“en”,
    UltimateResourceFallbackLocation.ResourceLocation = MainAssembly)]
    

    Не вводите код в сопутствующие сборки, поскольку они предназначены только для ресурсов.

    Каждая сопутствующая сборка соответствует определенной культуре. У каждого исполняемого файла может быть множество сопутствующих сборок, содержащих ресурсы, локализованные для многих культур. Если вы добавите код в сопутствующие сборки, то получите множество его копий, что увеличивает эксплуатационные затраты.

    Присваивание имен ресурсам

    Поскольку к ресурсам можно обратиться посредством определенных объектов, как к свойствам, рекомендации по присваиванию имен ресурсам аналогичны рекомендациям по свойствам.

    Применяйте в идентификаторах ресурсов Pascal нотацию.

    Предоставляйте описательные, а не краткие идентификаторы. Конечно, по возможности, будьте лаконичными, но не за счет информативности.

    Не используйте ключевые слова основных языков CLR.

    Не используйте синтаксические символы, которые могут иметь специальное значение, такие как арифметические операторы (+, -, /, * или %), или группирующие символы ({, }, (, ), [ или ]).

    Не начинайте имена идентификаторов ресурсов с цифры.

    Применяйте точку для отделения вложенных идентификаторов с четкой иерархией. Например, если вы разрабатываете ресурсы системы меню, их имена могут быть обозначены следующим образом:

    • Menus.FileMenu.Close.Text
    • Menus.FileMenu.Close.Color
    • Menus.FileMenu.SaveAs.Text
    • Menus.HelpMenu.About.Text

    Следуйте такой традиции присваивания имен ресурсам сообщений об ошибках. Идентификатор ресурса должен содержать имя типа исключения плюс через точку короткий идентификатор самого исключения:

    • ArgumentException.IllegalCharacters
    • ArgumentException.InvalidName
    • ArgumentException.FileNameIsMalformed

    Никакая часть настоящей статьи не может быть воспроизведена или передана в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, если на то нет письменного разрешения владельцев авторских прав.

    Материал, изложенный в данной статье, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, сообщество не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим сообщество не несет ответственности за возможные ошибки, связанные с использованием статьи.
     
         

       
       
         
      VBNet рекомендует