C# – RDLC Localizing (다국어 적용)

By | 2023년 10월 17일
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);

답글 남기기