Легко локализуемая альтернатива SQL Server Reporting Services?

Мы сталкиваемся с хорошо задокументированными проблемами с локализацией наших отчетов SSRS.

Кто-нибудь может порекомендовать альтернативу? Предположим, что паритет (или почти так) с функциональностью SSRS, хотя очень многие из наших отчетов будут простыми сетками или графиками с некоторым текстом верхнего/нижнего колонтитула. Нам нужны средства, с помощью которых мы могли бы легко идентифицировать локализуемые строки, хранить их в базе данных, переводить их, а затем генерировать локализованное «определение отчета» во время развертывания. Испанцы видят испанские отчеты, итальянцы видят итальянские отчеты и т. д.

Всем спасибо.


person TomK    schedule 09.05.2011    source источник


Ответы (2)


Существует книга под названием «Рецепты служб отчетов Microsoft SQL Server», в которой есть несколько страниц, посвященных тому, как локализовать отчеты SSRS. Единственным ограничением является то, что текст подсказки параметра по-прежнему может отображать только один язык (поскольку он не допускает выражений); если вы получаете доступ к отчетам через клиент, это не будет проблемой.

Это включает в себя создание пользовательской сборки в VS, у которой есть основная функция, выполняющая перевод (с использованием файлов ресурсов локализации, почти так же, как вы делаете это для приложения).

Затем вы переопределяете OnInit отчета в пользовательском коде, чтобы инициализировать диспетчер ресурсов пользовательской сборки с именем отчета (чтобы он знал, какой набор строк искать, я полагаю), а затем вместо использования текста «Имя:» в вашем отчете, вы можете использовать =Code.my_localizer.GetLocalText("Имя")

person Cody Konior    schedule 02.06.2011
comment
не могли бы вы уточнить, как локализовать текст параметра в .rdl, который используется ASP.NET ReportViewer. ReportViewer нуждается в локализации. - person Pingpong; 22.06.2011

попробуйте добавить какой-нибудь параметр в ssrs и создать такую ​​процедуру:

--TEST
--DECLARE @language int
--SET @language = 2 --1 Italian  --2 Spain

--passing language parameter from ssrs report
IF (@language = 1)
    SELECT englishNameField1 as italianFieldName1, englishNameField2 as italianFieldName2, englishNameField3 as italianFieldName3
    FROM tableName
ELSE
    SELECT englishNameField1 as spanishNameField1, englishNameField2 as spanishNameField2, englishNameField3 as spanishNameField3
    FROM tableName  
WHERE parameterFromSSRS = @language 

в отчет поместите параметр @language с некоторым выражением для UserID (встроенные поля), чтобы получить язык (локализация)

person Tihomir Budic    schedule 10.05.2011
comment
Я думаю, вы описываете, как извлекать локализованные данные из базы данных. Это не проблема. Я имею в виду отдельный текст, используемый в макете отчета. У меня нет изображения, на которое можно было бы сослаться, но... представьте себе отчет о продажах человека. В верхней части метки может быть написано Имя: и во время выполнения имя человека динамически вставляется из базы данных. Но как мне локализовать фразу Name:? Или в нижней части отчета, если в нижнем колонтитуле указано «Страница 1 из 5», как локализовать страницу и из? Или на мой первоначальный вопрос: есть ли альтернатива, которая делает это проще, чем SSRS? - person TomK; 11.05.2011
comment
Я действительно хочу помочь мне, чтобы количество страниц было правильным, вот пример, поместите выражение в текстовое поле в нижнем колонтитуле: =Страна & Globals!PageNumber & od & Globals!TotalPages english: =Page & Globals!PageNumber & of & Globals! Всего страниц - person Tihomir Budic; 12.05.2011
comment
теперь я немного исследую одно из возможных решений: поместите скрытый параметр в отчет и укажите значение по умолчанию: [&Language], затем и после этого создайте локализованные две разные таблицы и отобразите, чтобы разрешить видимость табликса со скрытым выражением: = IIF (Параметры! ReportParameter1.Value = en-Latn-BA, true, false), а время видимости второго Табликса: = IIF (Parameters! ReportParameter1.Value = en-Latn-BA, false, true) - person Tihomir Budic; 12.05.2011