Локалізація сайту за допомогою SQLite

локализация сайтаSQLite є компактною вбудовуваною реляційною базою даних з відкритим початковим кодом. У 2005 році проект удостоївся нагороди Google - O'Reilly Open Source Awards.

І це цілком заслужено, оскільки не виникає жодних проблем з інтеграцією бази і вашим проектом. Що ж означає вбудовувана база даних?

SQLite не використовує стандартну для інших баз парадигму клієнт-сервер, тобто її движок не окремо працюючий процес, з яким взаємодіє програма, а є бібліотекою, з якою зв'язується ваше застосування, тобто є частиною програми.

У результаті, протокол обміну це виклики функцій бібліотеки SQLite(API). Цей підхід значно знижує накладні витрати і спрощує написання додатка. Визначення, індекси, таблиці і дані SQLite зберігає у базі даних, що є звичайним файлом на тому комп'ютері, де виконується програма. Якщо двома словами, то уся простота реалізації грунтована на блокуванні бази, перш ніж почнеться транзакція запису.

Отже, приступимо до роботи з базою даних SQLite

Припустимо, у вас є сайт з програмним забезпеченням. Кожна програма, точніше сторінка з програмою має свій опис, наприклад, тільки російською мовою. Багатомовний сайт, унікальні тексти і грамотне просування дозволять значно збільшити відвідуваність ресурсу. Розглянемо приклад на MVC 3.

Модел для програми:

public class Program
{
    public string title { get; set;}
    public string description { get; set;}
    public string size { get; set;}
    public string version { get; set;}    
}

Створимо нову таблицю ProgramTable із структурою lang(TEXT), title(TEXT), description(TEXT), size(TEXT), version(TEXT). Параметр lang і відповідатиме за локалізацію. Створіть декілька записів в таблиці для тесту. До речі, для роботи з базами SQLite ми рекомендуємо використати безкоштовне і дуже зручне розширення для Mozilla Firefox - Sqlite Manager. Отриману базу треба покласти в теку App_Data і додати запис в Web.config:

<connectionStrings>
  <add name="SqliteProgramsDb" connectionString="Data Source=|DataDirectory|ProgramTable.sqlite;Version=3;"/>
</connectionStrings>

У нашому базовому контроллері HomeController створіть новий метод і представлення ProgramList.

public ActionResult ProgramList(string lang)
{
    PageModel pageModel = new PageModel(lang);
    ViewData.Model = pageModel;
    return View();
}

Тепер для отримання з бази даних з вашим програмним забезпеченням нам знадобиться модель PageModel, враховуючи переклад.

public class PageModel
{
    public List<Program> m_list = new List<
Program>();
    
    public PageModel(string lang)
    {
        string connStr = ConfigurationManager.ConnectionStrings["SqliteProgramsDb"].ToString();
        SQLiteConnection conn = new SQLiteConnection(connStr);
        try
        {
            conn.Open();
        }
        catch (Exception ex)
        {        
        }
        
        SQLiteCommand command = new SQLiteCommand("SELECT * FROM ProgramTable WHERE lang=\"" + lang + "\"", conn);
        SQLiteDataReader reader = command.ExecuteReader();
        
        if (reader != null && reader.HasRows)
        {
            while (reader.Read())
            {
                
Program item = new Program();
                item.title = reader["title"].ToString();
                item.description = reader["description"].ToString();
                item.size = reader["
size "].ToString();
                item.version = reader["
version "].ToString();
                m_list.Add(review);
            }
        }
        conn.Close();
    }
}

Все, ми отримали бажаний список елементів з бази, тепер можна їх обробити в уявленні будь-яким зручним способом.

ProgramList.cshtml:

@model MyMvcProject.Models.PageModel
@{
    ViewBag.Title = "Наше программное обеспечение";
}

@for (int i = 0; i < Model.m_list.Count; i++)
{

// Ваш код

}

Цей невеликий приклад показує неймовірну зручність роботи з базами SQLite. Подібним способом можна локализовывать Layout- файли, якщо ви не хочете робити додаткові запити до бази і повторювати програмний код.

У наступних статтях ми постараємося викласти принцип локалізації додатків на C#. Вступайте в наші групи і будьте в курсі новин.

Author: www.FreeSmartSoft.com