我现在正在使用SQL Server 2008 R2。
我的网站完全按照原样显示报告,包括参数出现的容器(客户更喜欢这种方式)。
但是,我的网站解决方案包括本地化(葡萄牙语,英语,西班牙语)。
我尝试通过为每种语言创建一个参数来翻译参数,然后根据所选语言显示它们。它在SSRS 2008中不起作用。因为我不知道如何找到提示符的可见性属性。
有没有人知道解决方案......或者SQL Server 2012是否提供了翻译参数提示或条件可见性的解决方案?
感谢。
答案 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的参数。
或者,如果将表达式构建器用于硬编码值集,则它看起来像这样:
无论哪种方式,最终结果都是这样的:
与同一报告的多个副本相比,不完美但功能更强,维护更容易。 如果您希望它看起来有点整洁,那么只需将参数提示作为参数列表中的一个条目,并将其设置为默认值,以避免在每一行重复。