C# 中的多语言报表

本文关键字:语言 报表 | 更新日期: 2023-09-27 18:37:10

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

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

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

C# 中的多语言报表

这是我的桌面应用程序中的解决方案。假设您有一个单独的资源文件存储在应用程序的同一文件夹中,名为 Resources.dll该文件是使用名为 Reports.resx 的 resx 文件创建的,具有公共访问权限

步骤 1

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

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

步骤 2

在 rdlc 报表

中添加以下代码(在报表属性下或手动编辑 rdlc 文件,在 <报表>/<代码> 标记下添加代码)

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>

我认为您应该将所有字段放入数据集,并在为每个用户绑定数据之前处理翻译。