четверг, 29 апреля 2010 г.

SQL, который генерирует XML для отсутствующих русских литералов

В догонку к предыдущему посту хочу поделиться SQL, который генерирует XML для отсутствующих русских литералов nopCommerce, удобный для перевода и последующего импорта без лишних модификаций:
  

set nocount on

declare @x xml

set @x = (select
      eng.ResourceName as "@Name",
      eng.ResourceValue as "comment()",
      ' ' as "Value"
from
      Nop_LocaleStringResource eng
      left join Nop_LocaleStringResource rus
      on eng.ResourceName = rus.ResourceName
            and rus.LanguageId = 8
where
      eng.LanguageId = 7
      and rus.LocaleStringResourceID is null

      and eng.ResourceName not like 'admin%'
order by eng.ResourceName
for xml path('LocaleResource'), root('Language'))

select @x

Пример работы:

<Language>
 <LocaleResource Name="Account.AdminApprovalRequired">
<!--Your account will be activated after approving by administrator.-->
<Value></Value>
</LocaleResource>
<LocaleResource Name="Account.DownloadableProducts">
<!--My Downloadable Products-->
<Value> </Value>
</LocaleResource>
<LocaleResource Name="Account.DownloadableProducts.Download">
 <!--Download-->
<Value> </Value>
</LocaleResource>
</Language>

Всё что надо сделать -  вставить перевод в теги <Value> </Value>   и импортировать полученный XML по процедуре, описанной выше. Английские строки для каждого литерала генерируются в виде комментариев.

ЗЫ:  в скрипте захардкожены Id языков: 7 - English, 8 - Russian. Можно менять и использовать для других локализаций.

Русский language pack 1.5

Добавить поддержку русского языка в nopCommerce 1.5 достаточно легко:
1) Скачать официальный Russian Language Pack для версии nopCommerce 1.3 тут и распаковать его в  любое удобное место.
2) В админской части nopCommerce открыть пункт меню Configuration -> Location -> Languages
3) Добавить новый язык (Add New)

4) Открыть вновь добавленный язык для редактирования (Edit). Выбрать (Choose) файл ResourceStrings.xml из Russian Language Pack и нажать Import.
5) Добавить локализованные шаблоны для системных сообщений (e-mail) Content Management -> Templates -> Message Templates.


Убедитесь что в выпадающем списке выбран русский язык. И отредактируйте те шаблоны, текстовые файлы для которых найдете в папке Russian Language Pack:

Customer.EmailValidationMessage.txt
Customer.PasswordRecovery.txt
Customer.WelcomeMessage.txt
Forums.NewForumPost.txt
Forums.NewForumTopic.txt
OrderCancelled.CustomerNotification.txt
OrderCompleted.CustomerNotification.txt
OrderPlaced.CustomerNotification.txt
OrderPlaced.StoreOwnerNotification.txt
OrderShipped.CustomerNotification.txt
QuantityBelow.StoreOwnerNotification.txt
Service.EmailAFriend.txt




После этих манипуляций в верхней части сайта для выбора будет доступен русский язык.

Такая локализация работает худо-бедно на версиях nopCommerce до 1.5 Но, есть два существенных недостатка:
- Russian language pack для версии 1.3 не содержит локализации некоторых элементов пользовательской части интерфейса;
- он вообще не содержит перевод админской части. Это ведет к тому что в админской части при выбранном русском языке вместо названий элементов интерфейса выводятся системные названия литералов. Терпеть это невозможно, приходится постоянно переключаться в английский язык, а при тестировании пользовательской части переключаться обратно. Это раздражает.

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

Получившийся nopCommerce Russian Language Pack 1.5 можно скачать тут.
missedLocales_13_15.xml - переведенные строки, отсутсвующие в версии 1.3
englishLocalesForRussian_15.xml  - английские строки для админки
ResourceStrings_full.xml - полный набор строк, включающий в себя весь локализованный контент для версии 1.5 + английские строки для админки. Этот файл можно использовать без установки Language Pack 1.3, так как он содержит всё, что содержится в версии 1.3

Процедура установки  nopCommerce Russian Language Pack 1.5 полностью аналогична описанной выше.

вторник, 27 апреля 2010 г.

Проблема логина nopCommerce

nopCommerce имеет встроенный инсталятор, что позволяет развернуть магазин быстро и, обычно, без проблем. В моем случае на локальной машине установка прошла безупречно и приложение заработало как надо. Но при инсталяции у хостинг провайдера flowers.kh.ua выяснилось что не работает логин в систему. После ввода корректных  логина/палоря отображалось то же самое окно входа:

Как выяснилось, проблема была в именованном аутентификационном cookie NOPCOMMERCE.AUTH. Решается переименованием этого cookie. Для этого надо внести изменения в файл web.config:


<authentication mode="Forms">
  <forms name="NOPCOMMERCE.AUTH" loginUrl="~/Login.aspx" ... />
authentication  

понедельник, 26 апреля 2010 г.

Обзор nopCommerce

 Open Source + Microsoft

Долгое время на рынке e-commerce систем отсутствовал продукт, сочетающий в себе три характеристики:
 - функциональность;
- открытый осходный код;
- технологии Microsoft.
 Но не так давно такой продукт появился - это прокет nopCommerce. Как выяснилось nopCommerce имеет всё, что нужно для того, чтобы начать продавать любые товары через интернет. Лично я рассматривал nopCommerce как потенциального кандидата для реализации сайта доставки цветов по Харькову - http://www.flowers.kh.ua Вот ключевые функции nopCommerce, важные для подобного магазина:

Поддержка категорий продуктов

В магазине это различные виды букетов:  свадебные, к торжеству, влюбленным, ...

Вложенные категории

 Без этой функции не получилось бы построить более-менее разумной классификации товаров.

Продукты  могут быть соотнесены более чем с одной категорией

 Для нас это необходимо, так как, скажем один букет может быть в категории «Свадебные букеты» и «Розы» одновременно.

Поддержка нескольких языков

Лучше всего в NopCommerce реализована поддержка английского языка. Возможно добавление других языкой, в том числе русского. Русский language pack для доступен для версии 1.4, но с успехом ставится и на версию 1.5. В этом случае остаются непереведенными некоторые специфические для новой версии элементы интерфейса. Я столкнулся с такой проблемой и в итоге подготовил свой, расширенный language pack, который содержит  переводы  100% пользовательского интерфейса и английские литералы для  админской части сайта (смотрите один из следующих постов).

Мультивалютность

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

Полностью настраиваемый дизайн на основе шаблонов

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

Атрибуты продуктов (цвет, размер).

С помощью этой функции, например, клиенты магазина www.flowers.kh.ua могут выбрать  из растений какого цвета составить букет.

Несколько картинок для одного продукта

Бесспорно полезная функция, позволяющая показать товар с разных сторон.

Поддержка продуктов с вариантами.

 Таким образом была реализована, например,  возможность пользователю выбирать из какого количества цветов будет составлен букет.  Каждый вариант может содержать собственное описание и цену.

Поиск продуктов

Полнотекстовый поиск по каталогу.

Поддержка сопутствующих товаров

Благодаря этому, скажем, мы можем предложить покупателю комнатного растения удобрение или горшок для пересадки.

Поддержка скидок

Скаидки в фиксированном размере или %.

Всесторонняя SEO оптимизация

В частности оптимизация URL для поисковых машин. В этой полезной функцинальности в версии nopCommerce 1.5 присутствует досадная ошибка, которая не позволяет полноценно работать  например с контентом на русском языке. Для её исправления мной был сделан патч. Подробнее в одном из следующих постов.

Поддержка новостей

Комментарии к  новостям. RSS для новостей. Относительно новостей передо мной встала задача интегрирования новостей партнерских сайтов на страницах www.flowers.kh.ua. Для этой цели был разработан компонент, способный читать  публикации RSS и сохранять их в качестве новостей на сайте под управлением nopCommerce. Этому компоненту будет посвящен отдельный пост.

Поддержка блога магазина

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

Доставка

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

Методы оплаты

Поддержка разнообразных методов приема платежей. В настоящее время в моих планах создание модуля для оплаты через Liquipay и Интеркассу.