четверг, 24 февраля 2011 г.

Шаблоны: (3) Элементы веб-форм и локализации

Теперь давайте рассмотрим элементы, которые не попали в наш шаблон по умолчанию.


xmlns:asp="http://www.composite.net/ns/asp.net/controls"

Элемент <asp:form /> нужно включать в шаблон, если вы хотите использовать в шаблоне или на странице элементы управления ASP.NET. Размещать элементы управления нужно внутри элемента <asp:form />.

<asp:form xmlns:asp="http://www.composite.net/ns/asp.net/controls">
  <f:function name="Composite.AspNet.LoadUserControl" xmlns:f="http://www.composite.net/ns/function/1.0">
    <f:param name="Path" value="~/UserControls/Calendar.ascx" />
  </f:function>
</asp:form>

Внутри элемента <asp:form /> можно использовать еще один элемент из этого же пространства имен - заполнитель (placeholder), только уже для ASP.NET: <asp:placeholder />.

Размещая это элемент в шаблоне с уникальным идентификатором (id), можно программно заменять его на нужный контент при выполнении кода на странице. Для того, чтобы найти это заполнитель по идентификатору, можно использовать .NET-овский метод System.Web.UI.Page.FindControl.


“xmlns:lang="http://www.composite.net/ns/localization/1.0"

C1 поддерживает локализацию веб-сайта. Имея сайт на одном языке, его можно локализовать, то есть создать копию, для другого языка. Так как шаблоны страниц обычно используются для страниц всех сайтов (на всех используемых языках), то может возникнуть необходимость как-то разграничить содержимое/ресурсы для разных языков.

Для этого можно использовать элемент <lang:switch>. Внутри этого элемента используется нужное количество элементов <lang:when /> с указанием буквенного кода нужной культуры (culture), например, ru-RU.

<lang:switch>
  <lang:when culture="ru-RU">
    <img src="~/ru-logo.png" title="Russian logo" />
  </lang:when>
  <lang:when culture="en-US">
    <img src="~/us-logo.png" title="US logo" />
  </lang:when>
  <lang:default>
    Логотип отсутствует
  </lang:default>
</lang:switch>

С помощью элемента <lang:default/> можно указать, какой контент/ресурс использовать, если будет выбран язык, не указанный при помощи элементов <lang:when />.

Для текстовых строк имеет смысл использовать стандартные .NET-овские ресурсные файлы *.resx в корневой папке \App_GlobalResource, используя элемент <lang:string/> и специальный синтаксис для обращения к строке в ресурсном файле.

(Использование ресурсных файлов для локализации это отдельная тема. В двух словах именно для шаблонов возможно нужно знать следующее.


Можно все строки держать в одном большом ресурсном файле или использовать разные ресурсные файлы для разных компонентов.


Для языка по умолчанию ресурсные файлы не должны содержать суффикс-код культуры в своем названии: напр., SimpleTemplate.resx (ресурсный файл для строк из шаблона Simple для языка по умолчанию). Но для строк на языке локализации нужно указывать код культуры в виде суффикса: напр., SimpleTemplate.uk-ua.resx (ресурсный файл для строк из шаблона Simple для украинского языка).


Обычно создается копия ресурсного файла языка по умолчанию для языка локализации (с нужным суффиксом-кодом) и значения строк переводятся. C1 автоматически загружает нужное значение из нужного ресурсного файла, учитывая язык сайта.


Строки должны хранится в стандартном формате ресурсного файла *.resx.)

Вызывать строку из ресурсного файла следует, указав в атрибуте key элемента <lang:string/>: ”Resource, Resources.[название ресурсного файла без расширения и кода культуры].[ресурсное название строки]”.

<lang:string key=”Resource, Resources.SimpleTemplate.StringName” />


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

Теперь нам осталось рассмотреть использование шаблонов при редактировании страниц.


Продолжение следует...

Дополнительная информация по теме:

Комментариев нет:

Отправить комментарий