Move the explainer preview to English names, English first

- preview-2a86b5/ replaces anteprima-2a86b5/ (removed): index.html (full), simple.html (simple)
- audio folders renamed: voice-it/en/es and voice-full-it/en/es
- the pages always start in English; language buttons EN, IT, ES
- still hidden: noindex, not linked from the site
This commit is contained in:
2026-10-23 16:08:02 +02:00
parent 240da9e71f
commit 7e90fb5753
72 changed files with 12 additions and 16 deletions

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -7,14 +7,14 @@
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="How the BAL Protocol works">
<meta property="og:description" content="Animated guide in 15 steps, with voice in English, Italian and Spanish: how will-executors deliver your bitcoin to your heirs, without ever holding your keys.">
<meta property="og:url" content="https://bitcoin-after.life/anteprima-2a86b5/">
<meta property="og:image" content="https://bitcoin-after.life/anteprima-2a86b5/cover.jpg">
<meta property="og:url" content="https://bitcoin-after.life/preview-2a86b5/">
<meta property="og:image" content="https://bitcoin-after.life/preview-2a86b5/cover.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="How the BAL Protocol works">
<meta name="twitter:description" content="Animated guide in 15 steps, with voice in English, Italian and Spanish: how will-executors deliver your bitcoin to your heirs, without ever holding your keys.">
<meta name="twitter:image" content="https://bitcoin-after.life/anteprima-2a86b5/cover.jpg">
<meta name="twitter:image" content="https://bitcoin-after.life/preview-2a86b5/cover.jpg">
<title data-k="title">Come funziona BAL PROTOCOL</title>
<meta name="claude:viewport-fit-sides" content="cover">
<link rel="preconnect" href="https://fonts.googleapis.com">
@@ -398,7 +398,7 @@ svg.tips .tip{opacity:1}
</div>
<div class="dots" id="dots" role="tablist" aria-label="Passi"></div>
<div class="right">
<div class="langs" role="group" aria-label="Language"><button type="button" data-lang="it">IT</button><button type="button" data-lang="en">EN</button><button type="button" data-lang="es">ES</button></div>
<div class="langs" role="group" aria-label="Language"><button type="button" data-lang="en">EN</button><button type="button" data-lang="it">IT</button><button type="button" data-lang="es">ES</button></div>
<span class="sndhint" id="sndhint" data-k="tapSound" hidden>tocca per il suono</span>
<button class="snd" id="mus" type="button" data-t="music" aria-pressed="true"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path d="M9 17V5l11-2v12" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><circle cx="6.5" cy="17.5" r="2.8" fill="currentColor"/><circle cx="17.5" cy="15.5" r="2.8" fill="currentColor"/><path class="mute" d="M3 3l18 18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></button>
<button class="snd" id="snd" type="button" data-t="sound" aria-pressed="true"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path d="M4 9h4l5-4v14l-5-4H4z" fill="currentColor"/><path class="wave" d="M16 8.5a5 5 0 0 1 0 7M18.5 6a8.5 8.5 0 0 1 0 12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path class="mute" d="M16 9l5 6M21 9l-5 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></button>
@@ -559,9 +559,7 @@ es:[
]};
const UI={"title": {"it": "Come funziona BAL PROTOCOL", "en": "How BAL PROTOCOL works", "es": "Cómo funciona BAL PROTOCOL"}, "subtitle": {"it": "Vedi come funzionano i WILL-EXECUTOR", "en": "See how WILL-EXECUTORS work", "es": "Mira cómo funcionan los WILL-EXECUTORS"}, "sceneT": {"it": "La blockchain, tre will-executor, il tuo indirizzo e quello degli eredi", "en": "The blockchain, three will-executors, your address and your heirs' addresses", "es": "La blockchain, tres will-executors, tu dirección y las de los herederos"}, "sceneD": {"it": "Le copie firmate del testamento vanno dal tuo computer ai tre will-executor. Alla data di consegna tutti e tre inviano la loro copia: il nuovo blocco ne accetta una sola, le altre due vengono scartate, e i bitcoin passano dal tuo indirizzo a quello degli eredi.", "en": "The signed copies of the will go from your computer to the three will-executors. On the delivery date they all send their copy: the new block accepts only one, the other two are refused, and the bitcoin move from your address to your heirs' addresses.", "es": "Las copias firmadas del testamento van de tu ordenador a los tres will-executors. En la fecha de entrega los tres envían su copia: el nuevo bloque acepta solo una, las otras dos se rechazan, y los bitcoin pasan de tu dirección a las de los herederos."}, "chain": {"it": "Blockchain di Bitcoin", "en": "Bitcoin blockchain", "es": "Blockchain de Bitcoin"}, "accepted": {"it": "accettata", "en": "accepted", "es": "aceptada"}, "off": {"it": "spento", "en": "off", "es": "apagado"}, "refused": {"it": "copie scartate", "en": "copies refused", "es": "copias rechazadas"}, "spent": {"it": "quei bitcoin sono già spesi", "en": "those bitcoin are already spent", "es": "esos bitcoin ya están gastados"}, "todayNote": {"it": "31 ottobre 2024 · nasce BAL", "en": "31 October 2024 · BAL is born", "es": "31 de octubre de 2024 · nace BAL"}, "today": {"it": "oggi", "en": "today", "es": "hoy"}, "delivery": {"it": "consegna", "en": "delivery", "es": "entrega"}, "alive": {"it": "ci sei", "en": "you are here", "es": "estás aquí"}, "sheet": {"it": "Testamento", "en": "Will", "es": "Testamento"}, "copy1": {"it": "copia 1", "en": "copy 1", "es": "copia 1"}, "copy2": {"it": "copia 2", "en": "copy 2", "es": "copia 2"}, "copy3": {"it": "copia 3", "en": "copy 3", "es": "copia 3"}, "amount": {"it": "importo del wallet", "en": "wallet amount", "es": "importe de la cartera"}, "newCopy": {"it": "copia nuova", "en": "new copy", "es": "copia nueva"}, "heirsS": {"it": "eredi", "en": "heirs", "es": "herederos"}, "dueDate": {"it": "data di consegna", "en": "delivery date", "es": "fecha de entrega"}, "noBeat": {"it": "nessun battito", "en": "no heartbeat", "es": "sin latido"}, "you": {"it": "Tu", "en": "You", "es": "Tú"}, "yourAddr": {"it": "il tuo indirizzo", "en": "your address", "es": "tu dirección"}, "heirs": {"it": "Eredi", "en": "Heirs", "es": "Herederos"}, "heir1": {"it": "indirizzo erede 1", "en": "heir 1 address", "es": "dirección heredero 1"}, "heir2": {"it": "indirizzo erede 2", "en": "heir 2 address", "es": "dirección heredero 2"}, "heir3": {"it": "indirizzo erede 3", "en": "heir 3 address", "es": "dirección heredero 3"}, "tip": {"it": "+ mancia", "en": "+ fee", "es": "+ comisión"}, "tipNote1": {"it": "ogni copia ha la sua mancia", "en": "each copy carries its fee", "es": "cada copia lleva su comisión"}, "tipNote2": {"it": "si paga solo alla consegna", "en": "paid only on delivery", "es": "se paga solo en la entrega"}, "amountChg": {"it": "l'importo cambia", "en": "the amount changes", "es": "el importe cambia"}, "heirsChg": {"it": "si aggiunge un erede", "en": "a heir is added", "es": "se añade un heredero"}, "dayBefore": {"it": "un giorno prima", "en": "one day earlier", "es": "un día antes"}, "dayBefore2": {"it": "un altro giorno prima", "en": "another day earlier", "es": "otro día antes"}, "invalid": {"it": "copie invalidate", "en": "copies invalidated", "es": "copias invalidadas"}, "question": {"it": "E se la maggior parte dei WILL-EXECUTOR sparisce, cosa succede?", "en": "What if most of the WILL-EXECUTORS disappear?", "es": "¿Y si la mayoría de los WILL-EXECUTORS desaparece, qué pasa?"}, "prev": {"it": "← Indietro", "en": "← Back", "es": "← Atrás"}, "next": {"it": "Avanti →", "en": "Next →", "es": "Siguiente →"}, "play": {"it": "▶ Riproduci", "en": "▶ Play", "es": "▶ Reproducir"}, "restart": {"it": "↺ Dall'inizio", "en": "↺ From the start", "es": "↺ Desde el inicio"}, "pause": {"it": "❚❚ Pausa", "en": "❚❚ Pause", "es": "❚❚ Pausa"}, "sound": {"it": "Suono acceso / spento", "en": "Sound on / off", "es": "Sonido sí / no"}, "music": {"it": "Musica accesa / spenta", "en": "Music on / off", "es": "Música sí / no"}, "tapSound": {"it": "tocca per il suono", "en": "tap for sound", "es": "toca para el sonido"}, "stepOf": {"it": "Passo {n} di {m}", "en": "Step {n} of {m}", "es": "Paso {n} de {m}"}};
// the language: ?lang=, then the last one chosen, then the browser's (Italian or Spanish), else English
let LANG=(()=>{const q=new URLSearchParams(location.search).get("lang");if(q&&STEPS_L[q])return q;
try{const m=localStorage.getItem("bal-explainer-lang");if(m&&STEPS_L[m])return m}catch(e){}
const n=(navigator.language||"en").slice(0,2);return STEPS_L[n]?n:"en"})();
let LANG=(()=>{const q=new URLSearchParams(location.search).get("lang");return q&&STEPS_L[q]?q:"en"})(); // international page: English first
for(const l in STEPS_L)STEPS_L[l].forEach(st=>{for(let i=0;i<st.length;i++)st[i]=st[i].replace(/\{Y2\}/g,Y2)});
let STEPS=STEPS_L[LANG];
const T=k=>UI[k][LANG];
@@ -716,7 +714,7 @@ function voiceStart(i){
// the clip of step i from the start; only once the browser lets the page play sound (first click / tap)
voiceStop();
if(!VT||!AC||AC.state!=="running")return;
const a=new Audio(({it:"voce-det/",en:"voce-det-en/",es:"voce-det-es/"}[LANG])+"passo-"+(i+1)+".mp3?v="+VO_V);VO=a;
const a=new Audio(({it:"voice-full-it/",en:"voice-full-en/",es:"voice-full-es/"}[LANG])+"passo-"+(i+1)+".mp3?v="+VO_V);VO=a;
a.onended=()=>{if(VO===a)voiceDuck(false)};
a.play().then(()=>{if(VO===a)voiceDuck(true)}).catch(()=>{if(VO===a)VO=null});
}

View File

@@ -7,14 +7,14 @@
<meta property="og:site_name" content="Bitcoin After Life">
<meta property="og:title" content="How the BAL Protocol works (simple version)">
<meta property="og:description" content="Animated guide in 8 steps, with voice in English, Italian and Spanish: how will-executors deliver your bitcoin to your heirs, without ever holding your keys.">
<meta property="og:url" content="https://bitcoin-after.life/anteprima-2a86b5/semplice.html">
<meta property="og:image" content="https://bitcoin-after.life/anteprima-2a86b5/cover.jpg">
<meta property="og:url" content="https://bitcoin-after.life/preview-2a86b5/simple.html">
<meta property="og:image" content="https://bitcoin-after.life/preview-2a86b5/cover.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="How the BAL Protocol works (simple version)">
<meta name="twitter:description" content="Animated guide in 8 steps, with voice in English, Italian and Spanish: how will-executors deliver your bitcoin to your heirs, without ever holding your keys.">
<meta name="twitter:image" content="https://bitcoin-after.life/anteprima-2a86b5/cover.jpg">
<meta name="twitter:image" content="https://bitcoin-after.life/preview-2a86b5/cover.jpg">
<title data-k="title">Come funziona BAL PROTOCOL</title>
<meta name="claude:viewport-fit-sides" content="cover">
<link rel="preconnect" href="https://fonts.googleapis.com">
@@ -398,7 +398,7 @@ svg.tips .tip{opacity:1}
</div>
<div class="dots" id="dots" role="tablist" aria-label="Passi"></div>
<div class="right">
<div class="langs" role="group" aria-label="Language"><button type="button" data-lang="it">IT</button><button type="button" data-lang="en">EN</button><button type="button" data-lang="es">ES</button></div>
<div class="langs" role="group" aria-label="Language"><button type="button" data-lang="en">EN</button><button type="button" data-lang="it">IT</button><button type="button" data-lang="es">ES</button></div>
<span class="sndhint" id="sndhint" data-k="tapSound" hidden>tocca per il suono</span>
<button class="snd" id="mus" type="button" data-t="music" aria-pressed="true"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path d="M9 17V5l11-2v12" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><circle cx="6.5" cy="17.5" r="2.8" fill="currentColor"/><circle cx="17.5" cy="15.5" r="2.8" fill="currentColor"/><path class="mute" d="M3 3l18 18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></button>
<button class="snd" id="snd" type="button" data-t="sound" aria-pressed="true"><svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path d="M4 9h4l5-4v14l-5-4H4z" fill="currentColor"/><path class="wave" d="M16 8.5a5 5 0 0 1 0 7M18.5 6a8.5 8.5 0 0 1 0 12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path class="mute" d="M16 9l5 6M21 9l-5 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></button>
@@ -559,9 +559,7 @@ es:[
]};
const UI={"title": {"it": "Come funziona BAL PROTOCOL", "en": "How BAL PROTOCOL works", "es": "Cómo funciona BAL PROTOCOL"}, "subtitle": {"it": "Vedi come funzionano i WILL-EXECUTOR", "en": "See how WILL-EXECUTORS work", "es": "Mira cómo funcionan los WILL-EXECUTORS"}, "sceneT": {"it": "La blockchain, tre will-executor, il tuo indirizzo e quello degli eredi", "en": "The blockchain, three will-executors, your address and your heirs' addresses", "es": "La blockchain, tres will-executors, tu dirección y las de los herederos"}, "sceneD": {"it": "Le copie firmate del testamento vanno dal tuo computer ai tre will-executor. Alla data di consegna tutti e tre inviano la loro copia: il nuovo blocco ne accetta una sola, le altre due vengono scartate, e i bitcoin passano dal tuo indirizzo a quello degli eredi.", "en": "The signed copies of the will go from your computer to the three will-executors. On the delivery date they all send their copy: the new block accepts only one, the other two are refused, and the bitcoin move from your address to your heirs' addresses.", "es": "Las copias firmadas del testamento van de tu ordenador a los tres will-executors. En la fecha de entrega los tres envían su copia: el nuevo bloque acepta solo una, las otras dos se rechazan, y los bitcoin pasan de tu dirección a las de los herederos."}, "chain": {"it": "Blockchain di Bitcoin", "en": "Bitcoin blockchain", "es": "Blockchain de Bitcoin"}, "accepted": {"it": "accettata", "en": "accepted", "es": "aceptada"}, "off": {"it": "spento", "en": "off", "es": "apagado"}, "refused": {"it": "copie scartate", "en": "copies refused", "es": "copias rechazadas"}, "spent": {"it": "quei bitcoin sono già spesi", "en": "those bitcoin are already spent", "es": "esos bitcoin ya están gastados"}, "todayNote": {"it": "31 ottobre 2024 · nasce BAL", "en": "31 October 2024 · BAL is born", "es": "31 de octubre de 2024 · nace BAL"}, "today": {"it": "oggi", "en": "today", "es": "hoy"}, "delivery": {"it": "consegna", "en": "delivery", "es": "entrega"}, "alive": {"it": "ci sei", "en": "you are here", "es": "estás aquí"}, "sheet": {"it": "Testamento", "en": "Will", "es": "Testamento"}, "copy1": {"it": "copia 1", "en": "copy 1", "es": "copia 1"}, "copy2": {"it": "copia 2", "en": "copy 2", "es": "copia 2"}, "copy3": {"it": "copia 3", "en": "copy 3", "es": "copia 3"}, "amount": {"it": "importo del wallet", "en": "wallet amount", "es": "importe de la cartera"}, "newCopy": {"it": "copia nuova", "en": "new copy", "es": "copia nueva"}, "heirsS": {"it": "eredi", "en": "heirs", "es": "herederos"}, "dueDate": {"it": "data di consegna", "en": "delivery date", "es": "fecha de entrega"}, "noBeat": {"it": "nessun battito", "en": "no heartbeat", "es": "sin latido"}, "you": {"it": "Tu", "en": "You", "es": "Tú"}, "yourAddr": {"it": "il tuo indirizzo", "en": "your address", "es": "tu dirección"}, "heirs": {"it": "Eredi", "en": "Heirs", "es": "Herederos"}, "heir1": {"it": "indirizzo erede 1", "en": "heir 1 address", "es": "dirección heredero 1"}, "heir2": {"it": "indirizzo erede 2", "en": "heir 2 address", "es": "dirección heredero 2"}, "heir3": {"it": "indirizzo erede 3", "en": "heir 3 address", "es": "dirección heredero 3"}, "tip": {"it": "+ mancia", "en": "+ fee", "es": "+ comisión"}, "tipNote1": {"it": "ogni copia ha la sua mancia", "en": "each copy carries its fee", "es": "cada copia lleva su comisión"}, "tipNote2": {"it": "si paga solo alla consegna", "en": "paid only on delivery", "es": "se paga solo en la entrega"}, "amountChg": {"it": "l'importo cambia", "en": "the amount changes", "es": "el importe cambia"}, "heirsChg": {"it": "si aggiunge un erede", "en": "a heir is added", "es": "se añade un heredero"}, "dayBefore": {"it": "un giorno prima", "en": "one day earlier", "es": "un día antes"}, "dayBefore2": {"it": "un altro giorno prima", "en": "another day earlier", "es": "otro día antes"}, "invalid": {"it": "copie invalidate", "en": "copies invalidated", "es": "copias invalidadas"}, "question": {"it": "E se la maggior parte dei WILL-EXECUTOR sparisce, cosa succede?", "en": "What if most of the WILL-EXECUTORS disappear?", "es": "¿Y si la mayoría de los WILL-EXECUTORS desaparece, qué pasa?"}, "prev": {"it": "← Indietro", "en": "← Back", "es": "← Atrás"}, "next": {"it": "Avanti →", "en": "Next →", "es": "Siguiente →"}, "play": {"it": "▶ Riproduci", "en": "▶ Play", "es": "▶ Reproducir"}, "restart": {"it": "↺ Dall'inizio", "en": "↺ From the start", "es": "↺ Desde el inicio"}, "pause": {"it": "❚❚ Pausa", "en": "❚❚ Pause", "es": "❚❚ Pausa"}, "sound": {"it": "Suono acceso / spento", "en": "Sound on / off", "es": "Sonido sí / no"}, "music": {"it": "Musica accesa / spenta", "en": "Music on / off", "es": "Música sí / no"}, "tapSound": {"it": "tocca per il suono", "en": "tap for sound", "es": "toca para el sonido"}, "stepOf": {"it": "Passo {n} di {m}", "en": "Step {n} of {m}", "es": "Paso {n} de {m}"}};
// the language: ?lang=, then the last one chosen, then the browser's (Italian or Spanish), else English
let LANG=(()=>{const q=new URLSearchParams(location.search).get("lang");if(q&&STEPS_L[q])return q;
try{const m=localStorage.getItem("bal-explainer-lang");if(m&&STEPS_L[m])return m}catch(e){}
const n=(navigator.language||"en").slice(0,2);return STEPS_L[n]?n:"en"})();
let LANG=(()=>{const q=new URLSearchParams(location.search).get("lang");return q&&STEPS_L[q]?q:"en"})(); // international page: English first
for(const l in STEPS_L)STEPS_L[l].forEach(st=>{for(let i=0;i<st.length;i++)st[i]=st[i].replace(/\{Y2\}/g,Y2)});
// SIMPLE STORY (page opened with ?v=semplice, or <html data-story="simple">): only steps 1-5 and 10-13 of the
// full story; no change of amount, heirs or date, and not the last two steps. n in show() is always the step
@@ -743,7 +741,7 @@ function voiceStart(i){
// the clip of step i from the start; only once the browser lets the page play sound (first click / tap)
voiceStop();
if(!VT||!AC||AC.state!=="running")return;
const a=new Audio(({it:"voce/",en:"voce-en/",es:"voce-es/"}[LANG])+"passo-"+(i+1)+".mp3?v="+VO_V);VO=a;
const a=new Audio(({it:"voice-it/",en:"voice-en/",es:"voice-es/"}[LANG])+"passo-"+(i+1)+".mp3?v="+VO_V);VO=a;
a.onended=()=>{if(VO===a)voiceDuck(false)};
a.play().then(()=>{if(VO===a)voiceDuck(true)}).catch(()=>{if(VO===a)VO=null});
}