Skip to content

Instantly share code, notes, and snippets.

@sirtawast
Forked from ollyja/shopify-custom-i18n.js
Last active August 8, 2018 13:38
Show Gist options
  • Save sirtawast/3eab2130c1fa9d5dfbca1aabb3f0a31b to your computer and use it in GitHub Desktop.
Save sirtawast/3eab2130c1fa9d5dfbca1aabb3f0a31b to your computer and use it in GitHub Desktop.
window.i18n = window.i18n || {};
i18n._langCache = {}
i18n._availableLangs = [
'fi',
'en',
]
i18n._updateElements = function () {
var elements = document.querySelectorAll('*')
elements.forEach(function (element) {
var langIndex = element.getAttribute('data-lang-key')
var langPack = i18n._langCache[i18n._lang]
if (langIndex) {
var langTarget = langPack
langIndex.split('.').forEach(function (layer) {
langTarget = langTarget[layer]
})
element.innerHTML = langTarget
}
})
}
i18n.changeLanguage = function (lang) {
this._lang = lang;
if (!i18n._langCache.hasOwnProperty(lang)) {
langPackUrl = "https://localhost:8080/" + lang + ".json";
$.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()
}
}
$("#language-dropdown a").click(function (event) {
var lang = event.target.getAttribute('data-lang')
console.log(lang)
i18n.changeLanguage(lang)
})
i18n.autoDetectLanguage = function () {
var lang = "fi";
i18n.changeLanguage(lang)
}
i18n.autoDetectLanguage()
/* HTML
<div id="language-dropdown">
<a href="#" data-lang="fi">FI</a>
<a href="#" data-lang="en">EN</a>
</div>
<h1 data-lang-key="general.hello.world">{{ 'general.hello.world' | t }}</h1>
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment