Click here to Skip to main content
15,868,016 members
Articles / Database Development / SQL Server

Localization of SSRS Reports

Rate me:
Please Sign up or sign in to vote.
4.86/5 (40 votes)
12 Feb 2009CPOL3 min read 245.9K   4.9K   64   50
How to localize the SQL Server Reporting Services Reports
Localized_Report.JPG

Introduction

The article demonstrates the way to localize a SSRS Report.  Although SSRS reports are created in Visual Studio (.NET IDE - BIDS), they can't be localized the same way as the normal VS.NET projects are localized because a resource file can't be added in an SSRS project.  

Localization & Globalization are a normal requirement for any project accessed around the world. Reports being one of the important tools - one needs to support SSRS in multiple languages. This article (and attached demo projects) would help in implementing the same.

Background  

For any product whose customer base is all over the world, one needs to support localization at some stage. Reports, being one major part of any product that helps in analysing the data, too would need localization.  

Initially when I heard of localizing a SSRS report, I was totally unaware of how one can do it! But though Microsoft has not provided a way to add a 'resx' file in order to localize, they have provided a way to use custom assembly and that does the trick!

Using the Code

A custom assembly is made that helps in retrieving the localized value for an asked parameter. Make a class library that has the required 'resx' file and a C# code file to access it based on the culture name passed.

C#
// Method that retrieves the localized value based on the culture name passed
// param1 ("localeSensitiveResource") -> Resource that needs to be localized
// param2 ("cultureInfoName") -> Culture name in which Resource needs to be localized
// returns -> Localized Value
public static string GetString(string localeSensitiveResource, string cultureInfoName)
{
     // Culture formation
     CultureInfo ci = new CultureInfo(cultureInfoName);
     // Value retrieved from the resource file
     return LocalizationStrings.ResourceManager.GetString(localeSensitiveResource, ci);
}

Mark the class as "public static", since it will be accessed from outside and every instance uses the same 'DLL' from the same place.

C#
//Class to retrieve the localized value
public static class LocalizedValue
{    
   public static string GetString
	(string localeSensitiveResource, string cultureInfoName)
   {
        //
   }
}

I have set my sample database tables such that each employee has a locale associated with them. Based on the locale, the report will be localized.

The designed report takes employee's ID as a parameter which internally finds the locale associated and then shows the report data to the user in a localized SSRS report. By default, the sample report would look like:

Non_Localized_Report.JPG

For every caption in the report, one needs to retrieve the localized value for it using a custom assembly made earlier. In order to do it:

Add a reference to the assembly:

Assembly_Reference.JPG

Add VB code to access the class method exposed for localizing:

Code_for_localization.JPG

To localize a caption, right click the textbox and select 'Expression...". Use the custom code to get the localized value for any string. Refer 'resx' file in the library made for parameter name to pass.

VB.NET
=Code.LocalizedValue("REPORTHEADER", Parameters!ReportCulture.Value)

Once the caption(s) are localized using the custom code, the designer would look like:

Designer.JPG

There are few other things that one needs to keep in mind:

  • Sign the assembly with a strong name such that we can keep the resource assembly(s) in the GAC of server.
  • Custom assembly needs to be placed at the following two places:
    • Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
    • Program Files\Microsoft SQL Server\MSSQL.3\Reporting
  • Place the resource file in report server's GAC

It's done! SSRS Report is now localized.

Points of Interest 

While going through the SSRS localization process, Microsoft article KB920769 helped a lot. (Refer here.)  

History

  • Initial version - 8th Feb, 2009

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect Intuit India
India India


A software professional for more than 17+ years building solutions for Web and Desktop applications.

Currently working at Intuit India.

Website: Learn By Insight
Github: Sandeep Mewara
LinkedIn: Sandeep Mewara

Strongly believe in learning and sharing knowledge.



Comments and Discussions

 
QuestionResource file is not switching with the given parameter. Pin
AniletB31-May-14 8:12
AniletB31-May-14 8:12 
AnswerRe: Resource file is not switching with the given parameter. Pin
fecaloid monster11-Aug-14 5:39
fecaloid monster11-Aug-14 5:39 
QuestionProblem with SSRS Authentica​tion - don't want to use Custom Authentica​tion - Please guide Pin
Member 1069685125-Mar-14 4:22
Member 1069685125-Mar-14 4:22 
QuestionReport paremeters localization Pin
Voland0317-Jun-13 12:23
Voland0317-Jun-13 12:23 
AnswerRe: Report paremeters localization Pin
Sandeep Mewara17-Jun-13 19:30
mveSandeep Mewara17-Jun-13 19:30 
GeneralMy vote of 5 Pin
Sudhakar Shinde14-Mar-13 8:29
Sudhakar Shinde14-Mar-13 8:29 
QuestionLocal Time Zone Pin
Member 171739929-May-11 3:55
Member 171739929-May-11 3:55 
AnswerRe: Local Time Zone Pin
Sandeep Mewara29-May-11 6:12
mveSandeep Mewara29-May-11 6:12 
GeneralMy vote of 5 Pin
Member 776092617-Mar-11 4:06
Member 776092617-Mar-11 4:06 
GeneralRe: My vote of 5 Pin
Sandeep Mewara17-Mar-11 9:07
mveSandeep Mewara17-Mar-11 9:07 
QuestionSystem cannot find the assembly - can you help? Pin
Member 776092616-Mar-11 17:57
Member 776092616-Mar-11 17:57 
AnswerRe: System cannot find the assembly - can you help? Pin
Sandeep Mewara16-Mar-11 20:41
mveSandeep Mewara16-Mar-11 20:41 
GeneralRe: System cannot find the assembly - can you help? Pin
Member 776092617-Mar-11 4:02
Member 776092617-Mar-11 4:02 
GeneralRe: System cannot find the assembly - can you help? Pin
Luis Fernando Forero Guzman15-May-13 6:15
Luis Fernando Forero Guzman15-May-13 6:15 
GeneralRe: System cannot find the assembly - can you help? Pin
Member 776092617-Mar-11 5:02
Member 776092617-Mar-11 5:02 
GeneralRe: System cannot find the assembly - can you help? Pin
Sandeep Mewara17-Mar-11 9:06
mveSandeep Mewara17-Mar-11 9:06 
GeneralRe: not working in server Pin
Kalyancpanda7-Dec-10 5:06
Kalyancpanda7-Dec-10 5:06 
GeneralRe: not working in server Pin
Sandeep Mewara9-Dec-10 5:53
mveSandeep Mewara9-Dec-10 5:53 
Generalmy vote 5 Pin
Debajit Bora21-Nov-10 4:31
Debajit Bora21-Nov-10 4:31 
GeneralMy vote of 5 Pin
thatraja24-Sep-10 5:28
professionalthatraja24-Sep-10 5:28 
GeneralExcellent Article Pin
Member 253491527-Oct-09 2:04
Member 253491527-Oct-09 2:04 
GeneralHi sandeep Pin
sarithak5487-Oct-09 5:08
sarithak5487-Oct-09 5:08 
QuestionHow about the report prompt Pin
fred_0072-Sep-09 8:26
fred_0072-Sep-09 8:26 
AnswerRe: How about the report prompt Pin
fred_0072-Sep-09 8:58
fred_0072-Sep-09 8:58 
QuestionNot able to get text from other languages Pin
AmitChampaneri17-Jul-09 3:32
AmitChampaneri17-Jul-09 3:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.