Skip to content

Instantly share code, notes, and snippets.

@Asoul
Created February 23, 2017 08:55
Show Gist options
  • Save Asoul/e5ee0a0f0ed17c93383ff47818b319c4 to your computer and use it in GitHub Desktop.
Save Asoul/e5ee0a0f0ed17c93383ff47818b319c4 to your computer and use it in GitHub Desktop.
window.i18n = window.i18n || {};
i18n._langCache = {}
i18n._availableLangs = [
'en',
'zh-TW',
'ja'
]
i18n._updateElements = function () {
let elements = document.querySelectorAll('*')
elements.forEach(function (element) {
let langIndex = element.getAttribute('data-lang-content')
let langPack = i18n._langCache[i18n._lang]
if (langIndex) {
let langTarget = langPack
langIndex.split('.').forEach(function (layer) {
langTarget = langTarget[layer]
})
element.innerHTML = langTarget
}
})
}
i18n.changeLanguage = function (lang) {
this._lang = lang
$.cookie('shopify.custom-lang', lang)
if (!i18n._langCache.hasOwnProperty(lang)) {
let langPackUrl = '{{ "locales..json" | asset_url }}'.replace('s..j', 's.' + lang + '.j')
$.ajax({
url: langPackUrl,
type: 'GET',
dataType: 'json',
async: false
}).success(function (langPack) {
i18n._langCache[lang] = langPack
i18n._updateElements()
}).fail(function (error) {
console.error('error', error)
})
} else {
i18n._updateElements()
}
}
$("#changeLanguageDropdown a").click(function (event) {
let lang = event.target.getAttribute('data-lang')
i18n.changeLanguage(lang)
})
i18n.autoDetectLanguage = function () {
if ($.cookie && $.cookie('shopify.custom-lang')) {
let lang = $.cookie('shopify.custom-lang')
i18n.changeLanguage(lang)
} else {
$.ajax({
url: '//ajaxhttpheaders.appspot.com',
type: 'POST',
asunc: false,
dataType: 'jsonp',
success: function (headers) {
let preferredLangs = headers['Accept-Language'].split(';')[0].split(',')
var lang = 'en'
preferredLangs.some(function (preferredLang) {
if (i18n._availableLangs.includes(preferredLang)) {
lang = preferredLang
return true
}
})
i18n.changeLanguage(lang)
}
})
}
}
i18n.autoDetectLanguage()
@robocide
Copy link

Thanks @Asoul !!!

@KarinaMendezC
Copy link

KarinaMendezC commented Jun 4, 2018

I keep getting this errors:
image
But can't figure out what I'm missing. Any ideas?

Thank you! @Asoul

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment