3

我现在使用的是 SQL Server 2008 R2。

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

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

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

有谁知道解决方案...或者如果 SQL Server 2012 有用于翻译参数提示或条件可见性的解决方案?

谢谢。

4

3 回答 3

0

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

这不是一个好的解决方案,尽管至少 Culture 参数也用于本地化报告的其余部分。我们仍然希望在将来的某个日期,MS 将添加即时本地化功能,我们可以将报告重命名为 MyReport.rdl,然后将所有内容实际本地化。嗯,什么概念……

于 2013-04-19T01:48:55.087 回答
0

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

对于从查询中获取值选项,如果您在查询中有翻译版本,您将拥有类似这样的数据集:

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 并将其分配给名为 @Language 的参数。

或者,如果将表达式生成器用于一组硬编码的值,它看起来像这样:

在此处输入图像描述

无论哪种方式,最终结果都会如下所示:

在此处输入图像描述

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

于 2014-01-02T17:09:51.387 回答
0

没有...
根据 connect.microsoft.com,此功能已在 SSRS 2005 发布后请求,虽然它在 Microsoft 的 TODO 列表中,但从未分配过程序员执行此操作的时间,因此在 2012 年, SSRS 仍然无法做到这一点。

尽管(费很大力气)可以翻译其他所有内容,但无法翻译参数提示。

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

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

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

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

另一种方式是使用ReportViewer控件,并重新实现参数选择。
我认为有 CrissCross 试图做到这一点,但它在我测试的 2 份报告中都失败了。

一个邪恶的黑客将是:

parametername: babla_language1 / blabla_language2 / blabla_language3 / blabla_language4

然后使用 jQuery 获取该字符串。做 string.split('/')[index_of_language]
然后猎杀 / 永远不在“blabla_languageXY”之内

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

于 2013-09-20T09:48:09.133 回答