1

I have managed to localize the view pages in my application but there are master pages which contain some strings.

It appears that the string contained in master pages has to be added in resource file of each page. this seems horrible. How can I elegantly localize the strings in master pages?

2 Answers 2

3

If you don't want to mess with the access modifier, you could make a helper to simplify the code you have to write in order to access the resource file, something like:

public static class LocalizationHelper
{
    public static string Localize(this HtmlHelper helper, string key)
    {
        var resourceObject = helper.ViewContext.HttpContext.GetGlobalResourceObject("NameOfResourceFileClass", key);
        if (resourceObject == null)
        {
            // i don't recommend throwing the Exception class, I'd define my own Exception type here
            throw new Exception(String.Format("Resource key '{1}' could not be found in Resource class '{0}'","NameOfResourceFileClass", key));
        }

        return resourceObject.ToString();
    }
}

Then in your .master...

<%= Html.Localize("NameOfResourceKey") %>
Sign up to request clarification or add additional context in comments.

Comments

2

You should use a Global Resource file.

  1. Create the App_GlobalResources asp.net folder
  2. Create the resource files for your languages
  3. Set the Access Modifier of the files to Public
  4. Access all your resources with My.Resources.Resource.MyText (VB Syntax)

alt text

To access resource from source code of master page:

<asp:Literal ID="Literal2" runat="server" Text="<%$ Resources:ResourcesFileName, ResourcesName%>" />

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.