Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота10.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
518.17 Кб
Скачать

Лабораторна робота №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 : файл ресурсів для німецької мови

Можна обмежитися і одним, наприклад, тільки для англійської мови.

Тепер структура проекту виглядає так: