@octamap/alpine-localizations
Version:
Quick localizations for alpine.js
2 lines (1 loc) • 980 B
JavaScript
(function(){"use strict";var c,l;const a=(l=(c=navigator==null?void 0:navigator.language)==null?void 0:c.split("-"))==null?void 0:l[0];if(a!=null){const u=fetch("/localizations/"+a+".json");document.addEventListener("alpine:init",async()=>{window.Alpine.store("localizations",{}),window.Alpine.magic("t",i=>new Proxy(window.Alpine.store("localizations"),{get(o,t){if(t in o)return o[t];const r={"x-text":n=>n==null?void 0:n.textContent,"x-bind:placeholder":n=>n==null?void 0:n.placeholder,":placeholder":n=>n==null?void 0:n.placeholder,"x-html":n=>n.innerHTML};for(const[n,g]of Object.entries(r)){const s=i.getAttribute(n);if(s!=null&&s.includes("$t")&&s.includes(String(t)))return g(i)||String(t)}return String(t)}}));const e=await u;if(e.status===200)try{const i=await e.json();window.Alpine.store("localizations",i)}catch{}}),String.prototype.set=function(...e){function i(t,r){let n=0;return t.replace(/\r/g,()=>n<r.length?r[n++]:"")}const o=String(this);return i(o,e)}}})();