Локализация сайта с помощью 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