Локализация отчетов очень актуальная задача в Web среде. Ведь ваш сайт могут посещать люди из разных стран. К счастью, FastReport.Net имеет множество локализаций на разных языках, и мы можем использовать это.
Давайте рассмотрим как это делать на примере MVC приложения.
Прежде всего подключаем библиотеки FastReports к проекту:
Так как я буду размещать отчет на домашней странице сайта, то и код для работы с объектом отчета разместим в HomeController, а именно в методе Index:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public ActionResult Index(string language) { WebReport webReport = new WebReport(); //создаем экземпляр класса WebReport. webReport.Width = Unit.Percentage(100); webReport.Height = Unit.Percentage(100); string report_path = "J:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\"; //директория отчетов System.Data.DataSet dataSet = new System.Data.DataSet(); //создаем набор данных dataSet.ReadXml(report_path + "nwind.xml"); //загружаем xml базу данных webReport.Report.RegisterData(dataSet, "NorthWind"); //регистрируем источник данных в объекте отчета webReport.Report.Load(report_path + "Simple Interactive.frx"); //загружаем отчет в объект WebReport if (language == "ru") { webReport.DesignerLocale = "ru"; webReport.LocalizationFile = "~/Localization/Russian.frl"; } else { webReport.DesignerLocale = "en"; } webReport.DesignReport = true; ViewBag.WebReport = webReport; //передаем веб отчет во View return View(); } |
В метод Index я буду передавать значение из выпадающего списка – один из двух языков, русский или английский.
В первой строке мы создаем экземпляр объекта WebReport. Затем, устанавливаем ширину и высоту веб отчета в 100%.
В переменную report_path записываем путь к папке с отчетом. Создаем набор данных и загружаем в него базу данных xml. После этого регистрируем источник данных в объекте отчета.
Теперь загружаем отчет в объект WebReport. Проверяем значение параметра language. Если он равен “ru”, то устанавливаем локализацию дизайнера и локализацию веб отчета как русская. Иначе будет английская локализация.
Свойство DesignReport включает онлайн дизайнер отчета. То есть отчет, который мы загрузили выше будет открыт сразу в дизайнере. Осталось передать веб отчет во вью.
Вы наверно обратили внимание, что локализация отчета берется из папки Localization. Вы можете найти эту папку с локалями в корневой директории программы FastReport.Net. Перенесите ее в свой проект.
Также, потребуется добавить в проект онлайн дизайнер отчетов. Его необходимо собрать с помощью специального онлайн конструктора в клиентской панели на сайте разработчика www.fast-report.com. После сборки вы получите архив с дизайнером. Перенесите из этого архива папку WebReportDesigner в свой проект.
Теперь перейдем ко View. Редактируем файл Index.cshtml, который расположен в папке Views->Home:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@{ ViewBag.Title = "Home Page"; } @using (Html.BeginForm("Index","Home")) { @Html.DropDownList("Language", new List<SelectListItem>() { new SelectListItem(){ Text= "Russian", Value = "ru"}, new SelectListItem(){ Text= "English", Value = "en"} }, "Select language") <input type="submit" value="Select" /> } @ViewBag.WebReport.GetHtml() |
Здесь мы задаем заголовок страницы. Затем, используем хелпер BeginForm для создания формы. В нем мы указываем контроллер и метод действия. Внутри формы мы создали выпадающий список и заполнили его двумя элементами. Обратите внимание, что имя списка Language такое же как и название параметра в методе Index.
Также, здесь присутствует кнопка, с помощью которой мы принимаем выбранный элемент. И, наконец, отображаем наш отчет с помощью @ViewBag.
В папке Views->Shared нужно отредактировать файл _Layout.cshtml. Добавляем скрипты и стили в заголовок:
1 2 3 4 |
<head> @WebReportGlobals.Scripts() @WebReportGlobals.Styles() </head> |
Опять же в папке Views есть файл Web.config. Добавляем в него пространства имен:
1 2 3 4 |
<namespaces> <add namespace="FastReport" /> <add namespace="FastReport.Web" /> </namespaces> |
В корне проекта есть еще один Web.config. В него добавляем обработчик, сразу после секции modules:
1 2 3 4 5 6 |
<modules> … </modules> <handlers> <add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/> </handlers> |
Теперь можно запустить приложение:
Выберем русский язык и нажмем кнопку Select:
И получаем русскую локаль. Если запустить этот отчет в предварительном просмотре, мы увидим русский язык в панели инструментов объекта WebReport:
Таким образом мы локализовали и отчет. Если же вы хотите локализовать и контент отчета, то советую посмотреть мою статью на эту тему для FastReport.Net: https://www.fastreport.ru/ru/blog/66/show/
Я показал простейшую реализацию локализации с выбором языка из списка. Для автоматизации выбора локали можно определять язык браузера пользователя с помощью свойства Request.UserLanguages.