fix: removed usage of html in donation progress text

This commit is contained in:
mrjvs
2026-08-15 18:49:19 +02:00
parent da04ef6c6a
commit 4159d0b7f1
33 changed files with 71 additions and 47 deletions

View File

@@ -206,7 +206,7 @@
"back": "Atrás"
},
"donation": {
"progress": "<span>{totd}$</span> de <span>{goald}$</span>/mes, <span>{perc}%</span> de la meta mensual.",
"progress": "<span>{totd}$</span> de <span>{goald}$</span>/mes, {perc} de la meta mensual.",
"upgradePush": "Pa convertise en soscriptor/a ya tener accesu a coses guais, visita la <a href=\"/account/upgrade\">páxina d'anovamientu</a>."
},
"docs": {

View File

@@ -307,6 +307,6 @@
},
"donation": {
"upgradePush": "Per esdevenir suscriptor i guanyar accés a increïbles avantatges, vés a <a href=\"/account/upgrade\">la pàgina de millores</a>.",
"progress": "Objectiu mensual: <span>${totd}</span> de <span>${goald}</span>/al mes, <span>{perc}%</span>."
"progress": "Objectiu mensual: {totd} de {goald}/al mes, {perc}."
}
}

View File

@@ -457,7 +457,7 @@
}
},
"donation": {
"progress": "<span>${totd}</span> z měsíčního cíle <span>${goald} </span> vybráno (<span>{perc}%</span> měsíčního cíle)",
"progress": "{totd} z měsíčního cíle <span>${goald} </span> vybráno ({perc} měsíčního cíle)",
"upgradePush": "Abyste se stal(a) předplatitelem a získal(a) přístup k zajímavým výhodám navštivte <a href=\"/account/upgrade\">upgrade stránku</a>."
},
"notfound": {

View File

@@ -414,7 +414,7 @@
"changeTierConfirm": "Stufe ändern"
},
"donation": {
"progress": "<span>${totd}</span> von <span>${goald}</span>/Monat, <span>{perc}%</span> des monatlichen Ziels.",
"progress": "{totd} von {goald}/Monat, {perc} des monatlichen Ziels.",
"upgradePush": "Um Abonnent zu werden und Zugang zu coolen Vorteilen zu erhalten, besuche die <a href=\"/account/upgrade\">Upgrade-Seite</a>."
},
"localizationPage": {

View File

@@ -214,7 +214,7 @@
"changeTierPrompt": "Είσαι σίγουρος ότι θέλεις να καταργήσεις τη συνδρομή σου από <span class=\"oldtier\">oldtiername</span> και να εγγραφείς στο <span class=\"newtier\">newtiername</span>;"
},
"donation": {
"progress": "<span>${totd}</span> από<span>${goald}</span>/μήνα, <span>{perc}%</span> του μηνιαίου στόχου.",
"progress": "{totd} από{goald}/μήνα, {perc} του μηνιαίου στόχου.",
"upgradePush": "Για να γίνεις συνδρομητής και να αποκτήσεις πρόσβαση σε κούλ οφέλη, επισκέψου την <a href=\"/account/upgrade\">σελίδα αναβάθμισης</a>."
},
"localizationPage": {

View File

@@ -448,7 +448,7 @@
"filePlaceholder": "mew://a.meow.site/4_jzon.jzon"
},
"donation": {
"progress": "<span>${totd}</span> of <span>${goald}</span>/munth, <span>{perc}%</span> of teh monthly goal",
"progress": "{totd} of {goald}/munth, {perc} of teh monthly goal",
"upgradePush": "u wanna become super kitteh and get kool perkz?? <a href=\"/account/upgrade\">upgrade now!!</a>"
},
"notfound": {

View File

@@ -414,7 +414,7 @@
"changeTierPrompt": "Are you sure you want to unsubscribe from <span class=\"oldtier\">oldtiername</span> and subscribe to <span class=\"newtier\">newtiername</span>?"
},
"donation": {
"progress": "<span>${totd}</span> of <span>${goald}</span>/month, <span>{perc}%</span> of the monthly goal.",
"progress": "{totd} of {goald}/month, {perc} of the monthly goal.",
"upgradePush": "To become a subscriber and gain access to cool perks, visit the <a href=\"/account/upgrade\">upgrade page</a>."
},
"localizationPage": {

View File

@@ -279,8 +279,9 @@
"back": "Back"
},
"donation": {
"progress": "<span>${totd}</span> of <span>${goald}</span>/month, <span>{perc}%</span> of the monthly goal.",
"upgradePush": "To become a subscriber and gain access to cool perks, visit the <a href=\"/account/upgrade\">upgrade page</a>."
"progress": "{totd} of {goald}/month, {perc} of the monthly goal.",
"upgradePushText": "To become a subscriber and gain access to cool perks, visit the {link}.",
"upgradePushLinkText": "upgrade page"
},
"miiEditor": {
"nickname": "Nickname",

View File

@@ -452,7 +452,7 @@
"title": "Subir rango"
},
"donation": {
"progress": "<span>${totd}</span> de <span>${goald}</span>/mes, <span>{perc}%</span> del objetivo mensual.",
"progress": "{totd} de {goald}/mes, {perc} del objetivo mensual.",
"upgradePush": "Para convertirse en suscriptor y obtener acceso a beneficios geniales, visita la página <a href=\"/account/upgrade\">actualizar</a>."
},
"modals": {

View File

@@ -353,7 +353,7 @@
"confirm": "Vahvista"
},
"donation": {
"progress": "<span>${totd}</span> tavoitteesta <span>${goald}</span>/kuussa, <span>{perc}%</span> kuukausitavoitteesta.",
"progress": "{totd} tavoitteesta {goald}/kuussa, {perc} kuukausitavoitteesta.",
"upgradePush": "Tullaksesi tilaajaksi ja saadaksesi siistejä etuja, vieraile <a href=\"/account/upgrade\">tilityypin korotussivulla</a>."
}
}

View File

@@ -454,7 +454,7 @@
},
"donation": {
"upgradePush": "Pour s'abonner et avoir accès à des récompenses spéciales, visitez <a href=\"/account/upgrade\">la page de mise à niveau</a>.",
"progress": "<span>${totd}</span> sur <span>${goald}</span>/mois, <span>{perc}%</span> du but mensuel."
"progress": "{totd} sur {goald}/mois, {perc} du but mensuel."
},
"modals": {
"cancel": "Annuler",

View File

@@ -187,7 +187,7 @@
},
"donation": {
"upgradePush": "Para facerte un subscritor e acceder a grandes vantaxes, visita a <a href=\"/account/upgrade\">páxina de actualización</a>.",
"progress": "<span>${totd}</span> de <span>${goald}</span>/mes, <span>{perc}%</span> do obxectivo mensual."
"progress": "{totd} de {goald}/mes, {perc} do obxectivo mensual."
},
"localizationPage": {
"description": "Pega unha ligazón a unha configuración rexional JSON de acceso público para probala no teu sitio web",

View File

@@ -414,7 +414,7 @@
"back": "Natrag"
},
"donation": {
"progress": "<span>${totd}</span> od <span>${goald}</span>/mjesečno, <span>{perc} %</span> mjesečnog cilja.",
"progress": "{totd} od {goald}/mjesečno, <span>{perc} %</span> mjesečnog cilja.",
"upgradePush": "Za pretplatu i pristup još boljim pogodnostima, posjeti <a href=\"/account/upgrade\">stranicu za nadogradnju</a>."
},
"localizationPage": {

View File

@@ -414,7 +414,7 @@
"description": "Tekintsd meg a projekt előrehaladását és céljait! (Minden órában frissítve, így nem tükröz minden projekt célt vagy az előrehaladást."
},
"donation": {
"progress": "<span>${totd}</span> a <span>${goald}</span>/hó, <span>{perc}%</span> a havi célból.",
"progress": "{totd} a {goald}/hó, {perc} a havi célból.",
"upgradePush": "Hogy előfizetővé válhass, és hozzáférj király cuccokhoz, látogasd meg a <a href=\"/account/upgrade\">bővítés oldalt</a>."
},
"localizationPage": {

View File

@@ -417,7 +417,7 @@
"back": "Kembali"
},
"donation": {
"progress": "<span>${totd}</span> dari <span>${goald}</span> per bulan, <span>{perc}%</span> dari target bulanan.",
"progress": "{totd} dari {goald} per bulan, {perc} dari target bulanan.",
"upgradePush": "Untuk menjadi pelanggan dan mendapatkan akses ke berbagai keuntungan menarik, kunjungi <a href=\"/account/upgrade\">halaman upgrade</a>."
},
"localizationPage": {

View File

@@ -457,7 +457,7 @@
"close": "Chiudi"
},
"donation": {
"progress": "<span>${totd}</span> di <span>${goald}</span>/mese, <span>{perc}%</span> del goal mensile.",
"progress": "{totd} di {goald}/mese, {perc} del goal mensile.",
"upgradePush": "Per diventare un abbonato e accedere a ricompense speciali, visita la <a href=\"/account/upgrade\">pagina per fare l'upgrade</a>."
},
"notfound": {

View File

@@ -450,7 +450,7 @@
"unsubPrompt": "<span>tiername</span> から退会しますか?そのレベルに関連付けられた特典にアクセスできなくなります。"
},
"donation": {
"progress": "<span>${totd}</span>/<span>${goald}</span>(寄付額/目標) ー 月間目標の <span>{perc}%</span>の寄付を頂いています。",
"progress": "{totd}/{goald}(寄付額/目標) ー 月間目標の {perc}の寄付を頂いています。",
"upgradePush": "サブスクライバーになってクールな特典にアクセスするには、<a href=\"/account/upgrade\">アップグレード ページ</a>にアクセスしてください。"
},
"modals": {

View File

@@ -219,7 +219,7 @@
},
"donation": {
"upgradePush": "Жазылу және керемет қондырмаларға қол жеткізу үшін <a href=\"/account/upgrade\">жаңарту бетіне</a> кіріңіз.",
"progress": "<span>${totd}</span>/айына <span>${goald}</span>, айлық мақсаттың <span>{perc}%</span>."
"progress": "{totd}/айына {goald}, айлық мақсаттың {perc}."
},
"localizationPage": {
"title": "Жергілікті жерлестірейік",

View File

@@ -349,7 +349,7 @@
"month": "달"
},
"donation": {
"progress": "<span>${goald}</span>/월 중에서 <span>${totd}</span> , 매달 목표의 <span>{perc}%</span>.",
"progress": "{goald}/월 중에서 {totd} , 매달 목표의 {perc}.",
"upgradePush": "구독자가 되고 멋진 혜택을 받으시려면, <a href=\"/account/upgrade\">업그레이드 페이지</a>를 방문하세요."
}
}

View File

@@ -120,7 +120,7 @@
"button": "Test bestand"
},
"donation": {
"progress": "<span>${totd}</span> van <span>${goald}</span>/maand, <span>{perc}%</span> van de maandelijkse doelstelling.",
"progress": "{totd} van {goald}/maand, {perc} van de maandelijkse doelstelling.",
"upgradePush": "Om een abonnee te worden en toegang te krijgen tot coole voordelen, bezoek je de <a href=\"/account/upgrade\">upgradepagina</a>."
},
"upgrade": {

View File

@@ -291,7 +291,7 @@
"description": "Osiągnięcie celu miesięcznego sprawi, że Pretendo stanie się pracą na pełen etat, zapewniając aktualizacje lepszej jakości w szybszym tempie."
},
"donation": {
"progress": "<span>${totd}</span> z <span>${goald}</span>/miesiąc, <span>{perc}%</span> miesięcznego celu.",
"progress": "{totd} z {goald}/miesiąc, {perc} miesięcznego celu.",
"upgradePush": "Aby zostać subskrybentem i uzyskać dostęp do fajnych bonusów, odwiedź <a href=\"/account/upgrade\">stronę ulepszeń</a>."
},
"modals": {

View File

@@ -451,7 +451,7 @@
"close": "Fechar"
},
"donation": {
"progress": "<span>${totd}</span> de <span>${goald}</span> por mês, o que significa <span>{perc}%</span> do objetivo mensal.",
"progress": "{totd} de {goald} por mês, o que significa {perc} do objetivo mensal.",
"upgradePush": "Para se tornar um doador e ganhar acesso a vários benefícios legais, visite a página de <a href=\"/account/upgrade\">upgrade</a>."
},
"notfound": {

View File

@@ -274,7 +274,7 @@
"description": "Verifique o andamento do projeto e as suas metas! (Atualizado em média a cada uma hora, não reflete TODAS as metas ou progresso do projeto)"
},
"donation": {
"progress": "<span>${totd}</span> de <span>${goald}</span> por mês, o que significa <span>{perc}%</span> do objetivo mensal.",
"progress": "{totd} de {goald} por mês, o que significa {perc} do objetivo mensal.",
"upgradePush": "Para se tornar um doador e ganhar acesso a vários benefícios legais, visite a página de <a href=\"/account/upgrade\">upgrade</a>."
}
}

View File

@@ -274,7 +274,7 @@
"changeTier": "Schimbă nivelul"
},
"donation": {
"progress": "<span>{totd}$</span> din <span>{goald}$</span>/lună, <span>{perc}%</span> din ținta lunară.",
"progress": "<span>{totd}$</span> din <span>{goald}$</span>/lună, {perc} din ținta lunară.",
"upgradePush": "Pentru a te abona și să ai acces la benefici faine, vizitează <a href=\"/account/upgrade\">această pagină</a>."
}
}

View File

@@ -432,7 +432,7 @@
"unsubPrompt": "Вы уверены в том что хотите отписаться от <span>tiername</span>? Вы потеряете доступ к функциям которые были доступны на данном уровне."
},
"donation": {
"progress": "<span>${totd}</span> из <span>${goald}</span>/в месяц, <span>{perc}%</span> от месячной цели.",
"progress": "{totd} из {goald}/в месяц, {perc} от месячной цели.",
"upgradePush": "Чтобы стать подписчиком и получить доступ к крутым возможностям, посетите <a href=\"/account/upgrade\">upgrade page</a>."
},
"modals": {

View File

@@ -270,7 +270,7 @@
},
"donation": {
"upgradePush": "För att bli en prenumerant och få tillgång till coola förmåner, besök <a href=\"/account/upgrade\">uppgraderingssidan</a>.",
"progress": "<span>${totd}</span> av <span>${goald}</span>/månad, <span>{perc}%</span> av det månatliga målet."
"progress": "{totd} av {goald}/månad, {perc} av det månatliga målet."
},
"modals": {
"close": "Stäng",

View File

@@ -414,7 +414,7 @@
"back": "பின்"
},
"donation": {
"progress": "மாதாந்திர இலக்கில் <span>${totd}</span> <span>${goald}</span>/mouth, <span>{perc}%</span>.",
"progress": "மாதாந்திர இலக்கில் {totd} {goald}/mouth, {perc}.",
"upgradePush": "சந்தாதாரராவதற்கும் சிறந்த சலுகைகளுக்கான அணுகலைப் பெறுவதற்கும், <a href=\"/account/upgrade\">மேம்படுத்தல் பக்கத்தைப்</a> பார்வையிடவும்."
},
"localizationPage": {

View File

@@ -421,7 +421,7 @@
},
"donation": {
"upgradePush": "Abone olmak ve harika avantajlara erişmek için <a href=\"/account/upgrade\">yükseltme sayfasını</a> ziyaret edin.",
"progress": "Ayda <span>${totd}</span>, <span>${goald}</span>/ay, aylık hedefin <span>%{perc}</span>."
"progress": "Ayda {totd}, {goald}/ay, aylık hedefin <span>%{perc}</span>."
},
"blogPage": {
"published": "Tarafından yayınlandı",

View File

@@ -401,7 +401,7 @@
"unsubPrompt": "Ви впевнені, що бажаєте скасувати підписку на <span>tiername</span>? Ви втратите доступ до бонусів, пов’язаних із цим рівнем."
},
"donation": {
"progress": "<span>${totd}</span> з <span>${goald}</span>/місяць, <span>{perc}%</span> місячної цілі.",
"progress": "{totd} з {goald}/місяць, {perc} місячної цілі.",
"upgradePush": "Щоб стати передплатником і отримати доступ до цікавих бонусів, відвідайте <a href=\"/account/upgrade\">сторінку прокачки</a>."
},
"localizationPage": {

View File

@@ -452,7 +452,7 @@
"back": "退回"
},
"donation": {
"progress": "<span>${totd}</span> <span>${goald}</span>/月,<span>{perc}%</span> 的每月目标。",
"progress": "{totd} {goald}/月,{perc} 的每月目标。",
"upgradePush": "要成为订阅者并获得超值福利,请访问<a href=\"/account/upgrade\">升级页面</a>。"
},
"modals": {

View File

@@ -422,7 +422,7 @@
"publishedOn": "於"
},
"donation": {
"progress": "<span>${totd}</span>的<span>${goald}</span>/月,完成月度目標的<span>{perc}%</span>",
"progress": "{totd}的{goald}/月,完成月度目標的{perc}",
"upgradePush": "若要成為訂閱者並獲得超棒的特權,請前往<a href=\"/account/upgrade\">升級頁面</a>。"
},
"localizationPage": {

View File

@@ -13,8 +13,6 @@ import {
} from 'reka-ui';
import type { ApiAccountCheckoutRequest, TierItem } from '~~/shared/api-types';
const { t } = useI18n();
definePageMeta({
needsAuth: true
});
@@ -35,12 +33,12 @@ const progress = await useFetch('/api/progress');
const donations = computed(() => progress.data.value?.donations);
const goalPercentage = computed(() => Math.floor((donations.value?.currentCents ?? 0) / (donations.value?.goalCents ?? 0) * 100));
const goalText = computed(() => {
return t('donation.progress', {
const goalTextVars = computed(() => {
return {
totd: Math.round((donations.value?.currentCents ?? 0) / 100).toString(),
goald: Math.round((donations.value?.goalCents ?? 0) / 100).toString(),
perc: goalPercentage.value.toString()
});
};
});
async function unsubscribe() {
@@ -196,10 +194,21 @@ useHead({
/>
<div class="progress-bar-capped" />
</div>
<p
<span
class="localeReplace"
v-html="goalText"
/>
>
<i18n-t keypath="donation.progress">
<template #totd>
<span>${{ goalTextVars.totd }}</span>
</template>
<template #goald>
<span>${{ goalTextVars.goald }}</span>
</template>
<template #perc>
<span>{{ goalTextVars.perc }}%</span>
</template>
</i18n-t>
</span>
</div>
<form method="post">

View File

@@ -1,5 +1,4 @@
<script setup lang="ts">
/* eslint-disable vue/no-v-html -- we might wanna avoid this by rewriting the locales to use variables */
const { t } = useI18n();
const progress = await useFetch('/api/progress');
@@ -7,12 +6,12 @@ const projects = computed(() => progress.data.value?.items ?? []);
const donations = computed(() => progress.data.value?.donations);
const goalPercentage = computed(() => Math.floor((donations.value?.currentCents ?? 0) / (donations.value?.goalCents ?? 0) * 100));
const goalText = computed(() => {
return t('donation.progress', {
const goalTextVars = computed(() => {
return {
totd: Math.round((donations.value?.currentCents ?? 0) / 100).toString(),
goald: Math.round((donations.value?.goalCents ?? 0) / 100).toString(),
perc: goalPercentage.value.toString()
});
};
});
</script>
@@ -85,10 +84,25 @@ const goalText = computed(() => {
<p class="localeReplace">
<span
class="goal-text-content"
v-html="goalText"
/>
>
<i18n-t keypath="donation.progress">
<template #totd>
<span>${{ goalTextVars.totd }}</span>
</template>
<template #goald>
<span>${{ goalTextVars.goald }}</span>
</template>
<template #perc>
<span>{{ goalTextVars.perc }}%</span>
</template>
</i18n-t>
</span>
{{ ' ' }}
<span v-html="t('donation.upgradePush')" />
<i18n-t keypath="donation.upgradePushText">
<template #link>
<a href="/account/upgrade">{{ t('donation.upgradePushLinkText') }}</a>
</template>
</i18n-t>
</p>
</div>