2023-03-29 17:21:20 +02:00
|
|
|
<script lang="ts">
|
|
|
|
/**
|
|
|
|
* Properly renders a translation
|
|
|
|
*/
|
|
|
|
import { Translation } from "../i18n/Translation";
|
|
|
|
import { onDestroy } from "svelte";
|
|
|
|
import Locale from "../i18n/Locale";
|
|
|
|
import { Utils } from "../../Utils";
|
|
|
|
import FromHtml from "./FromHtml.svelte";
|
2023-04-07 02:45:34 +02:00
|
|
|
import WeblateLink from "./WeblateLink.svelte";
|
2023-03-29 17:21:20 +02:00
|
|
|
|
|
|
|
export let t: Translation;
|
2023-05-14 03:24:13 +02:00
|
|
|
export let cls: string = ""
|
2023-03-30 04:51:56 +02:00
|
|
|
export let tags: Record<string, string> | undefined = undefined;
|
2023-03-29 17:21:20 +02:00
|
|
|
// Text for the current language
|
|
|
|
let txt: string | undefined;
|
|
|
|
|
2023-03-31 03:28:11 +02:00
|
|
|
$: onDestroy(Locale.language.addCallbackAndRunD(l => {
|
2023-04-07 02:45:34 +02:00
|
|
|
const translation = t?.textFor(l);
|
|
|
|
if (translation === undefined) {
|
|
|
|
return;
|
2023-03-29 17:21:20 +02:00
|
|
|
}
|
2023-04-07 02:45:34 +02:00
|
|
|
if (tags) {
|
|
|
|
txt = Utils.SubstituteKeys(txt, tags);
|
|
|
|
} else {
|
|
|
|
txt = translation;
|
2023-03-29 17:21:20 +02:00
|
|
|
}
|
|
|
|
}));
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
2023-04-07 02:45:34 +02:00
|
|
|
{#if t}
|
2023-05-30 23:45:30 +02:00
|
|
|
<span class={cls}>
|
2023-04-07 02:45:34 +02:00
|
|
|
<FromHtml src={txt}></FromHtml>
|
|
|
|
<WeblateLink context={t.context}></WeblateLink>
|
|
|
|
</span>
|
|
|
|
{/if}
|