I"S(function() { if (typeof window.Alchemy === 'undefined') { window.Alchemy = {}; } Alchemy.I18n = { KEY_SEPARATOR: /\./, translate: function(key, replacement) { var keys, translation, translations; if (Alchemy.locale == null) { throw 'Alchemy.locale is not set! Please set Alchemy.locale to a locale string in order to translate something.'; } translations = Alchemy.translations[Alchemy.locale]; if (translations) { if (this.KEY_SEPARATOR.test(key)) { keys = key.split(this.KEY_SEPARATOR); translation = translations[keys[0]][keys[1]] || key; } else { translation = translations[key] || key; } if (replacement) { return translation.replace(/%\{.+\}/, replacement); } else { return translation; } } else { Alchemy.debug("Translations for locale " + Alchemy.locale + " not found!"); return key; } } }; Alchemy.t = function(key, replacement) { return Alchemy.I18n.translate(key, replacement); }; }).call(this); :ET