@$translations = en: models: <%= I18n.t('activemodel.models', locale: :en).to_json %> attributes: <%= I18n.t('activemodel.attributes', locale: :en).to_json %> helpers: <%= I18n.t('helpers', locale: :en).to_json %> pagination: <%= I18n.t('views.pagination', locale: :en).to_json %> nl: models: <%= I18n.t('activemodel.models', locale: :nl).to_json %> attributes: <%= I18n.t('activemodel.attributes', locale: :nl).to_json %> helpers: <%= I18n.t('helpers', locale: :nl).to_json %> pagination: <%= I18n.t('views.pagination', locale: :nl).to_json %> @t = (path, vars={}) -> #result = undefined #m = undefined #translatable = undefined #isafety = undefined #replacable = undefined parts = path.split(".") #accessor = "$translations.#{$locale}[\"#{parts.join("\"][\"")}\"]" result = $translations[$locale] try result = result[part] for part in parts catch err result = parts[parts.length - 1].capitalize() return "" if result is "" return parts[parts.length - 1].capitalize() unless result # allow t('test', {var: 'Benjamin'}) statements # with $translations.nl.test = "Hello %{var}" for variable, value of vars result = result.replace("%{#{variable}}", value) isafety = 0 while result.indexOf("${") > -1 m = result.match(/\${([\w\.]+(\|\w+)?)}/) if m[2] translatable = m[1].replace(m[2], "") operation = $transformation_mappings[m[2].substr(1) or m[2].substr(1)] else translatable = m[1] operation = null replacable = t(translatable) replacable = replacable[operation]() if operation result = result.replace(m[0], replacable) break if isafety > 10 # referencing other translations may cause infinite loops isafety += 1 result @setLocale = (locale, options={}) -> locale ||= Qstorage.getItem('locale') || options.default || 'en' Qstorage.setItem "locale", locale @$locale = locale setTranslations() @setTranslations = (selector) -> #list = $("#top-navigation-list") selector = $( selector || document) selector.find(".locale-select").show() selector.find(".locale-select-" + $locale).hide() moment.lang $locale if selector selector.find("[data-t]").each -> $(this).html t($(this).data("t"), $(this).data("tAttributes")) selector.find("*[data-time]").each -> $(this).text moment($(this).data("time")).format($(this).data("timeFormat") or "dd D MMM HH:MM") else $("[data-t]").each -> $(this).html t($(this).data("t"), $(this).data("tAttributes")) $("*[data-time]").each -> $(this).text moment($(this).data("time")).format($(this).data("timeFormat") or "dd D MMM HH:MM") $(".datepicker").datepicker "option", $.datepicker.regional[$locale] $transformation_mappings = downcase: "toLowerCase" upcase: "toUpperCase"