Quick hack for using google translate (or other services) in Nuxt/Vue.js
26 May 18 20:00
One minute read

Hey guys, here’s a quick way of making google translate play nice using setInterval.

export default {
    mounted: function()
    {
        this.$nextTick(() => {
            this.googleTranslateInit();
        });

    },

    methods: {

        googleTranslateInit: function() {

            let checkIfGoogleLoaded = setInterval(() => {

                if (google.translate.TranslateElement != null) {
                    clearInterval(checkIfGoogleLoaded);

                    this.googleTranslateElement('google_translate_element');
                }

            }, 100);

        },

        googleTranslateElement: function(id) {
            new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, id);
        }

    },
};

It’s not always easy to have a nice callback available for google translate, especially if you’re nested into a component. I’m only using NUXT’s external resources setup for directly loading the library, and ignored creating a plugin for this (although I think that’s still valid, to create a script and use an onLoad function

« Back to posts