Quick hack for using google translate (or other services) in Nuxt/Vue.js
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