Table of Contents
C# – RDLC Localizing (다국어 적용)
기본원리
rdlc 파일을 텍스트 편집기로 연다.
다국어 적용할 문자열을 <Value>Report_Period</Value>
와 같이 키값으로 변경해 준다.
xml 을 읽어온 후 Report_Period 를 다국어 적용한 문자열로 Replace 해준다.
rdlc 파일 파일 편집
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>Report_Period</Value>
Helper 파일 생성
public class RdlcReportHelper
{
public static Stream TranslateReport(Stream reportStream)
{
XDocument reportXml = XDocument.Load(reportStream);
foreach (var element in reportXml.Descendants(XName.Get("Value", @"http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition")))
{
if (element.Value != null)
{
if (element.Value.StartsWith("=") != true)
{
string translatedValue = Loc.Tr(element.Value, null);
if (translatedValue != null && translatedValue != element.Value)
{
element.Value = translatedValue;
}
}
}
}
Stream ms = new MemoryStream();
reportXml.Save(ms, SaveOptions.OmitDuplicateNamespaces);
ms.Position = 0;
return ms;
}
}
xml 읽기
using var fs = new FileStream("Report\\RDLC\\Report.rdlc", FileMode.Open);
using var ms = RdlcReportHelper.TranslateReport(fs);
reportViewer.LocalReport.LoadReportDefinition(ms);