C#中的多语言报告

时间:2013-10-29 08:33:48

标签: c# localization reporting

我正在用C#编写报告应用程序(本地报告)。我已经制作了报告模式(rdlc文件),现在我正试图通过用户本地化使它们自动翻译。我已经设法用资源文件进行单个翻译(翻译一个字段,但有很多字段),但这需要我在报告中使用的每个文本框的参数:

ReportParameter p = new ReportParameter("Report1Parameter3", GlobalStrings.FieldText);
this.reportViewer1.LocalReport.SetParameters(p);

有没有办法让它比每个文本字段使用附加参数更“直接”?

2 个答案:

答案 0 :(得分:1)

这是我桌面应用程序中的解决方案。 假设您有一个单独的资源文件存储在应用程序的同一文件夹中,并使用名为 Reports.resx 的resx文件命名 Resources.dll ,并带有< strong>公开访问

第1步

设置本地报告的权限(每次重置后都应该重复)

<YourReportViewer>.LocalReport.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted))

第2步

在您的rdlc报告中添加以下代码(在报告属性下或手动编辑rdlc文件,在&lt;报告&gt; /&lt;代码&gt; 标记下添加代码)

Private Shared Resources As Type = Reflection.Assembly.LoadFile(IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources.dll")).GetType("Resources.Reports")

Default Public ReadOnly Property Item(name As String) As String
    Get
        Return Resources.GetProperty(name, Reflection.BindingFlags.Static Or Reflection.BindingFlags.Public).GetValue(Nothing).ToString()
    End Get
End Property

第3步

在报告中,您可以使用如下表达式引用资源中的字符串:

=Code!<NameOfYourResource>

答案 1 :(得分:0)

我认为你应该把所有字段都放到数据集中,然后在为每个用户绑定数据之前处理翻译。