SQL Server Reporting Services

SSRS report localization: a translated .rdl for each language.

Lingobit Localizer reads the report definition and translates the text in its text boxes: titles, column headers, labels. Expressions, queries, and layout stay as they are. For each language you get Sales_de.rdl, a complete report you deploy next to the original.

Your source RDL Sales.rdl Lingobit Localizer Project SourceGerman New Order Neue Bestellung Customer: Kunde: Quantity: Menge: Each string, translated in the project You get Sales.rdl Sales_de.rdl Sales_fr.rdl Sales_ja.rdl A translated file for each language; one report per language Your source RDL Sales.rdl Translate in Lingobit Project SourceGerman New Order Neue Bestellung Customer: Kunde: Quantity: Menge: You get Sales.rdl source Sales_de.rdl Sales_fr.rdl Sales_ja.rdl
Translated
Static text in text boxes
Skipped
Expressions, queries, layout
More text
Tooltips, chart titles, prompts by XPath
Output
Sales_de.rdl for each language
On this page

What Lingobit translates in an RDL file.

By default, the Value of every text box whose text is not an expression. A value that starts with = is calculated by the report server, so it is left untouched.

<Textbox Name="Title">
  ...<Value>Umsatz nach Region</Value>...                       <!-- was "Sales by region" -->
</Textbox>
<Textbox Name="Total">
  ...<Value>="Total: " &amp; Sum(Fields!Amount.Value)</Value>...  <!-- an expression: not changed -->
</Textbox>
Parts of an RDL report and how they are handled
In the reportBy default
Text boxes, also in tables and matricesTranslated
Expressions (=...)Not changed
Tooltips, chart titles, parameter promptsNot read; add them with an XPath rule (below)
Datasets, queries, layout, stylesNot changed

Reports from the 2005 to 2016 schema versions are read; the report's namespace is available in XPath as defns. Client report definitions (.rdlc) for ReportViewer use the same schema: add them with the Reporting Services RDL format.

Translate tooltips, chart titles, and prompts too.

In the file's settings, on the Parser page, extend Select nodes to translate. Set the Key expression to the item's name, so translations stay matched when the report is redesigned:

Select nodes to translate:
//defns:Textbox[not(contains(.//defns:Value,'='))]//defns:Value
| //defns:Textbox/defns:ToolTip
| //defns:ChartTitle/defns:Caption
| //defns:ReportParameter/defns:Prompt

Key expression:
ancestor-or-self::*[@Name][1]/@Name

The rules are XPath 1.0, so any other element can be added the same way. See XPath patterns in the XML guide.

Steps

From Sales.rdl to a report for each language.

  1. Add the reportsCreate a project with your target languages and add the .rdl files from your report project.

  2. Set the rulesKeep the default, or extend the XPath and set the Key expression as shown above.

  3. TranslateIn the project table, with translation memory and terminology shared with the application, or with translators through Prepare Translation Task.

  4. Create the filesCreate Localized Files writes Sales_de.rdl, Sales_fr.rdl, and so on; the output pattern can be changed, for example to a folder per language.

  5. DeployUpload each language's report to its folder on the report server, or ship the .rdlc files with the application.

  6. Next releaseScan for Changes shows the new and changed text boxes; only those need translation.

A report per language, or one report with expressions?

A report per language fits when

  • The text is typed into the report, as most reports are written.
  • Each language may need its own column widths or page size.
  • Users reach their reports through a folder or a link per language.

One report with expressions fits when

  • A single report must switch by User!Language.
  • The text already comes from a custom assembly, for example =Code.GetString("Title").
  • Then translate that assembly's resources instead: see .NET resources.

Questions.

Does Lingobit connect to the report server?

No. It works on the .rdl files, as you have them in the report project or download them from the server. Deployment stays with your tools.

Is the text in the database translated too?

Not through the report. Product names, categories, and other data text come from the database; translate them there with database localization (Enterprise).

Why is a label not in the project?

Its value contains =, which the default rule treats as an expression, or it is not a text box value. Check the element in the .rdl and add it to the XPath.