Query String

This example demonstrates how to switch language using query string parameter change. i18next language detection plugin use to detect user language in the browser with support for: 1. querystring, 2. cookie, 3. localStorage, 4. navigator, 5. htmlTag. Every time on click or change event, i18next loads json file with selected language and initialize translation on a new page load. To change the language on click, use <a href="?lng=en">EN</a> markup.

Example Markup
                        
                            <div aria-labelledby="dropdown-flag" class="dropdown-menu dropdown-menu-right">
                                <a href="?lng=en" class="dropdown-item">
                                    <i class="flag-icon flag-icon-gb"></i> English
                                </a>
                                <a href="?lng=es" class="dropdown-item">
                                    <i class="flag-icon flag-icon-es"></i> Spanish
                                </a>
                                <a href="?lng=pt" class="dropdown-item">
                                    <i class="flag-icon flag-icon-pt"></i> Portuguese
                                </a>
                                <a href="?lng=fr" class="dropdown-item">
                                    <i class="flag-icon flag-icon-fr"></i> French
                                </a>
                            </div>
                        
                    
Js Code For Switching
                        
                            i18next
                                .use(window.i18nextBrowserLanguageDetector)
                                .use(window.i18nextXHRBackend)
                                .init({
                                    debug: true,
                                    detection: {
                                        lookupQuerystring: 'lng',
                                    },
                                    fallbackLng: false,
                                    backend: {
                                        loadPath: "../../../app-assets/data/locales/{{lng}}/{{ns}}.json",
                                    },
                                    returnObjects: true
                                },
                                function (err, t) {
                                    // Initialize Localization
                                    jqueryI18next.init(i18next, $);
                                    $('.main-menu').localize();
                                });