Локализация отчета

Обсуждение Stimulsoft Reports.NET
Ответить
res562
Сообщения: 28
Зарегистрирован: 26 июл 2010, 13:59

Локализация отчета

Сообщение res562 »

в отчете в globzlization strings храню два языка русский и английский.
Язык в программе меняю:

Thread.CurrentThread.CurrentCulture = _currentCulture;
Thread.CurrentThread.CurrentUICulture = _currentCulture;

При просмотре отчета из файла .mrt язык меняется, при просмотре сомпилированного в сборку отчета - язык не меняется.
Как поменять язык в скомпилированном отчете?
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Локализация отчета

Сообщение Aleksey »

Здравствуйте,

Globzlization strings применяются до компиляции, поэтому для шаблона отчета (.mrt) это работает, а для скомпилированного в сборку отчета нет.
Как вариант, для скомпилированных отчетов, вы можете сохранить 2 варианта с использованием разных языков.

Спасибо.
res562
Сообщения: 28
Зарегистрирован: 26 июл 2010, 13:59

Локализация отчета

Сообщение res562 »

Как скомпилировать отчеты для всех языков, заданных в шаблоне, если заранее не известно их количество. Сейчас использую метод Compile, но у него нельзя задать культуру.
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Локализация отчета

Сообщение Aleksey »

Здравствуйте,

Посмотрите пример проекта в приложенном файле.

Сообщите, если понадобится дополнительная помощь.
Спасибо.
Вложения
GlobalizedReport.zip
(69.31 КБ) 167 скачиваний
res562
Сообщения: 28
Зарегистрирован: 26 июл 2010, 13:59

Локализация отчета

Сообщение res562 »

Вопрос в том, как скомпилировать несколько сборок с разными языками из одного шаблона отчета.

Какой надо вызвать метод, чтобы обновить язык?

Код ниже выводит все на одном языке:

Код: Выделить всё

for (int i = 0; i < _report.GlobalizationStrings.Count; i++)
                {
                    _report.GlobalizationStrings.LocalizeReport(_report.GlobalizationStrings[i].CultureName);
                    _report.Show();
                }

Код: Выделить всё

for (int i = 0; i < _report.GlobalizationStrings.Count; i++)
                {
                      Thread.CurrentThread.CurrentCulture = new CultureInfo(_report.GlobalizationStrings[i].CultureName);
                      Thread.CurrentThread.CurrentUICulture = new CultureInfo(_report.GlobalizationStrings[i].CultureName);
                    _report.Show();
                }
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Локализация отчета

Сообщение Aleksey »

Здравствуйте,

Вы можете использовать следующий код для смены языка:

Код: Выделить всё

StiReport report = new StiReport();
report.Load(...);
string cultureName = "en-Gb";
//string cultureName = "ru-Ru";
//string cultureName = "ar-SA";
CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName, false);
report.Compile();
report.Render();
report.Show();

System.Threading.Thread.CurrentThread.CurrentCulture = ci;
Спасибо.
Ответить