
- •Мультимовний сайт і локалізація
- •Структура мультимовного сайту в asp.Net mvc
- •Логіка мультимовного сайту. Фільтр локалізації
- •Додавання бази даних на хостинг somee.Com
- •Створення бази даних на somee.Com
- •Генерація скрипта додавання даних в бд
- •Додавання файлів програми на somee.Com
- •Майстер публікації додатку в Visual Studio 2012
- •Завантаження сайту на somee.Com
Лабораторна робота №10
Мультимовний сайт і локалізація
Введення в мультимовні сайти. Ресурси
Завдяки мультимовності сайт стає доступним набагато більшому числу потенційних користувачів, та обіцяє великі вигоди, наприклад, збільшення доходу, збільшення аудиторії і т.д.
Перед створенням мультимовного сайту треба визначитися з концепцією.
Ми можемо зробити для кожної окремої культури своє представлення і потім в залежності від обраної культури рендерити його у відповідь клієнту.
Другий варіант припускає використання ресурсів, коли у нас одне представлення для всіх культур, і залежно від обраної культури довантажуються визначені для неї ресурси.
Використовуємо другий варіант. Створимо проект по типу Basic (MultilingualSite). І першим ділом створимо модель. Припустимо, наш додаток буде працювати зі списком користувачів. Додамо в папку Models модель Person:
У даному випадку для спрощення прикладу використані всього три поля. До двом застосовані атрибути Required і Display. Тільки в даному випадку атрибут Required вказує на тип ресурсу, який буде застосовуватися (ErrorMessageResourceType) і ім'я ресурсу (ErrorMessageResourceName).
Визначення
ErrorMessageResourceType = typeof(Resources.Resource),
ErrorMessageResourceName = "CountryRequired"
говорить про те, що у нас є деякий простір імен ресурсів Resources, в ньому визначено тип Resource. А ім'я ресурсу представляє вже конкретний ресурс, значення якого буде використовуватися як повідомлення про помилку при валідації. Те ж саме можна прописати і для інших атрибутів валідації, наприклад, для атрибута StringLength.
Поки у нас немає ніяких ресурсів, але зараз ми їх створимо.
Те ж саме характерно і для атрибута Display, тільки в даному випадку його властивість Name вказує на ім'я ресурсу, який буде використовуватися в якості назви для відповідного поля.
Також створимо небудь простенький контекст даних PersonContext:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MultilingualSite.Models
{
public class PersonContext : DbContext
{
public DbSet<Person> Persons { get; set; }
}
}
Тепер створимо ресурси. Ресурси можуть містити не тільки повідомлення про помилки валідації, але й інші дані, наприклад, заголовки сторінок і т.д.
Створимо в проекті папку Resources. У цю папку додамо файл ресурсів Resource.resx. Це буде файл ресурсів за замовчуванням, який буде використовуватися для російської мови:
Додавання ресурсу в проект ASP.NET MVC
Перед використанням ресурсів вкажемо деякі їх налаштування для кожного ресурсу у вікні Властивостей ( Propertires ) внизу під вікном проекту:
Параметри ресурсів в ASP.NET MVC
Тут нам треба встановити наступні параметри:
Build Action - в якості типу побудови виберемо значення Embedded Resource
Custom Tool - як інструмент створення ресурсів введемо в поле PublicResXFileCodeGenerator
Custom Tool Namespace - в якості простору імен вкажемо Resources. У даному випадку важливо вказати саме той простір імен, який ми збираємося використовувати. Використовуючи атрибути при визначенні моделі, ми вказали ErrorMessageResourceType = typeof (Resources.Resource), де в якості простору імен виступає Resources.
Тепер перейдемо до заповнення самих ресурсів. Натиснемо на файл Resource.resx і у таблицю, що відкрилася внесемо назви ресурсів та їх значення:
Таблиця ресурсів
Це і є весь набір використовуваних ресурсів, і ми можемо визначити безліч різних ресурсів. Подібний набір треба вказати і у інших ресурсів, тільки вказавши значення на відповідній мові. Так, на рисунку вказано ресурс NameRequired. При визначенні моделі в атрибуті вказано, що саме цей ресурс буде використовуватися як повідомлення про помилку валідації.
Крім того, ми можемо в коді представлень звернутися до ресурсів, наприклад: @Resources.Resource.NameRequired. Тут Resources - простір імен, Resource - тип ресурсу (утворюється від назви файлу ресурсів), а NameRequired - ім'я. У такому ж форматі можна використовувати й інші ресурси.
Тепер додамо ресурси для інших культур. Для цього можна скопіювати файл Resource.resx і вставити його копію в папку Resources. Я зробив дві копії файлу і перейменував їх таким чином:
Resource.en.resx : файл ресурсів для англійської мови
Resource.de.resx : файл ресурсів для німецької мови
Можна обмежитися і одним, наприклад, тільки для англійської мови.
Тепер структура проекту виглядає так: