This commit is contained in:
Daniel Ledda
2024-11-02 00:16:40 +01:00
parent 3efd2ff30d
commit ae9af62054
5 changed files with 364 additions and 277 deletions

View File

@@ -16,62 +16,68 @@ export default defineComponent({
} = useAsyncState("rp-articles", ({ hostUrl }) => getDJAPI(hostUrl, "/rp-articles"));
await stateIsReady;
return () => (
<>
return () => <>
<header>
<h1>Ray Peat Deutsche Übersetzungen</h1>
</header>
<div class="text-slab">
<p>
<section>
<p class="text-slab">
Auf dieser Seite befindet sich eine Auswahl der Artikel von Dr. Raymond Peat, die ich in meiner
Freizeit ins Deutsche übersetzt habe.
Freizeit ins Deutsche übersetzt habe. Die Originale mit Quellenverzeichnis sind am Ende des jeweiligen Artikels verlinkt.
</p>
<p>
Ray Peat war ein US-Amerikaner aus Eugene, Oregon, der neben seinem Studium von Linguistik,
Literatur, und Malerei eine Promotion in der Biologie und Physiologie des Alterns und
degenerativer Krankheiten absolvierte, mit besonderem Fokus auf Zellen-Stoffwechsel, Hormone,
und Ernährungsphysiologie.
</p>
<p>
Nach mehreren Jahren als Professor an diversen Universitäten in den USA und Mexiko begann er
Artikel in Form eines Newsletters herauszugeben, von denen mehrere auf{" "}
<a href="http://raypeat.com/">seiner Website</a> zu finden sind.
</p>
<p>
Da er in meinem Leben zu einem enormen Verständnis meines Körpers und einem unglaublichen
Zurückerlangen meiner Gesundheit und meines Wohlbefindens trotz dem Scheitern mehrerer Ärzte
beigetragen hat, und sein Nachlass in Deutschland kaum Publikum aufgrund schwieriger
physiologischer Texte genießt, habe ich entschieden hauptsächlich für Freunde und Bekannte
einige seiner Artikel ins Deutsche zu übersetzen, damit vielleicht auch ein breiteres Publikum
von seinen Ideen profitieren könnte.
</p>
<p>
<h2>Artikelliste</h2>
<div class="text-slab">
<ul id="article">
{rpArticles.value && rpArticles.value.map((_) => (
<li>
<RouterLink to={{ name: "GEDeutschArticle", params: { articleName: _.slug } }}>
{_.title}
</RouterLink>
{_.tags?.map(tag => <span class="tag">{tag}</span>)}
</li>
))}
</ul>
</div>
</section>
<section>
<h3>Zu Ray</h3>
<div class="text-slab">
<p>
Ray Peat war ein US-Amerikaner aus Eugene, Oregon, der neben seinem Studium von Linguistik,
Literatur, und Malerei eine Promotion in der Biologie und Physiologie des Alterns und
degenerativer Krankheiten absolvierte, mit besonderem Fokus auf Zellen-Stoffwechsel, Hormone,
und Ernährungsphysiologie.
</p>
<p>
Nach mehreren Jahren als Professor an diversen Universitäten in den USA und Mexiko begann er
Artikel in Form eines Newsletters herauszugeben, von denen mehrere auf{" "}
<a href="http://raypeat.com/">seiner Website</a> zu finden sind.
</p>
<p>
Da er in meinem Leben zu einem enormen Verständnis meines Körpers und einem unglaublichen
Zurückerlangen meiner Gesundheit und meines Wohlbefindens trotz dem Scheitern mehrerer Ärzte
beigetragen hat, und sein Nachlass in Deutschland kaum Publikum aufgrund schwieriger
physiologischer Texte genießt, habe ich entschieden hauptsächlich für Freunde und Bekannte
einige seiner Artikel ins Deutsche zu übersetzen, damit vielleicht auch ein breiteres Publikum
von seinen Ideen profitieren könnte.
</p>
</div>
<h3>Helfen</h3>
<p class="text-slab">
Falls was bei der Übersetzung auffällt oder besonders unidiomatisch klingt, bzw. der deutschen
Fachsprache der Medizin nicht gerecht sein sollte, kannst du mir unter <DJEmail />{" "}
eine Mail senden. Meine Muttersprache ist schließlich Englisch und ich bin kein professioneller
Übersetzer!
Falls jemand Hilfe leisten möchte, sag gerne Bescheid!
</p>
<p>
<h3>Bedienung</h3>
<p class="text-slab">
Zusätzlich zu der Funktion, den Artikel mit dem Button oben in der Originalversion anzusehen,
hat jeder Absatz oben rechts beim drüberhovern mit der Maus einen zusätzlichen Button über den
man den jeweiligen Absatz in die andere Sprache wechseln kann, um die Versionen beim Lesen
schnell zu vergleichen zu können.
</p>
</div>
<div class="text-slab">
<h3>Artikel auswählen:</h3>
<ul id="article">
{rpArticles.value && rpArticles.value.map((_) => (
<li>
<RouterLink to={{ name: "GEDeutschArticle", params: { articleName: _.slug } }}>
{_.title}
</RouterLink>
{_.tags?.map(tag => <span class="tag">{tag}</span>)}
</li>
))}
</ul>
</div>
</>
);
</section>
</>;
},
});

View File

@@ -41,21 +41,7 @@ export default defineComponent({
const articleMetadata = computed(() => articleData.value?.find(_ => _.slug === props.articleName));
const title = computed(() => {
return articleContent.value?.split('<h1 lang="de">')[1].split("</h1>")[0] ?? 'Artikel';
});
useHead({ title });
onServerPrefetch(() =>
new Promise<void>((res) => {
watchEffect(() => {
if (title.value !== "") {
res();
}
});
})
);
useHead({ title: () => articleMetadata.value?.title ?? '' });
function transformArticleNode(node: Node): VNode | string {
if (node.nodeType === node.ELEMENT_NODE) {
@@ -64,13 +50,22 @@ export default defineComponent({
const children = [...node.childNodes].map((_) => transformArticleNode(_));
if (el.tagName === "P") {
el.classList.add("text-slab");
children.unshift(h("button", {
class: "swap",
onClick: (e) => {
(e.target as HTMLButtonElement).parentElement?.classList.toggle("swap");
},
}, "↻"));
(el as HTMLParagraphElement).dataset.tunit = '';
}
if ('dataset' in el && 'tunit' in (el as HTMLElement).dataset) {
if (el.tagName !== 'H1') {
el.classList.add("text-slab");
} else {
el.classList.add("title");
}
if (!('notranslate' in (el as HTMLElement).dataset)) {
children.unshift(h("button", {
class: "swap",
onClick: (e) => {
(e.target as HTMLButtonElement).parentElement?.classList.toggle("swap");
},
}, "↻"));
}
}
for (let i = 0; i < el.attributes.length; i++) {
@@ -80,11 +75,7 @@ export default defineComponent({
}
}
if (el.tagName === "H1") {
return h("header", attrs, h("h1", {}, children));
} else {
return h((node as Element).tagName, attrs, children);
}
return h((node as Element).tagName, attrs, children);
} else {
return createTextVNode(node.textContent ?? "");
}
@@ -99,7 +90,6 @@ export default defineComponent({
}
await Promise.all([stateIsReady, articleDataReady]);
console.log(articleMetadata.value);
return () => (
<div class="ge-article">
@@ -111,7 +101,7 @@ export default defineComponent({
</div>
<p class="text-slab">
Bei dem untenstehenden Artikel handelt es sich um eine hobbymäßige, amateurhafte Übersetzung des
Artikels { title.value } von Ray Peat. Bei Ungenauigkeiten oder Fehlübersetzungen freue ich mich über <DJEmail>eine Mail</DJEmail>!
Artikels { articleMetadata.value?.title } von Ray Peat. Bei Ungenauigkeiten oder Fehlübersetzungen freue ich mich über <DJEmail>eine Mail</DJEmail>!
</p>
{ articleMetadata.value?.tags?.includes('in-arbeit') && <h5 class="baustelle">🚧 Bitte beachte, dass diese Übersetzung noch in Arbeit und darum nicht fertig ist! 🚧</h5> }
<hr />