是否有解决方案在SSRS 2008 R2或2012中本地化“参数/提示”?

时间:2013-04-17 17:09:41

标签: sql-server-2008 reporting-services ssrs-2008 ssrs-2012

我现在正在使用SQL Server 2008 R2。

我的网站完全按照原样显示报告,包括参数出现的容器(客户更喜欢这种方式)。

但是,我的网站解决方案包括本地化(葡萄牙语,英语,西班牙语)。

我尝试通过为每种语言创建一个参数来翻译参数,然后根据所选语言显示它们。它在SSRS 2008中不起作用。因为我不知道如何找到提示符的可见性属性。

有没有人知道解决方案......或者SQL Server 2012是否提供了翻译参数提示或条件可见性的解决方案?

感谢。

3 个答案:

答案 0 :(得分:0)

我到目前为止找到的唯一解决方案(SSRS 2008,2008R2,2010,2012)是打破DRY诫命,并使用语言代码复制报告作为报告名称的一部分(例如MyReport_sp.rdl,MyReport_de。 rdl等)然后在客户端请求和SSRS实例之间放置一个Web服务。然后,Web服务必须根据随客户端请求传递的“Culture”参数将请求转发到正确的报告。

这不是一个好的解决方案,但至少文化参数也用于本地化报告的其余部分。我们仍然希望在未来的某个日期,MS将添加快速的本地化,我们可以将报告重命名为MyReport.rdl,并让所有内容实际上都已本地化。嗯,这个概念......

答案 1 :(得分:0)

没有...
根据connect.microsoft.com,在SSRS 2005发布后已经请求了这个功能,虽然它在微软的TODO列表中,程序员的时间从未被分配过,因此在2012年,SSRS仍然没有能力这样做。

尽管可以(通过很多努力)翻译其他所有内容,但无法翻译参数提示。

也没有条件可见性,参数的可见性是固定的。

此外,SSRS无法使用提供的语言而不是浏览器语言设置中的语言。

你唯一能做的就是编写一个C#程序来加载你的XML文件,获取报告的参数名称(也可能是报告的名称),在数据库中查找它们,然后自动创建N.报告n种语言。

然后,您必须使用他们的语言将用户重定向到报告 然后,您只需要编写一个上传工具,因为您不希望手动执行此操作。

另一种方法是使用ReportViewer控件,并重新实现参数选择 我认为CrissCross会尝试这样做,但除了我测试过的两份报告之外,它都失败了。

邪恶的黑客将是:

parametername: babla_language1 / blabla_language2 / blabla_language3 / blabla_language4

然后使用jQuery获取该字符串。 do string.split('/')[index_of_language]
然后捕食/永远不会在“blabla_languageXY”

之内

修改
我实际上是这样做的。您必须使用setInterval来执行此操作,因为在您选择参数时无法检测更改。

答案 2 :(得分:0)

另一种解决方法是在参数的提示中添加一个数字,然后使用“从查询中获取值”或使用带有switch语句的表达式构建器,使用本地化版本为每个参数的标签添加前缀。标签表达。

对于查询选项中的get值,如果在查询中有翻译版本,则会有类似这样的数据集:

SELECT ParamLabel, ParamValue
FROM MyLocalisedParameters
WHERE UserLanguage = @Language

或者如果不喜欢这样:

SELECT
    CASE @Language
        WHEN 'pt-PT' THEN 'Selecione Departamento: ' + ParamLabel
        WHEN 'es-ES' THEN 'Seleccionar Departamento: ' + ParamLabel
        ELSE 'Select Department: '  + ParamLabel
    END AS ParamLabel
    , ParamValue
FROM MyParametersTable

在两种情况下都创建并将Globals!语言分配给名为@Language的参数。

或者,如果将表达式构建器用于硬编码值集,则它看起来像这样:

enter image description here

无论哪种方式,最终结果都是这样的:

enter image description here

与同一报告的多个副本相比,不完美但功能更强,维护更容易。 如果您希望它看起来有点整洁,那么只需将参数提示作为参数列表中的一个条目,并将其设置为默认值,以避免在每一行重复。