AJAX-enabled Multi-language Switcher - jQuery SLS

File Size: 10.3 KB
Views Total: 3157
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
AJAX-enabled Multi-language Switcher - jQuery SLS

SLS is a jQuery based simple language switcher for multilingual website that dynamically loads languages from external JSON files via AJAX requests.

More features:

  • Stores the current language selection in the localStorage (if supported) or Cookies.
  • Uses MutationObserver to detect changes in DOM and dynamically loads content via AJAX.
  • Switches between languages to translate the whole document.
  • Supports any HTML tags and attributes.

How to use it:

1. Import jQuery JavaScript library and the jquery-sls.js script into the document.

<script src="/path/to/[email protected]" crossorigin="anonymous"></script>
<script src="/path/to/jquery-sls.js"></script>

2. Create the language switcher from a normal select box.

<select id="lang-switcher" onchange="selectLanguage(this);">
  <option value="de">de</option>
  <option value="en">en</option>

3. Define the default language in the lang attribute:

<p lang="en">A jQuery Language Plugin</p>
<p lang="en">This is a <a href="#" title="link" alt="link">link</a></p>
<input lang="en" type="submit" value="Submit Button" title="Submit Button">

4. Define your own locales as key-value pairs in a JSON file.

// de.json
  "A jQuery Language Plugin":"Ein jQuery Sprach Plugin.",  
  "This is a <a href=\"#\" title=\"link\" alt=\"link\">link</a>":"Dies ist ein <a href=\"#\" title=\"Link\" alt=\"Link\">Link</a>",
  "Submit Button":"Schaltfläche Senden"

5. Initialize the plugin and specify the path to the language folder.

  path: "languages/"

6. Enable the select box to switch between languages.

$(document).on("jquery-sls-language-switched", function(event){
  if ( $('#lang-switcher').val != $.sls.getLang() ) {
  console.log( "Language switched: " + event.message );     

function selectLanguage(select) {

7. Config the language switcher with the following options.


  // Default language
  defaultLang: "en",

  // Current language
  lang: "en",

  // Folder path
  path: "languages/",

  // auto save the current language selection
  persistent: true,

  // for better matching (removes excessive spaces between words)
  clean: true,

  // Custom attributes to be translated
  attributes: [],

  // element to be observed
  observe: document


This awesome jQuery plugin is developed by vkucukcakar. For more Advanced Usages, please check the demo page or visit the official website.