In this article I will explain explained how to access ASP.Net Global Resource file in JavaScript, thus implementing Globalization in JavaScript strings.
For this you first need to add a new class to your ASP.Net Website or Web Application. Name it as BaseClass, this class will be inherited on all the pages where you want to Localize JavaScript strings
C#
using System;
using System.Web;
using System.Web.UI;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
 
public class BasePage : Page
{
    protected override void Render(HtmlTextWriter writer)
    {
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        HtmlTextWriter hWriter = new HtmlTextWriter(sw);
        base.Render(hWriter);
        writer.Write(this.Localize(sb.ToString()));
    }
 
    private const string ResourceFileName = "Resource";
    private string Localize(string html)
    {
        MatchCollection matches = new Regex(@"Localize\(([^\))]*)\)", RegexOptions.Singleline | RegexOptions.Compiled).Matches(html);
        foreach (System.Text.RegularExpressions.Match match in matches)
        {
            html = html.Replace(match.Value, GetGlobalResourceObject(ResourceFileName, match.Groups[1].Value).ToString());
        }
        return html;
    }
}
 
VB.Net
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Text
Imports System.IO
Imports System.Text.RegularExpressions
Public Class BasePageVB
    Inherits System.Web.UI.Page
 
    Private Const ResourceFileName As String = "Resource"
 
    Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
        Dim sb As StringBuilder = New StringBuilder
        Dim sw As StringWriter = New StringWriter(sb)
        Dim hWriter As HtmlTextWriter = New HtmlTextWriter(sw)
        MyBase.Render(hWriter)
        writer.Write(Me.Localize(sb.ToString))
    End Sub
 
    Private Function Localize(ByVal html As String) As String
        Dim matches As MatchCollection = (New Regex("Localize\(([^\))]*)\)", (RegexOptions.Singleline Or RegexOptions.Compiled)).Matches(html))
        For Each match As System.Text.RegularExpressions.Match In matches
            html = html.Replace(match.Value, GetGlobalResourceObject(ResourceFileName, match.Groups(1).Value).ToString)
        Next
        Return html
    End Function
End Class
 
Note: The name of the resource file in my application is resource, you need to replace the name of the Resource file where the line is marked in Yellow.
Once you are done with this you are now ready to use it. To make use of this Base class you need to need to inherit the same in the ASPX Page class.
C#
public partial class _Default : BasePage
 
VB.Net
Partial Class _Default
    Inherits BasePageVB
 
That’s all you need to do on each page. Now let’s test how it works.
Below is a simple JavaScript function which displays a greeting message in alert.
<input id="btnGreetings" type="button" value="Show Greetings" onclick = "ShowGreetings()" />
<script type = "text/javascript">
        function ShowGreetings() {
            var message = 'Localize(Greetings)';
            alert(message);
        }
</script>
 
Above you will notice the string in Yellow. You will need to place your Resource Key wrapped inside the Localize method as I have done above. In this case the key name is Greetings as shown in the figure below.
Localizing Javascript messages in ASP.Net using ASP.Net Localization to display Localized alert confirm box strings asp.net


After you run the application in the HTML source of the page you will notice that string Localize(Greetings) has been replaced with its localized string value as show in the figure below
Localize Javascript strings in ASP.Net

The source code is available in VB.Net and C#. You can download it using the link below.

Download Code