Language switcher – link changes URL

I am using the Transposh WordPress plugin to make a site bilingual.

The plugin comes with a dropdown language selector, but I would like to instead place a link in the navigation that toggles the site between the two languages.

Read More

The default site is in English, and an example page might be xxx.com/page

The other language is Portuguese, with the translated page at xxx.com/pt/page

So I would like the link to toggle between these two values:

<a href="example.com/pt/page">Português</a>

and

<a href="example.com/page">English</a>

Would jQuery be best to do this?

Thanks in advance!

Related posts

Leave a Reply

2 comments

  1. When you load your page with this “example.com/pt/page” link, change the href and text of the link to English. And when you load the page with “example.com/page”, change the href and text to Português.

    <a id="lang" href="example.com/pt/page">Português</a>
    
    $(document).ready(function() {
        var winLocation = window.location;
        var loc = winLocation + "";
        if(loc.indexOf("example.com/pt/page") != -1) {
           $("#lang").prop("href", "example.com/page");
           $("#lang").text("English");
        }
        else {
           $("#lang").prop("href", "example.com/pt/page");
           $("#lang").text("Português");
        }
    });
    

    Update:
    If you want to add this link to all pages to your site, then:

    1) set class for all the links. Like this:

    <a class="lang" href="anything">anything</a>
    

    2) Now modify the jQuery handler like this :

    $(document).ready(function() {
        var winLocation = window.location;
        var loc = winLocation + "";
        if(loc.indexOf("/example.com/pt/") != -1) {
           $(".lang").prop("href", loc.replace("/example.com/pt/", "/example.com/"));
           $(".lang").text("English");
        }
        else {
           $(".lang").prop("href", loc.replace("/example.com/", "/example.com/pt/"));
           $(".lang").text("Português");
        }
    });
    

    Assuming, your Português pages comes under “example.com/pt/” urls and English pages comes under “example.com/”