среда, 3 октября 2012 г.

Добавление авторизации на сайт (9). Локализация форм экстранета

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

Однако все эти формы можно локализировать.

Сами формы создаются соответствующими функциями:
  • Composite.Community.Extranet.LoginForm
  • Composite.Community.Extranet.LoginStatus
  • Composite.Community.Extranet.SignupForm
  • Composite.Community.Extranet.ChangePasswordForm
  • Composite.Community.Extranet.SendPasswordForm
И строки в этих функциях берутся из ресурсного файла. Чтобы локализировать формы, вам нужно создать локализированную копию этого ресурсного файла для вашего второго языка и перевести строки, использующиеся в нужных вам формах. Кроме того, после создания этого языкового файла, вам нужно будет его прописать в конфигурации Composite C1 CMS.

Давайте пошагово русифицируем форму логина.


Создание файла локализации


Строки используемые в XSLT-функциях экстранета записаны в этом файле: ~/Composite/InstalledPackages/Localization/Composite.Community.Extranet.en-us.xml

Если вы откроете XSLT-функцию, то увидите, что для локализации используется не совсем стандартный способ: C# код, записанный прямо в функции. Но все, что этот код делает - обращается к файлу локализации текущего языка и получает строку по ее названию.

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

<xsl:value-of select="csharp:Localize('Composite.Community.Extranet', 'LoginForm.Username')" />

В примере выше названием строки для перевода будет LoginForm.Username

Итак,
  1. Создайте в той же папке копию Composite.Community.Extranet.en-us.xml, при этом заменив языковой код английского "en-us" на языковой код русского "ru-ru": Composite.Community.Extranet.ru-ru.xml.
  2. Переведите следующие строки в этом файле:
    1. LoginStatus.ExtranetSecurityNotConfigured: Экстранет не сконфигурирован
    2. LoginForm.LoginFailed: Ошибка входа!
    3. LoginForm.UsernameИмя пользователя:
    4. LoginForm.PasswordПароль:
    5. LoginForm.RememberMeЗапомнить:
    6. LoginForm.LoginВойти
    7. LoginForm.Error.IsGroupsAccessДоступ запрещен! Используйте другой аккаунт для доступа к этому ресурсу!
  3. Сохраните файл.

Регистрация файла локализации в Composite.config


Теперь вам нужно зарегистрировать файл Composite.Community.Extranet.ru-ru.xml в Composite.config:
  1. Откройте для редактирования файл ~/App_Data/Composite/Composite.config.
  2. Найдите элемент Composite.Core.ResourceSystem.Plugins.ResourceProviderConfiguration/ResourceProviderPlugins/add[@name="Composite.Community.Extranet"]/Cultures
  3. Под элементом add[@cultureName="en-US"] добавьте его копию, но в следующих атрибутах укажите такие значения:
    1. cultureName: ru-RU
    2. xmlFile~/Composite/InstalledPackages/localization/Composite.Community.Extranet.ru-ru.xml
  4. Сохраните файл.
У вас должно получиться такое:

<Composite.Core.ResourceSystem.Plugins.ResourceProviderConfiguration>
  <ResourceProviderPlugins>
    <!-- пропущено -->
    <add defaultCultureName="en-US" type="Composite.Plugins.ResourceSystem.XmlStringResourceProvider.XmlStringResourceProvider, Composite" name="Composite.Community.Extranet">
      <Cultures>
        <add cultureName="en-US" xmlFile="~/Composite/InstalledPackages/localization/Composite.Community.Extranet.en-us.xml" monitorFileChanges="true" />
        <add cultureName="ru-RU" xmlFile="~/Composite/InstalledPackages/localization/Composite.Community.Extranet.ru-ru.xml" monitorFileChanges="true" />
      </Cultures>
    </add>
  </ResourceProviderPlugins>
</Composite.Core.ResourceSystem.Plugins.ResourceProviderConfiguration>


Перезапуск сервера


Это последний шаг, чтобы изменения вступили в силу.
  1. Войдите в админку.
  2. Перегрузите сервер (главное меню: Инструменты / Перегрузить сервер).
Имеет также смысл очистить кэш браузера.

Проверка формы


Теперь зайдите на свой сайт на страницу логина на русском языке. Форма должна быть русифицирована.


Следует отметить, что в файле Composite.Community.Extranet.en-us.xml кроме строк, используемых в формах, находятся также строки, используемые в административной части экстранета. Поэтому переведя и их, ваш экстранет станет русским в админке.


Читайте также:
Предыдущие сообщения:

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

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