From ba2244c7cc31f4b8612ae4e46bc8b3129e9ff89b Mon Sep 17 00:00:00 2001 From: HiDeoo <494699+HiDeoo@users.noreply.github.com> Date: Mon, 14 Oct 2024 22:27:02 +0200 Subject: [PATCH 01/36] Fix accessibility CI workflow (#2471) Co-authored-by: Arpan Patel <33442948+apatel369@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 90a1474ded9..1ab87441a2b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,7 +90,7 @@ jobs: pa11y: name: Check for accessibility issues - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v4 From 7bf13ac4a5c48addb5c8912daa8ecca00378b32d Mon Sep 17 00:00:00 2001 From: Iyyafi Qolbi Date: Tue, 15 Oct 2024 03:50:51 +0700 Subject: [PATCH 02/36] i18n(id): Update manual-setup.mdx translation (#2465) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/id/manual-setup.mdx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/src/content/docs/id/manual-setup.mdx b/docs/src/content/docs/id/manual-setup.mdx index 72f592ada27..d426cd7f4c9 100644 --- a/docs/src/content/docs/id/manual-setup.mdx +++ b/docs/src/content/docs/id/manual-setup.mdx @@ -16,7 +16,7 @@ Untuk mengikuti panduan ini, Anda membutuhkan proyek Astro yang sudah berjalan. Starlight adalah sebuah [integrasi Astro](https://docs.astro.build/en/guides/integrations-guide/). Tambahkan ke website Anda dengan cara menjalankan perintah `astro add` di _root directory_ proyek Anda: - + ```sh npx astro add starlight @@ -44,7 +44,7 @@ Integrasi Starlight dikonfigurasi di dalam file `astro.config.mjs`. Tambahkan `title` untuk memulai: -```js {7-9} +```js ins={8} // astro.config.mjs import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; @@ -125,4 +125,6 @@ Di masa yang akan datang, kami berencana mendukung skenario penggunaan semacam i ### Menggunakan Starlight dengan SSR -Saat ini, Starlight tidak mendukung _deployment_ [SSR](https://docs.astro.build/en/guides/server-side-rendering/) menggunakan adapter server Astro. Kami berharap untuk dapat men-_support_ fitur ini segera. +Untuk mengaktifkan SSR, ikuti panduan [“Adaptor Rendering Sesuai Permintaan”](https://docs.astro.build/en/guides/server-side-rendering/) dalam dokumentasi Astro untuk menambahkan server adapter ke proyek Starlight Anda. + +Halaman dokumentasi yang dibuat oleh Starlight diprarender secara default, apa pun mode keluaran proyek Anda. Untuk memilih tidak melakukan prarender halaman Starlight Anda, tetapkan opsi konfigurasi [`prerender`](/id/reference/configuration/#prerender) ke `false`. From 18975228f2dcfc66c2f2fc1f453cbf35b76313ba Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Mon, 14 Oct 2024 23:15:18 +0200 Subject: [PATCH 03/36] i18n(de): translate component/link-cards (#2483) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../content/docs/de/components/link-cards.mdx | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 docs/src/content/docs/de/components/link-cards.mdx diff --git a/docs/src/content/docs/de/components/link-cards.mdx b/docs/src/content/docs/de/components/link-cards.mdx new file mode 100644 index 00000000000..fd25cd62b75 --- /dev/null +++ b/docs/src/content/docs/de/components/link-cards.mdx @@ -0,0 +1,125 @@ +--- +title: Link-Karten +description: Erfahrene, wie du in Starlight Links prominent als Karten anzeigen. +sidebar: + order: 3 +--- + +import { LinkCard } from '@astrojs/starlight/components'; + +Um Links zu verschiedenen Seiten prominent anzuzeigen, verwende die Komponente ``. + +import Preview from '~/components/component-preview.astro'; + + + + + + + +## Import + +```tsx +import { LinkCard } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Zeige einen Link mithilfe der Komponente `` deutlich sichtbar an. +Jede `` erfodert ein [`title`](#title) und ein [`href`](#href)-Attribut. + + + +```mdx +import { LinkCard } from '@astrojs/starlight/components'; + + +``` + + + +```markdoc +{% linkcard title="Inhalte in Markdown verfassen" href="/de/guides/authoring-content/" /%} +``` + + + + + + + +### Füge eine Linkbeschreibung hinzu + +Füge einer Link-Karte mit dem Attribut [`description`](#description) eine kurze Beschreibung hinzu. + + + +```mdx {6} +import { LinkCard } from '@astrojs/starlight/components'; + + +``` + + + +```markdoc {4} +{% linkcard + title="Internationalisierung" + href="/de/guides/i18n/" + description="Konfiguriere Starlight zur Unterstützung mehrerer Sprachen." /%} +``` + + + + + + + +### Gruppiere Link-Karten + +Zeige mehrere Link-Karten nebeneinander an, wenn genügend Platz vorhanden ist, indem du sie mit der Komponente [``](/de/components/card-grids/) gruppierst. +Ein Beispiel findest du im Handbuch [“Gruppiere Link-Karten”](/de/components/card-grids/#link-karten-gruppieren). + +## `` Eigenschaften + +**Implementation:** [`LinkCard.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/LinkCard.astro) + +Die Komponente `` akzeptiert die folgenden Eigenschaften sowie alle anderen [``-Elementattribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a): + +### `title` + +**Erforderlich** +**Typ:** `string` + +Der Titel der anzuzeigenden Link-Karte. + +### `href` + +**Erforderlich** +**Typ:** `string` + +Die URL, auf die bei Interaktion mit der Karte verwiesen werden soll. + +### `description` + +**Typ:** `string` + +Eine optionale Beschreibung, welche unter dem Titel angezeigt wird. \ No newline at end of file From 204d2c28c7f265736290bf035b393db3ec478449 Mon Sep 17 00:00:00 2001 From: HiDeoo Date: Mon, 14 Oct 2024 21:15:58 +0000 Subject: [PATCH 04/36] [ci] format --- docs/src/content/docs/de/components/link-cards.mdx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/src/content/docs/de/components/link-cards.mdx b/docs/src/content/docs/de/components/link-cards.mdx index fd25cd62b75..e8246891670 100644 --- a/docs/src/content/docs/de/components/link-cards.mdx +++ b/docs/src/content/docs/de/components/link-cards.mdx @@ -38,7 +38,10 @@ Jede `` erfodert ein [`title`](#title) und ein [`href`](#href)-Attribu ```mdx import { LinkCard } from '@astrojs/starlight/components'; - + ``` @@ -122,4 +125,4 @@ Die URL, auf die bei Interaktion mit der Karte verwiesen werden soll. **Typ:** `string` -Eine optionale Beschreibung, welche unter dem Titel angezeigt wird. \ No newline at end of file +Eine optionale Beschreibung, welche unter dem Titel angezeigt wird. From 7439a9f20c3c0a701c8147e58a829a88f1d4e0d0 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Mon, 14 Oct 2024 23:23:23 +0200 Subject: [PATCH 05/36] i18n(de): update translation overriding-components (#2482) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- ...omponents.md => overriding-components.mdx} | 46 ++++++++++--------- 1 file changed, 25 insertions(+), 21 deletions(-) rename docs/src/content/docs/de/guides/{overriding-components.md => overriding-components.mdx} (91%) diff --git a/docs/src/content/docs/de/guides/overriding-components.md b/docs/src/content/docs/de/guides/overriding-components.mdx similarity index 91% rename from docs/src/content/docs/de/guides/overriding-components.md rename to docs/src/content/docs/de/guides/overriding-components.mdx index 66ab338cbbb..bbe1c0bffbc 100644 --- a/docs/src/content/docs/de/guides/overriding-components.md +++ b/docs/src/content/docs/de/guides/overriding-components.mdx @@ -1,10 +1,10 @@ --- title: Komponenten ersetzen description: In Starlight kannst du eingebauten Komponenten ersetzen, um eigene Elemente in die Benutzeroberfläche deiner Dokumentationsseite einzufügen. -sidebar: - badge: New --- +import { Steps } from '@astrojs/starlight/components'; + Starlight's Standard-UI und Konfigurationsoptionen sind so gestaltet, dass sie flexibel sind und für eine Reihe von Inhalten funktionieren. Ein Großteil des Standardaussehens von Starlight kann mit [CSS](/de/guides/css-and-tailwind/) und [Konfigurationsoptionen](/de/guides/customization/) angepasst werden. Wenn du mehr brauchst als das, was von Haus aus möglich ist, unterstützt Starlight die Erstellung eigener Komponenten, um die Standardkomponenten zu erweitern oder zu ersetzen. @@ -19,6 +19,8 @@ Die Standardkomponenten von Starlight zu überschreiben kann nützlich sein, wen ## Wie kann man das ersetzen + + 1. Wähle die Starlight-Komponente, die du überschreiben möchtest. Du kannst eine vollständige Liste der Komponenten in der [Komponenten-Ersetzung Referenz](/de/reference/overrides/) finden. @@ -44,17 +46,19 @@ Die Standardkomponenten von Starlight zu überschreiben kann nützlich sein, wen import starlight from '@astrojs/starlight'; export default defineConfig({ - integrations: [ - starlight({ - title: 'Meine Dokumentation nutzt eigene Komponenten', - components: { - // Ersetze den Standardkomponent `SocialIcons` - SocialIcons: './src/components/EmailLink.astro', - }, - }), - ], + integrations: [ + starlight({ + title: 'Meine Dokumentation nutzt eigene Komponenten', + components: { + // Ersetze den Standardkomponent `SocialIcons` + SocialIcons: './src/components/EmailLink.astro', + }, + }), + ], }); ``` + + ## Eine integrierte Komponente wiederverwenden @@ -96,9 +100,9 @@ const { title } = Astro.props.entry.data;

{title}

``` @@ -120,13 +124,13 @@ const isHomepage = Astro.props.slug === ''; --- { - isHomepage ? ( -
Verwendet Starlight 🌟
- ) : ( - - - - ) + isHomepage ? ( +
Verwendet Starlight 🌟
+ ) : ( + + + + ) } ``` From 8220259172e3ab475c11d0bf5f2cdd3bc87c3a87 Mon Sep 17 00:00:00 2001 From: HiDeoo Date: Mon, 14 Oct 2024 21:24:01 +0000 Subject: [PATCH 06/36] [ci] format --- docs/src/content/docs/de/guides/overriding-components.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/content/docs/de/guides/overriding-components.mdx b/docs/src/content/docs/de/guides/overriding-components.mdx index bbe1c0bffbc..fdee436ce86 100644 --- a/docs/src/content/docs/de/guides/overriding-components.mdx +++ b/docs/src/content/docs/de/guides/overriding-components.mdx @@ -57,7 +57,7 @@ Die Standardkomponenten von Starlight zu überschreiben kann nützlich sein, wen ], }); ``` - + ## Eine integrierte Komponente wiederverwenden From cb3100712c432ce59d58a389185a56d00645545a Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Mon, 14 Oct 2024 23:51:11 +0200 Subject: [PATCH 07/36] i18n(de): update translation index (#2478) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/index.mdx | 115 ++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 2 deletions(-) diff --git a/docs/src/content/docs/de/index.mdx b/docs/src/content/docs/de/index.mdx index e258993fa3a..0bce04175cb 100644 --- a/docs/src/content/docs/de/index.mdx +++ b/docs/src/content/docs/de/index.mdx @@ -1,7 +1,12 @@ --- title: Starlight 🌟 Einfache Dokumentations-Websites mit Astro -description: Erstelle schöne, leistungsstarke Dokumentations-Websites mit Starlight und Astro. +head: + - tag: title + content: Starlight 🌟 Einfache Dokumentations-Websites mit Astro +description: Erstelle schöne, leistungsstarke Dokumentations-Webseiten mit Starlight und Astro. template: splash +editUrl: false +lastUpdated: false hero: title: Bringe deine Dokumentation mit Starlight zum Leuchten tagline: Alles, was du brauchst, um eine erstklassige Dokumentations-Website zu erstellen. Schnell, barrierefrei und einfach zu bedienen. @@ -19,11 +24,13 @@ hero: import { CardGrid, Card } from '@astrojs/starlight/components'; import AboutAstro from '~/components/about-astro.astro'; +import TestimonialGrid from '~/components/testimonial-grid.astro'; +import Testimonial from '~/components/testimonial.astro'; Site-Navigation, Suche, Internationalisierung, SEO, leicht lesbare - Typografie, Code-Hervorhebung, Dunkelmodus und mehr. + Typografie, Code-Hervorhebung, Dark-Mode und mehr. Nutze die volle Kraft und Leistung von Astro. Erweitere Starlight mit deinen @@ -39,6 +46,110 @@ import AboutAstro from '~/components/about-astro.astro'; + + + + Das Astro-Team hat die Art und Weise, wie Dokumente erstellt werden können, ENTWICKELT, und mit ihrem Starlight-Projekt kannst du sie sofort nutzen. + + + Astros offizielles Starterkit Starlight ist ein unglaubliches Werkzeug für die Erstellung einer Dokumentations-Website + + + Starlight ist unser Paradebeispiel für einen großartigen DX: Die Geschwindigkeit, der Komfort + und die Liebe zum Detail sind inspirierend. Es kümmert sich um die Technik und das Aussehen, + damit du dich auf deine Inhalte konzentrieren kannst 👏. + + Das StackBlitz-Team liebt es! + + + Starlight hat meine Arbeit grundlegend verändert und mir die Möglichkeit gegeben, mich auf die Erstellung von Inhalten zu konzentrieren. + + Sein intuitives Design vereinfacht nicht nur meinen Arbeitsablauf, sondern verkürzt auch die Einarbeitungszeit für Open-Source-Entwickler. + + + Ich habe etwas mehr Zeit mit Starlight für die Kurs-Bauer-Dokumentation verbracht und es ist bisher großartig. Ich kann mich auf das Schreiben in Markdown konzentrieren und muss nicht mehr an der Website herumfummeln. + + + Ich habe angefangen, mit Starlight zu spielen. Ich muss sagen, ich bin sehr beeindruckt von der Leistung, die es bietet. + + 💯💯💯💯 + + + + Starlight ist der beste Weg, um mit der Dokumentation zu beginnen. + Leistung und Geschwindigkeit von Astro und den Werkzeugen von Starlight, es ist wie im siebten Himmel. + Ich benutze es schon seit einer Weile und bin immer noch begeistert! + + + Ich habe Starlight in meinem letzten Job benutzt und war begeistert. Tolle Komponenten, intuitives Design + und eine sehr reaktionsfreudige Community (wann immer jemand etwas brauchte, + haben sie es schnell geliefert oder dir eine Lösung gezeigt). Eine sehr angenehme Erfahrung. + + + Die Dokumentation auf meiner Monorepo-Website sehen dank Starlight besser aus als je zuvor. Es ist extrem einfach zu bedienen, ohne dabei die ganze Leistung von Astro zu verlieren. Danke, dass ihr daran arbeitet! + + + Starlight ist mein bevorzugtes Tool für Dokumentationen. Mit Starlight war es super einfach, meiner bestehenden Astro-Produktwebsite Dokumentation hinzuzufügen, anstatt eine Subdomain für ein anderes Tool zu benötigen. + + + Ich habe die WPEngine Atlas Platform Dokumentation neu aufgebaut. Vertrau mir, wenn ich sage, dass Starlight alles hat, was du brauchst, um eine A+ Doku-Plattform zu machen 🙌 + + + Probiere Starlight aus! + + Ich benutze es für ein paar meiner Websites und es ist großartig. + + + + Astro ist ein Web-Framework, das eine Komplettlösung zur Erstellung schneller Websites darstellt. Rufe deine Inhalte von überall ab und stelle sie überall bereit, alles unterstützt durch deine bevorzugten UI-Komponenten und Bibliotheken. From 1fc4da3451f066066cdc4fd8ec3d74f8bef61f19 Mon Sep 17 00:00:00 2001 From: HiDeoo Date: Mon, 14 Oct 2024 21:51:52 +0000 Subject: [PATCH 08/36] [ci] format --- docs/src/content/docs/de/index.mdx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/src/content/docs/de/index.mdx b/docs/src/content/docs/de/index.mdx index 0bce04175cb..55ff280ab2d 100644 --- a/docs/src/content/docs/de/index.mdx +++ b/docs/src/content/docs/de/index.mdx @@ -46,7 +46,6 @@ import Testimonial from '~/components/testimonial.astro';
- - Probiere Starlight aus! + Probiere Starlight aus! Ich benutze es für ein paar meiner Websites und es ist großartig. From af3cc0a0a2a97c5b3735bf9c654b5595e8383d38 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 00:18:46 +0200 Subject: [PATCH 09/36] i18n(de): update translation css-and-tailwind (#2474) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../docs/de/guides/css-and-tailwind.mdx | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/src/content/docs/de/guides/css-and-tailwind.mdx b/docs/src/content/docs/de/guides/css-and-tailwind.mdx index 72af9f5c428..dba24acd014 100644 --- a/docs/src/content/docs/de/guides/css-and-tailwind.mdx +++ b/docs/src/content/docs/de/guides/css-and-tailwind.mdx @@ -3,12 +3,16 @@ title: CSS & Styling description: Lerne, wie du deine Starlight-Seite mit benutzerdefiniertem CSS gestalten oder mit Tailwind CSS integrieren kannst. --- +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + Du kannst deine Starlight-Website mit benutzerdefinierten CSS-Dateien gestalten oder das Starlight Tailwind-Plugin verwenden. ## Benutzerdefinierte CSS-Styles (Stile) Passe die Styles deiner Starlight-Seite an, indem du zusätzliche CSS-Dateien bereitstellst, um die Standard-Styles von Starlight zu verändern oder zu erweitern. + + 1. Füge eine CSS-Datei zu deinem `src/`-Verzeichnis hinzu. Du kannst zum Beispiel eine größere Standard-Spaltenbreite und eine größere Textgröße für den Seitentitel festlegen: @@ -22,7 +26,7 @@ Passe die Styles deiner Starlight-Seite an, indem du zusätzliche CSS-Dateien be 2. Füge den Pfad zu deiner CSS-Datei in Starlights `customCss`- Array in `astro.config.mjs` ein: - ```js + ```diff lang="js" // astro.config.mjs import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; @@ -30,16 +34,18 @@ Passe die Styles deiner Starlight-Seite an, indem du zusätzliche CSS-Dateien be export default defineConfig({ integrations: [ starlight({ - title: 'Dokumentation mit eigenem CSS', + title: 'Dokumentation mit benutzerdefiniertem CSS', customCss: [ - // Relative Pfad zur eigenen CSS Datei - './src/styles/custom.css', + + // Relativer Pfad zu deiner benutzerdefinierten CSS-Datei + + './src/styles/custom.css', ], }), ], }); ``` + + Du kannst dir alle CSS-Eigenschaften, die von Starlight verwendet werden und die du einstellen kannst, um deine Seite anzupassen, in der [Datei `props.css` auf GitHub](https://github.com/withastro/starlight/blob/main/packages/starlight/style/props.css) ansehen. ## Tailwind CSS @@ -55,11 +61,9 @@ Das Starlight Tailwind-Plugin wendet die folgende Konfiguration an: ### Erstelle ein neues Projekt mit Tailwind -import { Tabs, TabItem } from '@astrojs/starlight/components'; - Starte ein neues Starlight-Projekt mit Tailwind CSS vorkonfiguriert, indem du `create astro` verwendest: - + ```sh @@ -87,9 +91,11 @@ yarn create astro --template starlight/tailwind Wenn du bereits eine Starlight-Website hast und Tailwind CSS hinzufügen möchtest, folge dieser Anleitung. + + 1. Füge die Tailwind-Integration von Astro hinzu: - + @@ -119,7 +125,7 @@ Wenn du bereits eine Starlight-Website hast und Tailwind CSS hinzufügen möchte 2. Installiere das Starlight Tailwind-Plugin: - + @@ -167,7 +173,7 @@ Wenn du bereits eine Starlight-Website hast und Tailwind CSS hinzufügen möchte export default defineConfig({ integrations: [ starlight({ - title: 'Docs with Tailwind', + title: 'Dokumentation mit Tailwind', customCss: [ // Pfad zu deinen grundlegenden Tailwind-Styles './src/tailwind.css', @@ -194,6 +200,8 @@ Wenn du bereits eine Starlight-Website hast und Tailwind CSS hinzufügen möchte }; ``` + + ### Starlight mit Tailwind designen Starlight verwendet Werte aus deiner [Tailwind-Theme-Konfiguration](https://tailwindcss.com/docs/theme) in der Benutzeroberfläche. @@ -243,6 +251,8 @@ Diese Variablen werden in der gesamten Benutzeroberfläche verwendet, wobei eine Verwende die Schieberegler unten, um die Akzent- und Graufarbpalette von Starlight zu ändern. Die dunklen und hellen Vorschaubereiche zeigen die resultierenden Farben, und die gesamte Seite wird ebenfalls aktualisiert, um deine Änderungen anzuzeigen. +Verwende die Option Kontraststufe, um festzulegen, welche der Richtlinie für die Zugänglichkeit von Webinhalten [Farbkontraststandards](https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_WCAG/Perceivable/Color_contrast) erfüllt werden soll. + Wenn du mit deinen Änderungen zufrieden bist, kopiere den CSS- oder Tailwind-Code unten und verwende ihn in deinem Projekt. import ThemeDesigner from '~/components/theme-designer.astro'; @@ -258,6 +268,9 @@ import ThemeDesigner from '~/components/theme-designer.astro'; default: 'Standard', random: 'Zufällig', }, + contrast: { + label: 'Kontraststufe', + }, editor: { accentColor: 'Akzent', grayColor: 'Grau', From f90bf4d69d50e163255ca707b60427b553baeac4 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 00:41:14 +0200 Subject: [PATCH 10/36] i18n(de): translate badges (#2452) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> Co-authored-by: Max <51922004+Maxframe@users.noreply.github.com> --- .../src/content/docs/de/components/badges.mdx | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 docs/src/content/docs/de/components/badges.mdx diff --git a/docs/src/content/docs/de/components/badges.mdx b/docs/src/content/docs/de/components/badges.mdx new file mode 100644 index 00000000000..5f7737683d9 --- /dev/null +++ b/docs/src/content/docs/de/components/badges.mdx @@ -0,0 +1,150 @@ +--- +title: Abzeichen +description: Lerne, wie du in Starlight Abzeichen verwenden kannst, um zusätzliche Informationen anzuzeigen. +--- + +import { Badge } from '@astrojs/starlight/components'; + +Um wenige Informationen, wie z.B. einen Status oder eine Kategorie, anzuzeigen, verwende die Komponente ``. + +import Preview from '~/components/component-preview.astro'; + + + + + + + +## Import + +```tsx +import { Badge } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Zeige ein Abzeichen mit der Komponente `` an und übergib den Inhalt, den du anzeigen möchtest, an das Attribut [`text`](#text) der Komponente ``. + +Standardmäßig wird für das Abzeichen die Akzentfarbe des Aussehens deiner Website verwendet. +Um eine eingebaute Abzeichen-Farbe zu verwenden, setze das Attribut [`variant`](#variant) auf einen der unterstützten Werte. + + + +```mdx +import { Badge } from '@astrojs/starlight/components'; + + + + + + +``` + + + +```markdoc +{% badge text="Hinweis" variant="note" /%} +{% badge text="Erfolg" variant="success" /%} +{% badge text="Tipp" variant="tip" /%} +{% badge text="Warnung" variant="caution" /%} +{% badge text="Gefahr" variant="danger" /%} +``` + + + + + + + + + + + + + +### Verschiedene Größen verwenden + +Verwende das Attribut [`size`](#size), um die Größe des Abzeichentextes zu steuern. + + + +```mdx /size="\w+"/ +import { Badge } from '@astrojs/starlight/components'; + + + + +``` + + + +```markdoc /size="\w+"/ +{% badge text="Neu" size="small" /%} +{% badge text="Neu und verbessert" size="medium" /%} +{% badge text="Neu, verbessert und größer" size="large" /%} +``` + + + + + + + + + + + +### Abzeichen anpassen + +Passe Abzeichen an, indem du andere ``-Attribute wie `class` oder `style` mit benutzerdefiniertem CSS verwendest. + + + +```mdx "style={{ fontStyle: 'italic' }}" +import { Badge } from '@astrojs/starlight/components'; + + +``` + + + +```markdoc 'style="font-style: italic;"' +{% badge text="Individuell" variant="success" style="font-style: italic;" /%} +``` + + + + + + + +## ``-Eigenschaften + +**Implementation:** [`Badge.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/Badge.astro) + +Die ``-Komponente akzeptiert die folgenden Eigenschaften und auch alle [anderen ``-Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes): + +### `text` + +**Erforderlich** +**Typ:** `string` + +Der Textinhalt, der in dem Abzeichen angezeigt werden soll. + +### `variant` + +**Typ:** `'note' | 'danger' | 'success' | 'caution' | 'tip' | 'default'` +**Voreinstellung:** `'default'` + +Die zu verwendende Farbvariante des Abzeichens: `note` (blau), `tip` (lila), `danger` (rot), `caution` (orange), `success` (grün) oder `default` (Akzentfarbe des Aussehens). + +### `size` + +**Typ:** `'small' | 'medium' | 'large'` + +Bestimmt die Größe des anzuzeigenden Abzeichens. From de5a59959efc47320e72f941e1e8f2178124d3b7 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 01:03:53 +0200 Subject: [PATCH 11/36] i18n(de): update translation sidebar (#2477) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> Co-authored-by: Chris Swithinbank <357379+delucis@users.noreply.github.com> --- docs/src/content/docs/de/guides/sidebar.mdx | 413 +++++++++++++------- 1 file changed, 271 insertions(+), 142 deletions(-) diff --git a/docs/src/content/docs/de/guides/sidebar.mdx b/docs/src/content/docs/de/guides/sidebar.mdx index a0b1cbf9420..f6728d7509a 100644 --- a/docs/src/content/docs/de/guides/sidebar.mdx +++ b/docs/src/content/docs/de/guides/sidebar.mdx @@ -19,11 +19,11 @@ Zum Beispiel, wenn du die folgende Dateistruktur hast: - src/ - content/ - docs/ - - guides/ - - components.md - - i18n.md - - reference/ - - configuration.md + - constellations/ + - andromeda.md + - orion.md + - stars/ + - betelgeuse.md @@ -32,17 +32,15 @@ Wird die folgende Seitenleiste automatisch generiert: @@ -51,21 +49,75 @@ Erfahre mehr über autogenerierte Seitenleisten im Abschnitt [autogenerierte Gru ## Links und Linkgruppen hinzufügen -Um deiner Seitenleiste [Links](#links) und [Gruppen von Links](#gruppen) (innerhalb einer einklappbaren Kopfzeile) zu konfigurieren, verwende die Eigenschaft [`starlight.sidebar`](/de/reference/configuration/#sidebar) in `astro.config.mjs`. +Um deiner Seitenleiste Links und Gruppen von Links (innerhalb einer einklappbaren Kopfzeile) zu konfigurieren, verwende die Eigenschaft [`starlight.sidebar`](/de/reference/configuration/#sidebar) in `astro.config.mjs`. Durch die Kombination von Links und Gruppen kannst du eine Vielzahl von Seitenleistenlayouts erstellen. -### Links +### Interne Links + +Füge einen Link zu einer Seite in `src/content/docs/` mit Hilfe eines Objekts mit der Eigenschaft `slug` hinzu. +Der Titel der verlinkten Seite wird standardmäßig als Bezeichnung verwendet. + +Zum Beispiel mit der folgenden Konfiguration: + +```js "slug:" +starlight({ + sidebar: [ + { slug: 'constellations/andromeda' }, + { slug: 'constellations/orion' }, + ], +}); +``` + +Und die folgende Dateistruktur: -Füge einen Link zu einer internen oder externen Seite hinzu, indem du ein Objekt mit den Eigenschaften `label` und `link` verwendest. + + +- src/ + - content/ + - docs/ + - constellations/ + - andromeda.md + - orion.md + + + +Die folgende Seitenleiste wird erstellt: + + + +Um die Werte zu überschreiben, die aus dem Frontmatter einer verlinkten Seite abgeleitet werden, kannst du die Eigenschaften `label`, [`translations`](#internationalisierung) und [`attrs`](#benutzerdefinierte-html-attribute) hinzufügen. + +Unter [„Anpassen von automatisch generierten Links“](#autogenerierte-links-im-frontmatter-anpassen) findest du weitere Informationen über die Steuerung des Erscheinungsbildes der Seitenleiste über das Frontmatter der Seite. + +#### Kürzel für interne Links + +Interne Links können auch angegeben werden, indem nur ein String für den Slug der Seite als Kurzform angegeben wird. + +Die folgende Konfiguration entspricht zum Beispiel der obigen Konfiguration, die `slug` verwendet: ```js +starlight({ + sidebar: ['constellations/andromeda', 'constellations/orion'], +}); +``` + +### Andere Links + +Füge einen Link zu einer externen oder Nicht-Dokumentations-Seite hinzu, indem du ein Objekt mit den Eigenschaften `label` und `link` verwendest. + +```js "label:" "link:" starlight({ sidebar: [ - // Ein Link auf die CSS & Styling Anleitung. - { label: 'CSS & Styling', link: '/guides/css-and-tailwind/' }, - // Ein externer Link auf die Astro-Website. - { label: 'Astro', link: 'https://astro.build/' }, + // Ein Link zu einer Nicht-Dokumentations-Seite auf dieser Website. + { label: 'Meteor-Laden', link: '/laden/' }, + // Ein externer Link zur NASA-Website. + { label: 'NASA', link: 'https://www.nasa.gov/' }, ], }); ``` @@ -74,8 +126,8 @@ Die obige Konfiguration erzeugt die folgende Seitenleiste: @@ -88,22 +140,22 @@ Füge eine Gruppe mit einem Objekt mit den Eigenschaften `label` und `items` hin Das `label` wird als Überschrift für die Gruppe verwendet. Füge Links oder Untergruppen zu dem `items` Array hinzu. -```js +```js /^\s*(label:|items:)/ starlight({ sidebar: [ - // Eine Gruppe von Links mit der Bezeichnung "Guides". + // Eine Gruppe von Links mit der Bezeichnung "Konstellationen". { - label: 'Anleitungen', + label: 'Konstellationen', items: [ - { label: 'Komponenten', link: '/guides/components/' }, - { label: 'Internationalisierung (i18n)', link: '/guides/i18n/' }, - // Eine verschachtelte Gruppe von Links. + 'constellations/carina', + 'constellations/centaurus', + // Eine verschachtelte Gruppe von Links für saisonale Konstellationen. { - label: 'Styling', + label: 'Saisonale', items: [ - { label: 'CSS', link: '/guides/css-and-tailwind/' }, - { label: 'Tailwind', link: '/guides/css-and-tailwind/' }, - { label: 'Shiki', link: '/guides/css-and-tailwind/' }, + 'constellations/andromeda', + 'constellations/orion', + 'constellations/ursa-minor', ], }, ], @@ -117,16 +169,16 @@ Die obige Konfiguration erzeugt die folgende Seitenleiste: @@ -174,15 +227,13 @@ Wird die folgende Seitenleiste erzeugt: :::note[Anmerkung] -Die `sidebar`-Frontmatter-Konfiguration wird nur für automatisch generierte Links verwendet und wird für manuell definierte Links ignoriert. +Die `sidebar` Frontmatter-Konfiguration wird nur für Links in automatisch generierten Gruppen und für Dokumentations-Links verwendet, die mit der Eigenschaft `slug` definiert wurden. Sie gilt nicht für Links, die mit der Eigenschaft `link` definiert wurden. ::: ## Abzeichen Links, Gruppen und automatisch generierte Gruppen können auch eine `badge`-Eigenschaft enthalten, um ein Abzeichen neben dem jeweiligen Text anzuzeigen. -```js +```js {9,16} starlight({ sidebar: [ { - label: 'Anleitungen', + label: 'Sterne', items: [ - // Ein Link mit einem "Neu"-Abzeichen. + //Ein Link mit einem "Überriese"-Abzeichen. { - label: 'Komponenten', - link: '/guides/components/', - badge: 'Neu', + slug: 'stars/persei', + badge: 'Überriese', }, ], }, // Eine automatisch generierte Gruppe mit dem "Veraltet"-Abzeichen. { - label: 'Referenz', + label: 'Monde', badge: 'Veraltet', - autogenerate: { directory: 'reference' }, + autogenerate: { directory: 'moons' }, }, ], }); @@ -266,30 +317,30 @@ Die obige Konfiguration erzeugt die folgende Seitenleiste: + +### Internationalisierung mit internen Links + +[Interne Links](#interne-links) verwenden standardmäßig automatisch übersetzte Seitentitel aus dem Frontmatter des Inhalts: + +```js {9-10} +starlight({ + sidebar: [ + { + label: 'Konstellationen', + translations: { + 'pt-BR': 'Constelações', + }, + items: [ + { slug: 'constellations/andromeda' }, + { slug: 'constellations/scorpius' }, + ], + }, + ], +}); +``` + +Wenn du die Dokumentation auf brasilianisches Portugiesisch durchsuchst, wird die folgende Seitenleiste angezeigt: + + + +Bei mehrsprachigen Seiten enthält der Wert von `slug` nicht den sprachlichen Teil der URL. +Wenn du zum Beispiel Seiten unter `en/intro` und `pt-br/intro` hast, ist der Slug `intro`, wenn du die Seitenleiste konfigurierst. + +### Internationalisierung mit Badges + +Für [Abzeichen](#abzeichen) kann die Eigenschaft `text` ein String sein oder für mehrsprachige Seiten ein Objekt mit Werten für jedes unterschiedliche Gebietsschema. +Wenn du die Objektform verwendest, müssen die Schlüssel [BCP-47](https://www.w3.org/International/questions/qa-choosing-language-tags) Tags sein (z.B. `en`, `ar` oder `zh-CN`): + +```js {11-16} +starlight({ + sidebar: [ + { + label: 'Konstellationen', + translations: { + 'pt-BR': 'Constelações', + }, + items: [ + { + slug: 'constellations/andromeda', + badge: { + text: { + de: 'Neu', + 'pt-BR': 'Novo', + }, + }, + }, + ], + }, + ], +}); +``` + +Wenn du die Dokumentation auf brasilianisches Portugiesisch durchsuchst, wird die folgende Seitenleiste angezeigt: + + Date: Mon, 14 Oct 2024 23:04:32 +0000 Subject: [PATCH 12/36] [ci] format --- docs/src/content/docs/de/guides/sidebar.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/src/content/docs/de/guides/sidebar.mdx b/docs/src/content/docs/de/guides/sidebar.mdx index f6728d7509a..a3e7ab74146 100644 --- a/docs/src/content/docs/de/guides/sidebar.mdx +++ b/docs/src/content/docs/de/guides/sidebar.mdx @@ -85,10 +85,10 @@ Und die folgende Dateistruktur: Die folgende Seitenleiste wird erstellt: Um die Werte zu überschreiben, die aus dem Frontmatter einer verlinkten Seite abgeleitet werden, kannst du die Eigenschaften `label`, [`translations`](#internationalisierung) und [`attrs`](#benutzerdefinierte-html-attribute) hinzufügen. @@ -103,7 +103,7 @@ Die folgende Konfiguration entspricht zum Beispiel der obigen Konfiguration, die ```js starlight({ - sidebar: ['constellations/andromeda', 'constellations/orion'], + sidebar: ['constellations/andromeda', 'constellations/orion'], }); ``` From c64020611f219f40cdab2e3c79908747dfbec083 Mon Sep 17 00:00:00 2001 From: Juan Martin Date: Tue, 15 Oct 2024 13:30:15 +0300 Subject: [PATCH 13/36] Add Orbit CSS showcase site (#2472) --- .../showcase/zumerlab.github.io.orbit-docs.png | Bin 0 -> 79728 bytes docs/src/components/showcase-sites.astro | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 docs/src/assets/showcase/zumerlab.github.io.orbit-docs.png diff --git a/docs/src/assets/showcase/zumerlab.github.io.orbit-docs.png b/docs/src/assets/showcase/zumerlab.github.io.orbit-docs.png new file mode 100644 index 0000000000000000000000000000000000000000..53e96874081cebfb5609f2c8ab490af36e3f1ce2 GIT binary patch literal 79728 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 GmH%P}G~mmy$9XDu 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 A=l}o! literal 0 HcmV?d00001 diff --git a/docs/src/components/showcase-sites.astro b/docs/src/components/showcase-sites.astro index 75ada4ea703..9df36070b98 100644 --- a/docs/src/components/showcase-sites.astro +++ b/docs/src/components/showcase-sites.astro @@ -175,4 +175,9 @@ import FluidGrid from './fluid-grid.astro'; thumbnail="docs.ryzekit.com.png" /> + From 7f938e08b149c7266bef7b5af38425d4c5e153eb Mon Sep 17 00:00:00 2001 From: at-the-vr Date: Tue, 15 Oct 2024 10:30:57 +0000 Subject: [PATCH 14/36] [ci] format --- docs/src/components/showcase-sites.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/components/showcase-sites.astro b/docs/src/components/showcase-sites.astro index 9df36070b98..4258f64ac9b 100644 --- a/docs/src/components/showcase-sites.astro +++ b/docs/src/components/showcase-sites.astro @@ -176,7 +176,7 @@ import FluidGrid from './fluid-grid.astro'; /> From 4700ef412081b5577e6da9f1c8691fc2b9d61b5f Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 22:41:35 +0200 Subject: [PATCH 15/36] i18n(de): translate resources/community-content (#2488) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/astro.config.mjs | 1 + .../docs/de/resources/community-content.mdx | 161 ++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 docs/src/content/docs/de/resources/community-content.mdx diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index a75826cdf26..b6281c42f6c 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -166,6 +166,7 @@ export default defineConfig({ { label: 'Resources', translations: { + de: 'Ressourcen', 'zh-CN': '资源', fr: 'Ressources', 'pt-BR': 'Recursos', diff --git a/docs/src/content/docs/de/resources/community-content.mdx b/docs/src/content/docs/de/resources/community-content.mdx new file mode 100644 index 00000000000..fd8b9aabb3e --- /dev/null +++ b/docs/src/content/docs/de/resources/community-content.mdx @@ -0,0 +1,161 @@ +--- +title: Community-Inhalte +description: Entdecke von der Community erstellte Anleitungen, Artikel und Videos, die dir helfen, Starlight zu erlernen und zu bauen! +--- + +:::tip[Füge dein eigenes hinzu!] +Hast du Inhalte über Starlight produziert? +Eröffne eine PR und füge einen Link zu dieser Seite hinzu! +::: + +import { CardGrid, LinkCard } from '@astrojs/starlight/components'; + +## Artikel und Rezensionen + +Hier findest du eine Sammlung von Beiträgen und Artikeln, in denen du mehr über Starlight und die Erfahrungen anderer Menschen erfährst: + + + + + + + +## Beispiele und Leitfäden + +Beispiele sind in der Regel kurze, konzentrierte Anleitungen, die den Leser durch ein funktionierendes Beispiel für eine bestimmte Aufgabe führen. Beispiele sind eine gute Möglichkeit, deinem Starlight-Projekt neue Funktionen oder Verhaltensweisen hinzuzufügen, indem du Schritt-für-Schritt-Anweisungen befolgst! Andere Anleitungen erklären Konzepte, die sich auf einen bestimmten Inhaltsbereich beziehen, z. B. die Verwendung von Bildern oder das Arbeiten mit MDX. + +Erkunde die von der Community erstellten Inhalte, die von Starlight-Benutzern gepflegt werden: + + + + + + + + + + + + + + +## Video-Inhalte + +Entdecke Videos und Kanäle mit Starlight-Inhalten, darunter Live-Streams und Bildungsinhalte. + +import YouTubeGrid from '~/components/youtube-grid.astro'; + +### Astro-Videos + + + +### Community Videos und Streams + + From e825edc07549c59de5cfa72ef8c5523dff3d9af9 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 22:51:54 +0200 Subject: [PATCH 16/36] i18n(de): translate components/cards (#2453) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/components/cards.mdx | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 docs/src/content/docs/de/components/cards.mdx diff --git a/docs/src/content/docs/de/components/cards.mdx b/docs/src/content/docs/de/components/cards.mdx new file mode 100644 index 00000000000..8571a4db023 --- /dev/null +++ b/docs/src/content/docs/de/components/cards.mdx @@ -0,0 +1,110 @@ +--- +title: Karten +description: Lerne, wie du in Starlight Karten verwenden kannst, um Inhalte in einer Box anzuzeigen. +sidebar: + order: 2 +--- + +import { Card } from '@astrojs/starlight/components'; + +Um Inhalte in einer Box anzuzeigen, die den Stilen von Starlight entspricht, verwende die Komponente ``. + +import Preview from '~/components/component-preview.astro'; + + + + + Io, Europa, Ganymed + + + + +## Import + +```tsx +import { Card } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Zeige eine Karte an, indem du die Komponente `` verwendest und einen [`title`](#title) für die Karte angibst. + + + +```mdx +import { Card } from '@astrojs/starlight/components'; + + + Interessante Inhalte, die du hervorheben möchtest. + +``` + + + +```markdoc +{% card title="Schau dir das an" %} +Interessante Inhalte, die du hervorheben möchtest. +{% /card %} +``` + + + + + Interessante Inhalte, die du hervorheben möchtest. + + + + +### Hinzufügen von Symbolen zu Karten + +Füge ein Symbol in eine Karte ein, indem du das Attribut [`icon`](#icon) auf den Namen [eines von Starlights eingebauten Symbolen](/de/reference/icons/#alle-symbole) setzt. + + + +```mdx 'icon="star"' +import { Card } from '@astrojs/starlight/components'; + + + Sirius, Wega, Betelgeuse + +``` + + + +```markdoc 'icon="star"' +{% card title="Sterne" icon="star" %} +Sirius, Wega, Betelgeuse +{% /card %} +``` + + + + + Sirius, Wega, Betelgeuse + + + + +### Karten gruppieren + +Zeige mehrere Karten nebeneinander an, wenn genügend Platz vorhanden ist, indem du sie mit der Komponente [``](/de/components/card-grids/) gruppierst. +Siehe die Anleitung [„Karten gruppieren“](/de/components/card-grids/#karten-gruppieren) für ein Beispiel. + +## ``-Eigenschaften + +**Implementation:** [`Card.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/Card.astro) + +Die Komponente `` akzeptiert die folgenden Eigenschaften: + +### `title` + +**erforderlich** +**Typ:** `string` + +Der Titel der anzuzeigenden Karte. + +### `icon` + +**Typ:** `string` + +Eine Karte kann ein `icon`-Attribut enthalten, das auf den Namen [eines von Starlights eingebauten Icons](/de/reference/icons/#alle-symbole) gesetzt ist. From 43cd7f0c9035521954083feb955fb62219bc275b Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:05:55 +0200 Subject: [PATCH 17/36] i18n(de): translate components/icons (#2462) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/components/icons.mdx | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 docs/src/content/docs/de/components/icons.mdx diff --git a/docs/src/content/docs/de/components/icons.mdx b/docs/src/content/docs/de/components/icons.mdx new file mode 100644 index 00000000000..2e20949c7d2 --- /dev/null +++ b/docs/src/content/docs/de/components/icons.mdx @@ -0,0 +1,128 @@ +--- +title: Symbole +description: Erfahre, wie du Symbole in Starlight anzeigen kannst. +--- + +import { Icon } from '@astrojs/starlight/components'; + +Um Symbole aus Starlights [eingebautem Symbol-Set](/de/reference/icons/#alle-symbole) anzuzeigen, verwende die `` Komponente. + +import Preview from '~/components/component-preview.astro'; + + + + + + + +## Import + +```tsx +import { Icon } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Zeigt ein Symbol mit der Komponente `` an. +Ein Symbole benötigt einen [`name`](#name), der auf [eines der in Starlight eingebauten Icons](/de/reference/icons/#alle-symbole) gesetzt ist, und kann optional ein [`label`](#label) enthalten, um Kontext für Screenreader zu liefern. + + + +```mdx +import { Icon } from '@astrojs/starlight/components'; + + + +``` + + + +```markdoc +{% icon name="star" /%} +{% icon name="starlight" label="Das Starlight-Logo" /%} +``` + + + + + + + + + + +### Anpassen von Symbolen + +Die Attribute [`size`](#size) und [`color`](#color) können verwendet werden, um das Aussehen des Symbols mit CSS-Einheiten und Farbwerten anzupassen. +Das Attribut [`class`](#class) kann verwendet werden, um dem Symbol eigene CSS-Klassen hinzuzufügen. + + + +```mdx +import { Card } from '@astrojs/starlight/components'; + + + +``` + + + +```markdoc +{% icon name="star" color="goldenrod" size="2rem" /%} +{% icon name="rocket" color="var(--sl-color-text-accent)" /%} +``` + + + + + + + + + + +## ``-Eigenschaften + +**Implementation:** [`Icon.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/Icon.astro) + +Die Komponente `` akzeptiert die folgenden Eigenschaften: + +### `name` + +**erforderlich** +**Typ:** `string` + +Der Name des anzuzeigenden Symbols wird auf [eines der in Starlight integrierten Symbole](/de/reference/icons/#alle-symbole) gesetzt. + +### `label` + +**Typ:** `string` + +Eine optionale Beschriftung, die den Kontext für unterstützende Technologien wie Bildschirmlesegeräte liefert. + +Wenn `label` nicht gesetzt ist, wird das Symbol von assistiven Technologien vollständig ausgeblendet. +In diesem Fall ist darauf zu achten, dass der Kontext auch ohne das Symbol verständlich ist. +Ein Link, der nur das Symbol enthält, **muss** das Attribut `label` enthalten, um zugänglich zu sein, aber wenn ein Link Text enthält und das Symbol rein dekorativ ist, kann es sinnvoll sein, das `label` wegzulassen. + +### `size` + +**Typ:** `string` + +Die Größe des Symbols in CSS-Einheiten. + +### `color` + +**Typ:** `string` + +Die Farbe des Symbols unter Verwendung eines CSS-Farbwerts. + +### `class` + +**Typ:** `string` + +Benutzerdefinierte CSS-Klassen, die dem Symbol hinzugefügt werden können. From e4dfe140a6930db39c5d547b13affea2504dc2c3 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:22:53 +0200 Subject: [PATCH 18/36] i18n(de): translate components/steps (#2485) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/components/steps.mdx | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 docs/src/content/docs/de/components/steps.mdx diff --git a/docs/src/content/docs/de/components/steps.mdx b/docs/src/content/docs/de/components/steps.mdx new file mode 100644 index 00000000000..abc520ce21e --- /dev/null +++ b/docs/src/content/docs/de/components/steps.mdx @@ -0,0 +1,120 @@ +--- +title: Schritte +description: Hier erfährst du, wie du nummerierte Listen mit Aufgaben erstellen kannst, um Schritt-für-Schritt-Anleitungen in Starlight zu erstellen. +--- + +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +Um eine nummerierte Liste von Aufgaben zu gestalten und Schritt-für-Schritt-Anleitungen zu erstellen, verwendest du die Komponente ``. + +import Preview from '~/components/component-preview.astro'; + + + + + +1. Erstelle ein neues Starlight-Projekt: + + + + + + ```sh + npm create astro@latest -- --template starlight + ``` + + + + + + ```sh + pnpm create astro --template starlight + ``` + + + + + + ```sh + yarn create astro --template starlight + ``` + + + + + +2. Schreibe deine erste Dokumentationsseite. + + + + + +## Import + +```tsx +import { Steps } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Verwende die Komponente ``, um nummerierte Listen von Aufgaben zu gestalten. +Dies ist nützlich für komplexere Schritt-für-Schritt-Anleitungen, bei denen jeder Schritt deutlich hervorgehoben werden muss. + +Wickle `` um eine geordnete Standard-Markdown-Liste. +Die übliche Markdown-Syntax ist innerhalb von `` anwendbar. + + + +````mdx +import { Steps } from '@astrojs/starlight/components'; + + + +1. Importiere die Komponente in deine MDX-Datei: + + ```js + import { Steps } from '@astrojs/starlight/components'; + ``` + +2. Wickle `` um deine geordneten Listenelemente. + + +```` + + + +````markdoc +{% steps %} + +1. Importiere die Komponente in deine MDX-Datei: + + ```js + import { Steps } from '@astrojs/starlight/components'; + ``` + +2. Wickle `` um deine geordneten Listenelemente. + +{% /steps %} +```` + + + + + +1. Importiere die Komponente in deine MDX-Datei: + + ```js + import { Steps } from '@astrojs/starlight/components'; + ``` + +2. Wickle `` um deine geordneten Listenelemente. + + + + + +## ``-Eigenschaften + +**Implementation:** [`Steps.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/Steps.astro) + +Die Komponente `` akzeptiert keine Eigenschaften. From 6393736e79cd232d6cb7b2f14b22f4a2fbb14516 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:30:50 +0200 Subject: [PATCH 19/36] i18n(de): translate components/link-buttons (#2463) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../docs/de/components/link-buttons.mdx | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 docs/src/content/docs/de/components/link-buttons.mdx diff --git a/docs/src/content/docs/de/components/link-buttons.mdx b/docs/src/content/docs/de/components/link-buttons.mdx new file mode 100644 index 00000000000..0224b2d6213 --- /dev/null +++ b/docs/src/content/docs/de/components/link-buttons.mdx @@ -0,0 +1,145 @@ +--- +title: Link-Buttons +description: Erfahre, wie du in Starlight Link-Buttons für visuell eindeutige Call-to-Action-Links erstellen. +--- + +import { LinkButton } from '@astrojs/starlight/components'; + +Um visuell eindeutige Call-to-Action-Links anzuzeigen, verwenden Sie die Komponente ``. + +import Preview from '~/components/component-preview.astro'; + + + + + Lies die Dokumentationen + + + + +## Import + +```tsx +import { LinkButton } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Verwende die Komponente ``, um einen visuell eindeutigen Call-to-Action-Link anzuzeigen. +Ein Link-Button ist nützlich, um Nutzer zu den relevantesten oder handlungsrelevanten Inhalten zu leiten und wird häufig auf Landing Pages verwendet. + +Ein `` benötigt ein [`href`](#href) Attribut. +Optional kann das Aussehen des Link-Buttons mit dem Attribut [`variant`](#variant) angepasst werden, das auf `primary` (Standard), `secondary` oder `minimal` gesetzt werden kann. + + + +```mdx +import { LinkButton } from '@astrojs/starlight/components'; + +Los geht's + + Konfiguration Referenz + +``` + + + +```markdoc +{% linkbutton href="/de/getting-started/" %}Los geht's{% /linkbutton %} + +{% linkbutton href="/de/reference/configuration/" variant="secondary" %} +Konfiguration Referenz +{% /linkbutton %} +``` + + + + + Los geht's + + Konfiguration Referenz + + + + + +### Hinzufügen von Symbolen zu Link-Buttons + +Füge ein Symbol in einen Link-Button ein, indem du das Attribut [`icon`](#icon) auf den Namen [eines von Starlights eingebauten Symbolen](/de/reference/icons/#alle-symbole) setzt. + +Das Attribut [`iconPlacement`](#iconplacement) kann verwendet werden, um das Symbol vor dem Text zu platzieren, indem man es auf `start` setzt (Standardwert ist `end`). + + + +```mdx {6-7} +import { LinkButton } from '@astrojs/starlight/components'; + + + Verwandt: Astro + +``` + + + +```markdoc {4-5} +{% linkbutton + href="https://docs.astro.build" + variant="secondary" + icon="external" + iconPlacement="start" %} +Verwandt: Astro +{% /linkbutton %} +``` + + + + + Verwandt: Astro + + + + +## ``-Eigenschaften + +**Implementation:** [`LinkButton.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/LinkButton.astro) + +Die ``-Komponente akzeptiert die folgenden Eigenschaften und auch alle [anderen ``-Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a): + +### `href` + +**erforderlich** +**Typ:** `string` + +Die URL, auf die der Link-Button zeigt. + +### `variant` + +**Typ:** `'primary' | 'secondary' | 'minimal'` +**Voreinstellung:** `'primary'` + +Das Aussehen des Link-Button. +Setze auf `primary` für einen auffälligen Call-to-Action-Link mit der Akzentfarbe des Themas, auf `secondary` für einen weniger auffälligen Link oder auf `minimal` für einen Link mit minimalem Styling. + +### `icon` + +**Typ:** `string` + +Ein Link-Button kann ein `icon`-Attribut enthalten, das auf den Namen [eines von Starlights eingebauten Symbolen](/de/reference/icons/#alle-symbole) gesetzt ist. + +### `iconPlacement` + +**Typ:** `'start' | 'end'` +**Voreinstellung:** `'end'` + +Bestimmt die Platzierung des Symbols im Verhältnis zum Text des Link-Buttons. From abcd2af185f3d68a0c7374e422a7916dcbced854 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:43:14 +0200 Subject: [PATCH 20/36] i18n(de): update translation getting-started (#2467) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/getting-started.mdx | 90 +++++++++++--------- 1 file changed, 50 insertions(+), 40 deletions(-) diff --git a/docs/src/content/docs/de/getting-started.mdx b/docs/src/content/docs/de/getting-started.mdx index 1792b695522..4204df88de6 100644 --- a/docs/src/content/docs/de/getting-started.mdx +++ b/docs/src/content/docs/de/getting-started.mdx @@ -5,17 +5,20 @@ description: Lerne wie du deine nächste Dokumentationsseite mit Starlight und A import { Tabs, TabItem } from '@astrojs/starlight/components'; -## Erstelle ein neues Projekt +Starlight ist ein voll funktionsfähiges Dokumentationsframework, welches auf [Astro](https://astro.build) aufbaut. +Diese Anleitung wird dir helfen, mit einem neuen Projekt zu beginnen. +Siehe dir die [manuellen Einrichtungsanweisungen](/de/manual-setup/) an, um Starlight zu einem bestehenden Astro-Projekt hinzuzufügen. -Starlight ist ein voll ausgestattetes Dokumentations-Theme, das auf dem [Astro](https://astro.build) Framework aufbaut. +## Schnellstart + +### Erstelle ein neues Projekt Du kannst ein neues Astro + Starlight Projekt mit dem folgenden Befehl erstellen: - + ```sh -# Erstelle ein neues Projekt mit npm npm create astro@latest -- --template starlight ``` @@ -23,7 +26,6 @@ npm create astro@latest -- --template starlight ```sh -# Erstelle ein neues Projekt mit pnpm pnpm create astro --template starlight ``` @@ -31,7 +33,6 @@ pnpm create astro --template starlight ```sh -# Erstelle ein neues Projekt mit yarn yarn create astro --template starlight ``` @@ -45,41 +46,53 @@ Probiere Starlight in deinem Browser aus: [öffne die Vorlage in StackBlitz](https://stackblitz.com/github/withastro/starlight/tree/main/examples/basics). ::: -## Inhalte mit Starlight erstellen +### Starte den Entwicklungsserver -Starlight ist bereit für dich, neuen Inhalt hinzuzufügen oder deine vorhandenen Dateien mitzubringen! +Wenn du lokal arbeitest, kannst du mit dem [Astro-Entwicklungsserver](https://docs.astro.build/de/reference/cli-reference/#astro-dev) eine Vorschau deiner Arbeit angezeigt bekommen und dein Browser wird automatisch aktualisiert, wenn du Änderungen vornimmst. -### Dateiformate +Führe in deinem Projektverzeichnis den folgenden Befehl aus, um den Entwicklungsserver zu starten: -Starlight unterstützt das Erstellen von Inhalten in Markdown und MDX. (Du kannst die experimentelle [Astro Markdoc Integration](https://docs.astro.build/de/guides/integrations-guide/markdoc/) installieren, um Markdoc zu unterstützen.) + + -### Seiten hinzufügen +```sh +npm run dev +``` -Füge neue Seiten zu deiner Website automatisch hinzu, indem du `.md` oder `.mdx` Dateien in `src/content/docs/` erstellst. Erstelle Unterordner, um deine Dateien zu organisieren und mehrere Pfadsegmente zu erstellen: + + +```sh +pnpm dev ``` -src/content/docs/hello-world.md => your-site.com/hello-world -src/content/docs/guides/faq.md => your-site.com/guides/faq + + + + +```sh +yarn dev ``` -### Typsichere Frontmatter + + -Alle Starlight Seiten teilen sich anpassbare [Frontmatter-Eigenschaften](/de/reference/frontmatter/), mit denen das Erscheinungsbild der Seite gesteuert wird: +Daraufhin wird eine Meldung mit der URL deiner lokalen Vorschau in deinem Terminal angezeigt. +Öffne diese URL, um deine Website zu betrachten. -```md ---- -title: Hello, World! -description: This is a page in my Starlight-powered site ---- -``` +### Inhalt hinzufügen -Wenn du etwas Wichtiges vergisst, wird Starlight dich daran erinnern. +Starlight ist bereit für dich, neuen Inhalt hinzuzufügen oder deine vorhandenen Dateien mitzubringen! -## Veröffentlichung deiner Starlight-Website +Füge neue Seiten zu deiner Website hinzu, indem du Markdown-Dateien im Verzeichnis `src/content/docs/` erstellst. -Sobald du deine Starlight Website erstellt und angepasst hast, kannst du sie auf einen Webserver oder Hosting-Plattform deiner Wahl veröffentlichen, einschließlich Netlify, Vercel, GitHub Pages und vielen mehr. +Lies mehr über dateibasiertes Routing und Unterstützung für MDX- und Markdoc-Dateien in der Anleitung [„Seiten“](/de/guides/pages/). -[Lerne mehr über die Veröffentlichung einer Astro-Website in der Astro-Dokumentation.](https://docs.astro.build/de/guides/deploy/) +### Nächste Schritte + +- **Konfigurieren:** Erfahre mehr über die allgemeinen Optionen in [„Starlight anpassen“](/de/guides/customization/). +- **Navigieren:** Richte dir deine Seitenleiste mit der Anleitung [„Seitenleisten-Navigation“](/de/guides/sidebar/) ein. +- **Komponenten:** Entdecke die eingebauten Karten, Registerkarten und mehr in der Anleitung [„Komponenten“](/de/components/using-components/). +- **Veröffentlichen:** Veröffentliche deine Arbeit mit der Anleitung [„Bereitstellen deiner Website“](https://docs.astro.build/de/guides/deploy/) in den Astro-Dokumenten. ## Starlight aktualisieren @@ -87,30 +100,27 @@ Sobald du deine Starlight Website erstellt und angepasst hast, kannst du sie auf Da es sich bei Starlight um eine Beta-Software handelt, wird es regelmäßig Updates und Verbesserungen geben. Achte darauf Starlight regelmäßig zu aktualisieren! ::: -Starlight ist eine Astro-Integration und wird wie jede `@astrojs/*`-Integration aktualisiert: +Starlight ist eine Astro-Integration. Dieses und andere Astro-Pakete kannst du aktualisieren, indem du den folgenden Befehl in deinem Terminal ausführst: - + ```sh -# Starlight mit npm aktualisieren -npm install @astrojs/starlight@latest +npx @astrojs/upgrade ``` ```sh -# Starlight mit pnpm aktualisieren -pnpm upgrade @astrojs/starlight --latest +pnpm dlx @astrojs/upgrade ``` ```sh -# Starlight mit yarn aktualisieren -yarn upgrade @astrojs/starlight --latest +yarn dlx @astrojs/upgrade ``` @@ -118,12 +128,12 @@ yarn upgrade @astrojs/starlight --latest Eine vollständige Liste der Änderungen findest du im [Starlight Changelog](https://github.com/withastro/starlight/blob/main/packages/starlight/CHANGELOG.md). -## Fehlerbehebung - -Sowohl die Starlight [Projektkonfiguration](/de/reference/configuration/) als auch die [Konfiguration einzelner Seiten](/de/reference/frontmatter/) findest du im Referenzbereich dieser Website. Nutze diese Seiten, um sicherzustellen, dass deine Starlight-Site richtig konfiguriert ist und funktioniert. +## Fehlerbehebung Starlight -In der wachsenden Liste der Anleitungen in der Seitenleiste findest du Hilfe beim Hinzufügen von Inhalten und beim Anpassen deiner Starlight-Website. +Benutze die Referenzseiten [Projektkonfiguration](/de/reference/configuration/) und [Individuelle Seitenfrontmatter-Konfiguration](/de/reference/frontmatter/), um sicherzustellen, dass deine Starlight-Site richtig konfiguriert ist und funktioniert. +In den Anleitungen in der Seitenleiste findest du Hilfe beim Hinzufügen von Inhalten und Anpassen deiner Starlight-Site. -Wenn du keine Antwort in dieser Dokumentation finden kannst, besuche bitte die [Astro Docs](https://docs.astro.build/de/) für die vollständige Astro-Dokumentation. Deine Frage kann vielleicht beantwortet werden, wenn du verstehst, wie Astro im Allgemeinen funktioniert. +Wenn du deine Antwort nicht in diesen Dokumenten finden kannst, besuche bitte die [Astro-Dokumentation](https://docs.astro.build) für eine vollständige Dokumentation des darunterliegenden Frameworks. +Deine Frage lässt sich vielleicht beantworten, wenn du verstehst, wie Astro im Allgemeinen funktioniert, da Astro das Framework ist, auf dem Starlight basiert. -Du kannst auch nach bekannten [Starlight-Problemen auf GitHub](https://github.com/withastro/starlight/issues) suchen und im [Astro Discord](https://astro.build/chat/) Hilfe von unserer aktiven, freundlichen Community erhalten! Du kannst Fragen in unserem `#Support`-Forum stellen oder unseren speziellen `#starlight`-Channel besuchen, um aktuelle Entwicklungen und mehr zu diskutieren. +Du kannst auch nach bekannten [Starlight-Problemen auf GitHub](https://github.com/withastro/starlight/issues) suchen und im [Astro Discord](https://astro.build/chat/) Hilfe von unserer aktiven, freundlichen Community erhalten! Poste Fragen in unserem `#support` Forum mit dem „starlight“ Tag, oder besuche unseren speziellen `#starlight` Kanal, um über die aktuelle Entwicklung und mehr zu diskutieren! \ No newline at end of file From 21a562806e7a0b71691dfcb799d7ca3f7895aebf Mon Sep 17 00:00:00 2001 From: HiDeoo Date: Tue, 15 Oct 2024 21:44:00 +0000 Subject: [PATCH 21/36] [ci] format --- docs/src/content/docs/de/getting-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/content/docs/de/getting-started.mdx b/docs/src/content/docs/de/getting-started.mdx index 4204df88de6..8e04fe8bba5 100644 --- a/docs/src/content/docs/de/getting-started.mdx +++ b/docs/src/content/docs/de/getting-started.mdx @@ -136,4 +136,4 @@ In den Anleitungen in der Seitenleiste findest du Hilfe beim Hinzufügen von Inh Wenn du deine Antwort nicht in diesen Dokumenten finden kannst, besuche bitte die [Astro-Dokumentation](https://docs.astro.build) für eine vollständige Dokumentation des darunterliegenden Frameworks. Deine Frage lässt sich vielleicht beantworten, wenn du verstehst, wie Astro im Allgemeinen funktioniert, da Astro das Framework ist, auf dem Starlight basiert. -Du kannst auch nach bekannten [Starlight-Problemen auf GitHub](https://github.com/withastro/starlight/issues) suchen und im [Astro Discord](https://astro.build/chat/) Hilfe von unserer aktiven, freundlichen Community erhalten! Poste Fragen in unserem `#support` Forum mit dem „starlight“ Tag, oder besuche unseren speziellen `#starlight` Kanal, um über die aktuelle Entwicklung und mehr zu diskutieren! \ No newline at end of file +Du kannst auch nach bekannten [Starlight-Problemen auf GitHub](https://github.com/withastro/starlight/issues) suchen und im [Astro Discord](https://astro.build/chat/) Hilfe von unserer aktiven, freundlichen Community erhalten! Poste Fragen in unserem `#support` Forum mit dem „starlight“ Tag, oder besuche unseren speziellen `#starlight` Kanal, um über die aktuelle Entwicklung und mehr zu diskutieren! From d663578e035d02062b3c96406daf7de2e39d2414 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:53:01 +0200 Subject: [PATCH 22/36] i18n(de): translate resources/showcase (#2490) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../content/docs/de/resources/showcase.mdx | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 docs/src/content/docs/de/resources/showcase.mdx diff --git a/docs/src/content/docs/de/resources/showcase.mdx b/docs/src/content/docs/de/resources/showcase.mdx new file mode 100644 index 00000000000..c28152160c0 --- /dev/null +++ b/docs/src/content/docs/de/resources/showcase.mdx @@ -0,0 +1,21 @@ +--- +title: Starlight Schaufenster +description: Entdecke Websites, die mit Starlight erstellt wurden! +sidebar: + label: Website-Schaufenster +--- + +:::tip[Füge deine eigene hinzu!] +Hast du eine Starlight-Seite gebaut? +[Eröffne einen PR](https://github.com/withastro/starlight/blob/main/CONTRIBUTING.md#showcase) und füge einen Link zu dieser Seite hinzu! +::: + +## Webseiten + +import ShowcaseSites from '~/components/showcase-sites.astro'; + +Starlight wird bereits in der Produktion eingesetzt. Dies sind einige der Seiten im Internet: + + + +Siehe alle [öffentlichen Projekt-Repos mit Starlight auf GitHub](https://github.com/withastro/starlight/network/dependents). From 6aa9b0ac6cfda82152224f233c9c0ae8f9a2fac2 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Wed, 16 Oct 2024 00:10:24 +0200 Subject: [PATCH 23/36] i18n(de): translate resources/plugins (#2489) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../src/content/docs/de/resources/plugins.mdx | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 docs/src/content/docs/de/resources/plugins.mdx diff --git a/docs/src/content/docs/de/resources/plugins.mdx b/docs/src/content/docs/de/resources/plugins.mdx new file mode 100644 index 00000000000..90ce4c6d631 --- /dev/null +++ b/docs/src/content/docs/de/resources/plugins.mdx @@ -0,0 +1,147 @@ +--- +title: Plugins und Integrationen +description: Entdecke Community-Tools wie Plugins und Integrationen, die Starlight erweitern! +sidebar: + order: 1 +--- + +:::tip[Füge dein eigenes hinzu!] +Hast du ein Plugin oder ein Tool für Starlight entwickelt? +Eröffne einen PR und füge einen Link zu dieser Seite hinzu! +::: + +## Plugins + +[Plugins](/de/reference/plugins/) können die Konfiguration, die Benutzeroberfläche und das Verhalten von Starlight anpassen und sind gleichzeitig einfach weiterzugeben und wiederzuverwenden. +Erweitere deine Seite mit offiziellen Plugins, die vom Starlight-Team unterstützt werden, und mit Community-Plugins, die von Starlight-Nutzern gepflegt werden. + +### Offizielle Plugins + + + + + +### Community-Plugins + + + + + + + + + + + + + + + + +### Community-Themes + +Eine Ansicht ist ein Starlight-Plugin, das das visuelle Erscheinungsbild einer Website mit Komponentenüberschreibungen, benutzerdefiniertem CSS oder anderen neuen Funktionen verändert. + + + + + +## Community-Tools und Integrationen + +import { CardGrid, LinkCard } from '@astrojs/starlight/components'; + +Diese Community-Tools und Integrationen können verwendet werden, um deiner Starlight-Website Funktionen hinzuzufügen. + + + + + + + + + + From 5e37616a301f56c8400706c215d6f307ae8703c2 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Wed, 16 Oct 2024 00:28:35 +0200 Subject: [PATCH 24/36] i18n(de): translate components/tabs (#2486) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/components/tabs.mdx | 221 +++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 docs/src/content/docs/de/components/tabs.mdx diff --git a/docs/src/content/docs/de/components/tabs.mdx b/docs/src/content/docs/de/components/tabs.mdx new file mode 100644 index 00000000000..9dbcbc41644 --- /dev/null +++ b/docs/src/content/docs/de/components/tabs.mdx @@ -0,0 +1,221 @@ +--- +title: Registerkarten +description: Lerne, wie du in Starlight Oberflächen mit Registerkarten erstellst, um gleichwertige Informationen zu gruppieren. +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; + +Um eine Oberfläche mit Registerkarten zu erstellen, verwende die Komponenten `` und ``. +Registerkarten sind nützlich, um gleichwertige Informationen zu gruppieren, wenn ein Nutzer nur eine von mehreren Optionen sehen muss. + +import Preview from '~/components/component-preview.astro'; + + + + + Sirius, Wega, Betelgeuse + Io, Europa, Ganymed + + + + +## Import + +```tsx +import { Tabs, TabItem } from '@astrojs/starlight/components'; +``` + +## Verwendung + +Zeige eine Oberfläche mit Registerkarten an, indem du die Komponenten `` und `` benutzt. +Jedes `` muss ein [`label`](#label) haben, um es den Benutzern anzuzeigen. + + + +```mdx +import { Tabs, TabItem } from '@astrojs/starlight/components'; + + + Sirius, Wega, Betelgeuse + Io, Europa, Ganymed + +``` + + + +```markdoc +{% tabs %} +{% tabitem label="Sterne" %} +Sirius, Wega, Betelgeuse +{% /tabitem %} + +{% tabitem label="Monde" %} +Io, Europa, Ganymed +{% /tabitem %} +{% /tabs %} +``` + + + + + Sirius, Wega, Betelgeuse + Io, Europa, Ganymed + + + + +### Registerkarten synchronisieren + +Halte mehrere Registerkartengruppen synchron, indem du das Attribut [`syncKey`](#synckey) hinzufügst. + +Alle `` auf einer Seite mit demselben Wert für `syncKey` zeigen dasselbe aktive Label an. +Auf diese Weise kann dein Leser eine Auswahl treffen (z. B. sein Betriebssystem oder den Paketmanager), die dann beim Navigieren durch die Seiten beibehalten wird. + +Um zusammenhängende Tabs zu synchronisieren, füge eine identische `syncKey`-Eigenschaft zu jeder ``-Komponente hinzu und stelle sicher, dass sie alle die gleichen ``-Beschriftungen verwenden: + + + +```mdx 'syncKey="constellations"' +import { Tabs, TabItem } from '@astrojs/starlight/components'; + +_Ein paar Sterne:_ + + + Bellatrix, Rigel, Betelgeuse + Pollux, Castor A, Castor B + + +_Ein paar Exoplaneten:_ + + + HD 34445 b, Gliese 179 b, Wasp-82 b + Pollux b, HAT-P-24b, HD 50554 b + +``` + + + +```markdoc 'syncKey="constellations"' +_Ein paar Sterne:_ + +{% tabs syncKey="constellations" %} +{% tabitem label="Orion" %} +Bellatrix, Rigel, Betelgeuse +{% /tabitem %} + +{% tabitem label="Zwillinge" %} +Pollux, Castor A, Castor B +{% /tabitem %} +{% /tabs %} + +_Ein paar Exoplaneten:_ + +{% tabs syncKey="constellations" %} +{% tabitem label="Orion" %} +HD 34445 b, Gliese 179 b, Wasp-82 b +{% /tabitem %} + +{% tabitem label="Zwillinge" %} +Pollux b, HAT-P-24b, HD 50554 b +{% /tabitem %} +{% /tabs %} +``` + + + + + +_Ein paar Sterne:_ + + + Bellatrix, Rigel, Betelgeuse + Pollux, Castor A, Castor B + + +_Ein paar Exoplaneten:_ + + + HD 34445 b, Gliese 179 b, Wasp-82 b + Pollux b, HAT-P-24b, HD 50554 b + + + + + + +### Hinzufügen von Symbolen zu Registerkarten + +Füge ein Symbol in ein Tab-Element ein, indem du das Attribut [`icon`](#icon) auf den Namen [eines der in Starlight eingebauten Symbole](/de/reference/icons/#alle-symbole) setzt, um ein Symbol neben dem Label anzuzeigen. + + + +```mdx /icon="\w+"/ +import { Tabs, TabItem } from '@astrojs/starlight/components'; + + + + Sirius, Wega, Betelgeuse + + + Io, Europa, Ganymed + + +``` + + + +```markdoc /icon="\w+"/ +{% tabs %} +{% tabitem label="Sterne" icon="star" %} +Sirius, Wega, Betelgeuse +{% /tabitem %} + +{% tabitem label="Monde" icon="moon" %} +Io, Europa, Ganymed +{% /tabitem %} +{% /tabs %} +``` + + + + + + Sirius, Wega, Betelgeuse + + + Io, Europa, Ganymed + + + + + +## ``-Eigenschaften + +**Implementation:** [`Tabs.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/Tabs.astro) + +Die Komponente `` fasst mehrere ``-Komponenten zusammen und akzeptiert die folgenden Eigenschaften: + +### `syncKey` + +**Typ:** `string` + +Ein Schlüssel, der verwendet wird, um mehrere Registerkartengruppen über mehrere Seiten hinweg zu synchronisieren. + +## ``-Eigenschaften + +**Implementation:** [`TabItem.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/user-components/TabItem.astro) + +Ein Satz von Tabs besteht aus Tab-Elementen, die jeweils die folgenden Eigenschaften haben: + +### `label` + +**Erforderlich** +**Typ:** `string` + +Eine Registerkarte muss ein Attribut `label` enthalten, das auf den Text gesetzt ist, der in der Registerkarte angezeigt werden soll. + +### `icon` + +**Typ:** `string` + +Jedes Tab-Element kann ein `icon`-Attribut enthalten, das auf den Namen [eines von Starlights eingebauten Icons](/de/reference/icons/#alle-symbole) gesetzt ist, um ein Icon neben dem Label anzuzeigen. From 46d53aa2ac6a25e25159b4294b63d1824c3253c1 Mon Sep 17 00:00:00 2001 From: Iyyafi Qolbi Date: Wed, 16 Oct 2024 12:47:48 +0700 Subject: [PATCH 25/36] i18n(id): Update reference/frontmatter.md translation (#2468) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../content/docs/id/reference/frontmatter.md | 125 +++++++++++++++++- 1 file changed, 118 insertions(+), 7 deletions(-) diff --git a/docs/src/content/docs/id/reference/frontmatter.md b/docs/src/content/docs/id/reference/frontmatter.md index f9d0bd83686..7e70a6ace3c 100644 --- a/docs/src/content/docs/id/reference/frontmatter.md +++ b/docs/src/content/docs/id/reference/frontmatter.md @@ -5,8 +5,9 @@ description: Ikhtisar bidang frontmatter bawaan yang didukung Starlight. Anda dapat menyesuaikan masing-masing halaman Markdown dan MDX di Starlight dengan menetapkan nilai di frontmatter. Sebagai contoh, halaman biasa dapat mengatur bidang `title` dan `description`: -```md +```md {3-4} --- +# src/content/docs/example.md title: Tentang proyek ini description: Pelajari lebih lanjut tentang proyek yang sedang Saya kerjakan. --- @@ -28,6 +29,12 @@ Anda harus memberikan judul untuk setiap halaman. Ini akan ditampilkan di bagian Deskripsi halaman digunakan untuk metadata halaman dan akan diambil oleh mesin pencari dan dalam pratinjau media sosial. +### `slug` + +**tipe**: `string` + +Ganti slug halaman. Lihat [“Mendefinisikan slug khusus”](https://docs.astro.build/en/guides/content-collections/#defining-custom-slugs) di dokumentasi Astro untuk detail lebih lanjut. + ### `editUrl` **tipe:** `string | boolean` @@ -42,6 +49,7 @@ Anda dapat menambahkan tag tambahan ke `` halaman Anda menggunakan bidang ```md --- +# src/content/docs/example.md title: Tentang kami head: # Gunakan tag khusus @@ -59,6 +67,7 @@ Sesuaikan tingkat judul yang akan disertakan atau atur ke `false` untuk menyembu ```md --- +# src/content/docs/example.md title: Halaman dengan hanya H2 dalam daftar isi tableOfContents: minHeadingLevel: 2 @@ -68,6 +77,7 @@ tableOfContents: ```md --- +# src/content/docs/example.md title: Halaman tanpa daftar isi tableOfContents: false --- @@ -92,6 +102,7 @@ Sebagai contoh, konfigurasi ini menampilkan beberapa opsi umum, termasuk memuat ```md --- +# src/content/docs/example.md title: Halaman Beranda Saya template: splash hero: @@ -104,10 +115,12 @@ hero: - text: Ceritakan lebih banyak link: /getting-started/ icon: right-arrow - variant: primary - text: Lihat di GitHub link: https://github.com/astronaut/my-project icon: external + variant: minimal + attrs: + rel: me --- ``` @@ -115,11 +128,12 @@ Anda dapat menampilkan versi gambar _hero_ yang berbeda dalam mode terang dan ge ```md --- +# src/content/docs/example.md hero: image: alt: Logo yang berkilauan dan berwarna cerah - dark: ../../assets/logo-dark.png - light: ../../assets/logo-light.png + dark: ~/assets/logo-dark.png + light: ~/assets/logo-light.png --- ``` @@ -152,8 +166,9 @@ interface HeroConfig { actions?: Array<{ text: string; link: string; - variant: 'primary' | 'secondary' | 'minimal'; - icon: string; + variant?: 'primary' | 'secondary' | 'minimal'; + icon?: string; + attrs?: Record<string, string | number | boolean>; }>; } ``` @@ -169,6 +184,7 @@ Sebagai contoh, halaman ini menampilkan spanduk yang menyertakan tautan ke `exam ```md --- +# src/content/docs/example.md title: Halaman dengan banner banner: content: | @@ -185,6 +201,7 @@ Mengesampingkan [opsi `lastUpdated` global](/id/reference/configuration/#lastupd ```md --- +# src/content/docs/example.md title: Halaman dengan tanggal pembaruan terakhir khusus lastUpdated: 2022-08-09 --- @@ -198,6 +215,7 @@ Mengesampingkan [opsi `pagination` global](/id/reference/configuration/#paginati ```md --- +# src/content/docs/example.md # Menyembunyikan tautan halaman sebelumnya prev: false --- @@ -205,6 +223,7 @@ prev: false ```md --- +# src/content/docs/example.md # Mengganti teks tautan halaman sebelumnya prev: lanjutkan tutorial --- @@ -212,6 +231,7 @@ prev: lanjutkan tutorial ```md --- +# src/content/docs/example.md # Mengabaikan tautan dan teks halaman sebelumnya prev: link: /halaman-yang-tidak-berkaitkan/ @@ -227,6 +247,7 @@ Sama seperti [`prev`](#prev) tetapi untuk tautan halaman berikutnya. ```md --- +# src/content/docs/example.md # Menyembunyikan tautan halaman berikutnya next: false --- @@ -241,11 +262,27 @@ Mengatur apakah halaman ini harus disertakan dalam indeks pencarian [Pagefind](h ```md --- +# src/content/docs/example.md # Sembunyikan halaman ini dari indeks pencarian pagefind: false --- ``` +### `draft` + +**tipe:** `boolean` +**bawaan:** `false` + +Tetapkan apakah halaman ini harus dianggap sebagai draf dan tidak disertakan dalam [versi produksi](https://docs.astro.build/en/reference/cli-reference/#astro-build) dan [grup tautan yang dibuat secara otomatis](/id/guides/sidebar/#grup-grup-yang-dihasilkan-secara-otomatis). Ubah ke `true` untuk menandai halaman sebagai draf dan membuatnya hanya terlihat selama masa pengembangan. + +```md +--- +# src/content/docs/example.md +# Kecualikan halaman ini dari versi produksi +draft: true +--- +``` + ### `sidebar` **tipe:** [`SidebarConfig`](#sidebarconfig) @@ -273,6 +310,7 @@ Atur label untuk halaman ini di _sidebar_ saat ditampilkan dalam grup tautan yan ```md --- +# src/content/docs/example.md title: Tentang proyek ini sidebar: label: Tentang @@ -288,6 +326,7 @@ Nomor yang lebih rendah ditampilkan lebih tinggi dalam grup tautan. ```md --- +# src/content/docs/example.md title: Halaman yang akan ditampilkan pertama kali sidebar: order: 1 @@ -303,6 +342,7 @@ Mencegah halaman ini disertakan dalam grup _sidebar_ yang dibuat secara otomatis ```md --- +# src/content/docs/example.md title: Halaman yang disembunyikan dari sidebar yang dibuat secara otomatis sidebar: hidden: true @@ -315,10 +355,11 @@ sidebar: Menambahkan _badge_ ke halaman di _sidebar_ saat ditampilkan dalam grup tautan yang dibuat secara otomatis. Saat menggunakan string, _badge_ akan ditampilkan dengan warna aksen bawaan. -Secara opsional, berikan [objek `BadgeConfig`](/id/reference/configuration/#badgeconfig) dengan bidang `text` dan `variant` untuk menyesuaikan _badge_. +Secara opsional, berikan [objek `BadgeConfig`](/id/reference/configuration/#badgeconfig) dengan bidang `text`, `variant`, dan `class` untuk menyesuaikan _badge_. ```md --- +# src/content/docs/example.md title: Halaman dengan badge sidebar: # Menggunakan varian bawaan yang sesuai dengan warna aksen situs Anda @@ -328,6 +369,7 @@ sidebar: ```md --- +# src/content/docs/example.md title: Halaman badge sidebar: badge: @@ -344,6 +386,7 @@ Atribut HTML untuk ditambahkan ke tautan halaman di _sidebar_ saat ditampilkan d ```md --- +# src/content/docs/example.md title: Membuka halaman di tab baru sidebar: # Membuka halaman di tab baru @@ -351,3 +394,71 @@ sidebar: target: _blank --- ``` + +## Sesuaikan skema frontmatter + +Skema frontmatter untuk koleksi konten `docs` Starlight dikonfigurasikan dalam `src/content/config.ts` menggunakan helper `docsSchema()`: + +```ts {3,6} +// src/content/config.ts +import { defineCollection } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ schema: docsSchema() }), +}; +``` + +Pelajari selengkapnya tentang koleksi skema konten di [“Mendefinisikan koleksi skema”](https://docs.astro.build/en/guides/content-collections/#defining-a-collection-schema) di dokumentasi Astro. + +`docsSchema()` memiliki opsi berikut: + +### `extend` + +**tipe:** Skema Zod atau fungsi yang mengembalikan skema Zod +**bawaan:** `z.object({})` + +Pengembangan skema Starlight dengan kolom tambahan dengan menyetel `extend` dalam opsi `docsSchema()`. +Nilainya harus berupa [skema Zod](https://docs.astro.build/en/guides/content-collections/#defining-datatypes-with-zod). + +Dalam contoh berikut, kami menyediakan tipe yang lebih ketat untuk `description` agar menjadi wajib dan menambahkan kolom `category` opsional baru: + +```ts {8-13} +// src/content/config.ts +import { defineCollection, z } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ + schema: docsSchema({ + extend: z.object({ + // Jadikan kolom bawaan sebagai wajib, bukan opsional. + description: z.string(), + // Tambahkan kolom baru ke skema. + category: z.enum(['tutorial', 'guide', 'reference']).optional(), + }), + }), + }), +}; +``` + +Untuk memanfaatkan [_Astro `image()` helper_](https://docs.astro.build/en/guides/images/#images-in-content-collections), gunakan fungsi yang mengembalikan ekstensi skema Anda: + +```ts {8-13} +// src/content/config.ts +import { defineCollection, z } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ + schema: docsSchema({ + extend: ({ image }) => { + return z.object({ + // Tambahkan kolom yang harus dilengkapi ke gambar lokal. + cover: image(), + }); + }, + }), + }), +}; +``` From f31e17c509eb767ed11c1748206ffe2455bfd798 Mon Sep 17 00:00:00 2001 From: Fevol <8179397+Fevol@users.noreply.github.com> Date: Mon, 21 Oct 2024 11:28:27 +0200 Subject: [PATCH 26/36] docs: add starlight-site-graph and starlight-theme-obsidian (#2493) --- docs/src/content/docs/resources/plugins.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/src/content/docs/resources/plugins.mdx b/docs/src/content/docs/resources/plugins.mdx index 2028cc8cadf..2d4a07f752a 100644 --- a/docs/src/content/docs/resources/plugins.mdx +++ b/docs/src/content/docs/resources/plugins.mdx @@ -88,6 +88,11 @@ Extend your site with official plugins supported by the Starlight team and commu title="starlight-heading-badges" description="Add badges to your Markdown and MDX headings." /> + <LinkCard + href="/Fevol/starlight-site-graph" + title="starlight-site-graph" + description="Add an interactive site graph inside your page's sidebar." + /> </CardGrid> ### Community themes @@ -100,6 +105,11 @@ A theme is a Starlight plugin that changes the visual appearance of a site with title="starlight-theme-rapide" description="Starlight theme inspired by the Visual Studio Code Vitesse theme." /> + <LinkCard + href="/Fevol/starlight-theme-obsidian" + title="starlight-theme-obsidian" + description="Starlight theme inspired by the style of Obsidian Publish sites." + /> </CardGrid> ## Community tools and integrations From d9ce79f7b9b3ea620e752c69df1a34881fb47e9d Mon Sep 17 00:00:00 2001 From: Thomas Bonnet <thomasbnt@protonmail.com> Date: Mon, 21 Oct 2024 23:27:54 +0200 Subject: [PATCH 27/36] i18n(fr): Update `resources/plugins` from #2493 (#2496) Co-authored-by: trueberryless <99918022+trueberryless@users.noreply.github.com> Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/fr/resources/plugins.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/src/content/docs/fr/resources/plugins.mdx b/docs/src/content/docs/fr/resources/plugins.mdx index 8b026f2051a..6d15090ba4d 100644 --- a/docs/src/content/docs/fr/resources/plugins.mdx +++ b/docs/src/content/docs/fr/resources/plugins.mdx @@ -88,6 +88,11 @@ Les [modules d'extension](/fr/reference/plugins/) peuvent personnaliser la confi title="starlight-heading-badges" description="Ajouter des badges à vos en-têtes Markdown et MDX." /> + <LinkCard + href="/Fevol/starlight-site-graph" + title="starlight-site-graph" + description="Ajoutez un graphe interactif de votre site dans la barre latérale de votre page." + /> </CardGrid> ### Thèmes communautaires @@ -100,6 +105,11 @@ Un thème est un module d'extension Starlight qui modifie l'apparence visuelle d title="starlight-theme-rapide" description="Thème Starlight inspiré du thème Vitesse pour Visual Studio Code." /> + <LinkCard + href="/Fevol/starlight-theme-obsidian" + title="starlight-theme-obsidian" + description="Thème Starlight inspiré par le style des sites d'Obsidian Publish." + /> </CardGrid> ## Outils et intégrations communautaires From 0530498b5009d6dcaddeed2eb33f5eccecb607d0 Mon Sep 17 00:00:00 2001 From: Junseong Park <junseongpark.dev@gmail.com> Date: Tue, 22 Oct 2024 15:48:40 +0900 Subject: [PATCH 28/36] i18n(ko-KR): update `plugins.mdx` (#2500) --- docs/src/content/docs/ko/resources/plugins.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/src/content/docs/ko/resources/plugins.mdx b/docs/src/content/docs/ko/resources/plugins.mdx index 8633af74b2f..01ebaf19741 100644 --- a/docs/src/content/docs/ko/resources/plugins.mdx +++ b/docs/src/content/docs/ko/resources/plugins.mdx @@ -88,6 +88,11 @@ Starlight 팀이 지원하는 공식 플러그인과 Starlight 사용자가 관 title="starlight-heading-badges" description="Markdown 및 MDX 제목에 배지를 추가합니다." /> + <LinkCard + href="/Fevol/starlight-site-graph" + title="starlight-site-graph" + description="페이지 사이드바에 대화형 사이트 그래프를 추가합니다." + /> </CardGrid> ### 커뮤니티 테마 @@ -100,6 +105,11 @@ Starlight 팀이 지원하는 공식 플러그인과 Starlight 사용자가 관 title="starlight-theme-rapide" description="Visual Studio Code Vitesse 테마에서 영감을 받은 Starlight 테마입니다." /> + <LinkCard + href="/Fevol/starlight-theme-obsidian" + title="starlight-theme-obsidian" + description="Obsidian Publish 사이트의 스타일에서 영감을 얻은 Starlight 테마입니다." + /> </CardGrid> ## 커뮤니티 도구 및 통합 From 81bc52053bc1896977f9a1546243aa931a96ae0b Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 22 Oct 2024 08:54:49 +0200 Subject: [PATCH 29/36] i18n(de): update `resources/plugins.mdx` (#2498) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/resources/plugins.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/src/content/docs/de/resources/plugins.mdx b/docs/src/content/docs/de/resources/plugins.mdx index 90ce4c6d631..800c3e994bf 100644 --- a/docs/src/content/docs/de/resources/plugins.mdx +++ b/docs/src/content/docs/de/resources/plugins.mdx @@ -88,6 +88,11 @@ Erweitere deine Seite mit offiziellen Plugins, die vom Starlight-Team unterstüt title="starlight-heading-badges" description="Füge Abzeichen zu deinen Markdown- und MDX-Überschriften hinzu." /> + <LinkCard + href="/Fevol/starlight-site-graph" + title="starlight-site-graph" + description="Füge einen interaktives Graphen in die Seitenleiste deiner Seite ein." + /> </CardGrid> ### Community-Themes @@ -100,6 +105,11 @@ Eine Ansicht ist ein Starlight-Plugin, das das visuelle Erscheinungsbild einer W title="starlight-theme-rapide" description="Starlight-Theme inspiriert vom Visual Studio Code Vitesse-Theme." /> + <LinkCard + href="/Fevol/starlight-theme-obsidian" + title="starlight-theme-obsidian" + description="Starlight-Theme inspiriert vom Obsidian Publish-Websites-Theme." + /> </CardGrid> ## Community-Tools und Integrationen From 4305df3e9ea6d2f57c83c219f6eb9f5527671ae3 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 22 Oct 2024 09:57:47 +0200 Subject: [PATCH 30/36] i18n(de): update translation guides/i18n (#2476) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/guides/i18n.mdx | 255 +++++++++++++++++++---- 1 file changed, 218 insertions(+), 37 deletions(-) diff --git a/docs/src/content/docs/de/guides/i18n.mdx b/docs/src/content/docs/de/guides/i18n.mdx index 0f33004850a..eb495d7b4ad 100644 --- a/docs/src/content/docs/de/guides/i18n.mdx +++ b/docs/src/content/docs/de/guides/i18n.mdx @@ -3,15 +3,17 @@ title: Internationalisierung (i18n) description: Lerne, wie du deine Starlight-Website so konfigurierst, dass sie mehrere Sprachen unterstützt. --- -import { FileTree } from '@astrojs/starlight/components'; +import { FileTree, Steps } from '@astrojs/starlight/components'; Starlight bietet eingebaute Unterstützung für mehrsprachige Seiten, einschließlich Routing, Fallback-Inhalte und vollständige Unterstützung von rechts-nach-links (RTL) Sprachen. ## Konfiguriere i18n +<Steps> + 1. Teile Starlight mit, welche Sprachen du unterstützt, indem du [`locales`](/de/reference/configuration/#locales) und [`defaultLocale`](/de/reference/configuration/#defaultlocale) an die Starlight Integration übergibst: - ```js + ```js {9-26} // astro.config.mjs import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; @@ -27,8 +29,8 @@ Starlight bietet eingebaute Unterstützung für mehrsprachige Seiten, einschlie en: { label: 'English', }, - // Vereinfachte chinesische Dokumente in `src/content/docs/zh/` - zh: { + // Vereinfachte chinesische Dokumente in `src/content/docs/zh-cn/` + 'zh-cn': { label: '简体中文', lang: 'zh-CN', }, @@ -55,7 +57,7 @@ Starlight bietet eingebaute Unterstützung für mehrsprachige Seiten, einschlie - docs/ - ar/ - en/ - - zh/ + - zh-cn/ </FileTree> @@ -63,13 +65,17 @@ Starlight bietet eingebaute Unterstützung für mehrsprachige Seiten, einschlie Erstelle zum Beispiel `ar/index.md` und `en/index.md`, um die Homepage für Arabisch bzw. Englisch darzustellen. +</Steps> + +Für fortgeschrittene i18n-Szenarien unterstützt Starlight auch die Konfiguration der Internationalisierung mit [Astro's `i18n`-Konfigurationsoption](https://docs.astro.build/de/guides/internationalization/#configure-i18n-routing). + ### Verwende ein Root-Verzeichnis Du kannst ein Root-Verzeichnis verwenden, um eine Sprache ohne i18n-Präfix in ihrem Pfad anzubieten. Wenn zum Beispiel Englisch dein Stammverzeichnis ist, würde ein englischer Seitenpfad unter `/about` anstelle von `/en/about` zu finden sein. Um ein Stammverzeichnis festzulegen, verwende den Key `root` in deiner `locales`-Konfiguration. Wenn das Root-Verzeichnis auch das Standard-Verzeichnis für deinen Inhalt ist, entferne `defaultLocale` oder setze es auf `'root'`. -```js +```js {9,11-14} // astro.config.mjs import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; @@ -84,7 +90,7 @@ export default defineConfig({ label: 'English', lang: 'en', // lang ist für Stammverzeichnis erforderlich }, - zh: { + 'zh-cn': { label: '简体中文', lang: 'zh-CN', }, @@ -102,7 +108,7 @@ Wenn du ein `root`-Verzeichnis verwendest, speichere die Seiten für diese Sprac - content/ - docs/ - **index.md** - - zh/ + - zh-cn/ - **index.md** </FileTree> @@ -111,7 +117,7 @@ Wenn du ein `root`-Verzeichnis verwendest, speichere die Seiten für diese Sprac Standardmäßig ist Starlight eine einsprachige (englische) Website. Um eine einsprachige Website in einer anderen Sprache zu erstellen, setze diese als `root` in Ihrer `locales` Konfiguration: -```js +```diff lang="js" {10-13} // astro.config.mjs import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; @@ -119,7 +125,7 @@ import starlight from '@astrojs/starlight'; export default defineConfig({ integrations: [ starlight({ - title: 'Meine Dokumentation', + title: 'My Docs', locales: { root: { label: '简体中文', @@ -139,24 +145,59 @@ Starlight erwartet, dass du äquivalente Seiten in allen deinen Sprachen erstell Wenn für eine Sprache noch keine Übersetzung verfügbar ist, zeigt Starlight den Lesern den Inhalt dieser Seite in der Standardsprache (eingestellt über `defaultLocale`). Wenn du z.B. noch keine französische Version Ihrer "About"-Website erstellt hast und deine Standardsprache Englisch ist, werden Besucher von `/fr/about` den englischen Inhalt von `/en/about` sehen, mit einem Hinweis, dass diese Seite noch nicht übersetzt wurde. Auf diese Weise kannst du Inhalte in deiner Standardsprache hinzufügen und sie dann nach und nach übersetzen, wenn du Lust dazu hast. +## Übersetze den Seitentitel + +Standardmäßig verwendet Starlight denselben Titel für alle Sprachen. +Wenn du den Titel für jedes Gebietsschema anpassen möchtest, kannst du in den Optionen von Starlight ein Objekt an [`title`](/de/reference/configuration/#title-erforderlich) übergeben: + +```diff lang="js" +// astro.config.mjs +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; + +export default defineConfig({ + integrations: [ + starlight({ +- title: 'My Docs', ++ title: { ++ en: 'My Docs', ++ 'zh-CN': '我的文档', ++ }, + defaultLocale: 'en', + locales: { + en: { label: 'English' }, + 'zh-cn': { label: '简体中文', lang: 'zh-CN' }, + }, + }), + ], +}); +``` + ## Starlights UI übersetzen +import LanguagesList from '~/components/languages-list.astro'; +import UIStringsList from '~/components/ui-strings-list.astro'; + Starlight bietet nicht nur übersetzte Inhaltsdateien, sondern auch die Möglichkeit, die Standard-Benutzeroberfläche zu übersetzen (z.B. die Überschrift "Auf dieser Seite" im Inhaltsverzeichnis), so dass deine Leser deine Website vollständig in der ausgewählten Sprache erleben können. -Englisch, Tschechisch, Französisch, Deutsch, Italienisch, Japanisch, Portugiesisch, Niederländisch, Dänisch, Spanisch, Türkisch, Arabisch, Norwegisch, Farsi, Hebräisch, Chinesisch (vereinfacht), Koreanisch, Indonesisch, Russisch, Schwedisch, Ukrainisch, Vietnamesisch und Galizisch werden standardmäßig übersetzt, und wir freuen uns über [Beiträge zur Aufnahme weiterer Standardsprachen](https://github.com/withastro/starlight/blob/main/CONTRIBUTING.md). +<LanguagesList startsSentence /> werden standardmäßig übersetzt, und wir freuen +uns über [Beiträge zur Aufnahme weiterer +Standardsprachen](https://github.com/withastro/starlight/blob/main/CONTRIBUTING.md). Du kannst Übersetzungen für zusätzliche Sprachen, die du unterstützt, über die `i18n` Datensammlung zur Verfügung stellen - oder unsere Standardbezeichnungen überschreiben. +<Steps> + 1. Konfiguriere die `i18n` Datensammlung in `src/content/config.ts`, wenn sie nicht bereits konfiguriert ist: - ```js + ```diff lang="js" ins=/, (i18nSchema)/ // src/content/config.ts import { defineCollection } from 'astro:content'; import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; export const collections = { docs: defineCollection({ schema: docsSchema() }), - i18n: defineCollection({ type: 'data', schema: i18nSchema() }), + + i18n: defineCollection({ type: 'data', schema: i18nSchema() }), }; ``` @@ -177,32 +218,16 @@ Du kannst Übersetzungen für zusätzliche Sprachen, die du unterstützt, über Dies sind die englischen Standardwerte der vorhandenen Strings, mit denen Starlight ausgeliefert wird: + <UIStringsList /> + + Die Codeblöcke von Starlight werden von der [Expressive Code](https://github.com/expressive-code/expressive-code) Bibliothek unterstützt. + Du kannst die Übersetzungen für die UI-Strings in derselben JSON-Datei mit Hilfe von `expressiveCode`-Schlüsseln festlegen: + ```json { - "skipLink.label": "Skip to content", - "search.label": "Search", - "search.shortcutLabel": "(Press / to Search)", - "search.cancelLabel": "Cancel", - "search.devWarning": "Search is only available in production builds. \nTry building and previewing the site to test it out locally.", - "themeSelect.accessibleLabel": "Select theme", - "themeSelect.dark": "Dark", - "themeSelect.light": "Light", - "themeSelect.auto": "Auto", - "languageSelect.accessibleLabel": "Select language", - "menuButton.accessibleLabel": "Menu", - "sidebarNav.accessibleLabel": "Main", - "tableOfContents.onThisPage": "On this page", - "tableOfContents.overview": "Overview", - "i18n.untranslatedContent": "This content is not available in your language yet.", - "page.editLink": "Edit page", - "page.lastUpdated": "Last updated:", - "page.previousLink": "Previous", - "page.nextLink": "Next", - "404.text": "Page not found. Check the URL or try using the search bar.", - "aside.note": "Note", - "aside.tip": "Tip", - "aside.caution": "Caution", - "aside.danger": "Danger" + "expressiveCode.copyButtonCopied": "Copied!", + "expressiveCode.copyButtonTooltip": "Copy to clipboard", + "expressiveCode.terminalWindowFallbackTitle": "Terminal window" } ``` @@ -223,3 +248,159 @@ Du kannst Übersetzungen für zusätzliche Sprachen, die du unterstützt, über "pagefind.searching": "Searching for [SEARCH_TERM]..." } ``` + +</Steps> + +### Übersetzungsschema erweitern + +Füge benutzerdefinierte Schlüssel zu den Übersetzungswörterbüchern deiner Website hinzu, indem du die Option `extend` in den `i18nSchema()`-Optionen setzt. +Im folgenden Beispiel wird ein neuer, optionaler Schlüssel `custom.label` zu den Standardschlüsseln hinzugefügt: + +```diff lang="js" +// src/content/config.ts +import { defineCollection, z } from 'astro:content'; +import { docsSchema, i18nSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ schema: docsSchema() }), + i18n: defineCollection({ + type: 'data', + schema: i18nSchema({ ++ extend: z.object({ ++ 'custom.label': z.string().optional(), ++ }), + }), + }), +}; +``` + +Mehr über Inhaltssammlungsschemata erfährst du in [„Ein Sammelschema definieren“](https://docs.astro.build/de/guides/content-collections/#defining-a-collection-schema) in den Astro-Dokumenten. + + +## UI-Übersetzungen verwenden + +Du kannst auf Starlights [eingebaute UI-Strings](/de/guides/i18n/#starlights-ui-übersetzen) sowie auf [benutzerdefinierte](/de/guides/i18n/#übersetzungsschema-erweitern) und [plugin-provided](/de/reference/plugins/#injecttranslations) UI-Strings über eine einheitliche API zugreifen, die von [i18next](https://www.i18next.com/) unterstützt wird. +Dazu gehört die Unterstützung von Funktionen wie [Interpolation](https://www.i18next.com/translation-function/interpolation) und [Pluralisierung](https://www.i18next.com/translation-function/plurals). + +In Astro-Komponenten ist diese API als Teil des [globalen `Astro`-Objekts](https://docs.astro.build/de/reference/api-reference/#astrolocals) als `Astro.locals.t` verfügbar: + +```astro title="example.astro" +<p dir={Astro.locals.t.dir()}> + {Astro.locals.t('404.text')} +</p> +``` + +Du kannst die API auch bei [Endpunkten](https://docs.astro.build/de/guides/endpoints/) verwenden, wo das Objekt `locals` als Teil des [Endpunkt-Kontextes](https://docs.astro.build/de/reference/api-reference/#contextlocals) verfügbar ist: + +```ts title="src/pages/404.ts" +export const GET = (context) => { + return new Response(context.locals.t('404.text')); +}; +``` + +### Rendering eines UI-Strings + +Rendere UI-Strings mit der Funktion `locals.t()`. +Dies ist eine Instanz der i18next-Funktion `t()`, die einen UI-String-Schlüssel als erstes Argument nimmt und die entsprechende Übersetzung für die aktuelle Sprache zurückgibt. + +Nehmen wir zum Beispiel eine benutzerdefinierte Übersetzungsdatei mit folgendem Inhalt: + +```json title="src/content/i18n/de.json" +{ + "link.astro": "Astro Dokumentation", + "link.astro.custom": "Astro-Dokumentation für {{feature}}" +} +``` + +Der erste UI-String kann gerendert werden, indem man `'link.astro'` an die Funktion `t()` übergibt: + +```astro {3} +<!-- src/components/Example.astro --> +<a href="https://docs.astro.build/"> + {Astro.locals.t('link.astro')} +</a> +<!-- Rendert: <a href="...">Astro Dokumentation</a> --> +``` + +Der zweite UI-String verwendet die [Interpolationssyntax](https://www.i18next.com/translation-function/interpolation) von i18next für den Platzhalter `{{feature}}`. +Der Wert für `feature` muss in einem Optionsobjekt gesetzt werden, das als zweites Argument an `t()` übergeben wird: + +```astro {3} +<!-- src/components/Example.astro --> +<a href="https://docs.astro.build/en/guides/astro-db/"> + {Astro.locals.t('link.astro.custom', { feature: 'Astro DB' })} +</a> +<!-- Rendert: <a href="...">Astro-Dokumentation für Astro DB</a> --> +``` + +In der [i18next-Dokumentation](https://www.i18next.com/overview/api#t) findest du weitere Informationen darüber, wie du die Funktion `t()` mit Interpolation, Formatierung und mehr verwenden kannst. + +### Fortgeschrittene APIs + +#### `t.all()` + +Die Funktion `locals.t.all()` gibt ein Objekt zurück, das alle für das aktuelle Gebietsschema verfügbaren UI-Strings enthält. + +```astro +--- +// src/components/Example.astro +const allStrings = Astro.locals.t.all(); +// ^ +// { +// "skipLink.label": "Zum Inhalt springen", +// "search.label": "Suche", +// … +// } +--- +``` + + + +#### `t.exists()` + +Um zu überprüfen, ob ein Übersetzungsschlüssel für eine Sprache existiert, verwende die Funktion `locals.t.exists()` mit dem Übersetzungsschlüssel als erstem Argument. +Übergib ein optionales zweites Argument, wenn du die aktuelle Sprache neu definieren musst. + +```astro +--- +// src/components/Example.astro +const keyExistsInCurrentLocale = Astro.locals.t.exists('a.key'); +// ^ true +const keyExistsInFrench = Astro.locals.t.exists('another.key', { lng: 'fr' }); +// ^ false +--- +``` + +Siehe [Verweis auf `exists()` in der i18next-Dokumentation](https://www.i18next.com/overview/api#exists) für weitere Informationen. + +#### `t.dir()` + +Die Funktion `locals.t.dir()` gibt die Textrichtung des aktuellen oder eines bestimmten Gebietsschemas zurück. + +```astro +--- +// src/components/Example.astro +const currentDirection = Astro.locals.t.dir(); +// ^ +// 'ltr' +const arabicDirection = Astro.locals.t.dir('ar'); +// ^ +// 'rtl' +--- +``` + +Weitere Informationen findest du in der [`dir()`-Referenz in der i18next-Dokumentation](https://www.i18next.com/overview/api#dir). + +## Zugriff auf das aktuelle Gebietsschema + +Du kannst [`Astro.currentLocale`](https://docs.astro.build/de/reference/api-reference/#astrocurrentlocale) verwenden, um das aktuelle Gebietsschema in `.astro` Komponenten zu lesen. + +Das folgende Beispiel liest das aktuelle Gebietsschema aus und verwendet es, um einen Link zu einer Informationsseite in der aktuellen Sprache zu erzeugen: + +```astro +--- +// src/components/AboutLink.astro +--- + +<a href={`/${Astro.currentLocale}/about`}>Über uns</a> +``` From 21358fd958a41a14d20d744c8af8d7b280f20963 Mon Sep 17 00:00:00 2001 From: HiDeoo <HiDeoo@users.noreply.github.com> Date: Tue, 22 Oct 2024 07:58:31 +0000 Subject: [PATCH 31/36] [ci] format --- docs/src/content/docs/de/guides/i18n.mdx | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/src/content/docs/de/guides/i18n.mdx b/docs/src/content/docs/de/guides/i18n.mdx index eb495d7b4ad..93f29eaae99 100644 --- a/docs/src/content/docs/de/guides/i18n.mdx +++ b/docs/src/content/docs/de/guides/i18n.mdx @@ -276,7 +276,6 @@ export const collections = { Mehr über Inhaltssammlungsschemata erfährst du in [„Ein Sammelschema definieren“](https://docs.astro.build/de/guides/content-collections/#defining-a-collection-schema) in den Astro-Dokumenten. - ## UI-Übersetzungen verwenden Du kannst auf Starlights [eingebaute UI-Strings](/de/guides/i18n/#starlights-ui-übersetzen) sowie auf [benutzerdefinierte](/de/guides/i18n/#übersetzungsschema-erweitern) und [plugin-provided](/de/reference/plugins/#injecttranslations) UI-Strings über eine einheitliche API zugreifen, die von [i18next](https://www.i18next.com/) unterstützt wird. @@ -354,8 +353,6 @@ const allStrings = Astro.locals.t.all(); --- ``` - - #### `t.exists()` Um zu überprüfen, ob ein Übersetzungsschlüssel für eine Sprache existiert, verwende die Funktion `locals.t.exists()` mit dem Übersetzungsschlüssel als erstem Argument. From cb04a08759b43a135a71269e6fadb618e7167802 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:34:00 +0200 Subject: [PATCH 32/36] i18n(de): update translation reference/frontmatter (#2470) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../content/docs/de/reference/frontmatter.md | 173 +++++++++++++++--- 1 file changed, 143 insertions(+), 30 deletions(-) diff --git a/docs/src/content/docs/de/reference/frontmatter.md b/docs/src/content/docs/de/reference/frontmatter.md index 451794ee580..d81a70bf4f5 100644 --- a/docs/src/content/docs/de/reference/frontmatter.md +++ b/docs/src/content/docs/de/reference/frontmatter.md @@ -1,12 +1,15 @@ --- title: Frontmatter Referenz description: Ein Überblick über die von Starlight unterstützten Standard-Frontmatter-Felder. +sidebar: + label: Frontmatter --- Du kannst einzelne Markdown- und MDX-Seiten in Starlight anpassen, indem du Werte in deren Frontmatter setzt. Zum Beispiel könnte eine normale Seite die Felder `title` und `description` setzen: -```md +```md {3-4} --- +# src/content/docs/example.md title: Über dieses Projekt description: Erfahre mehr über das Projekt, an dem ich gerade arbeite. --- @@ -18,30 +21,37 @@ Willkommen auf der Info-Seite! ### `title` (erforderlich) -**type:** `string` +**Typ:** `string` Du musst für jede Seite einen Titel angeben. Dieser wird oben auf der Seite, in Browser-Tabs und in den Seiten-Metadaten angezeigt. ### `description` -**type:** `string` +**Typ:** `string` Die Seitenbeschreibung wird für die Metadaten der Seite verwendet und wird von Suchmaschinen und in der Vorschau von sozialen Medien angezeigt. +### `slug` + +**Typ**: `string` + +Setzt den Slug der Seite außer Kraft. Siehe [„Benutzerdefinierte Slugs definieren“](https://docs.astro.build/de/guides/content-collections/#defining-custom-slugs) in der Astro-Dokumentation für weitere Details. + ### `editUrl` -**type:** `string | boolean` +**Typ:** `string | boolean` Überschreibt die [globale `editLink`-Konfiguration](/de/reference/configuration/#editlink). Setze die Konfiguration auf `false`, um den Link `Seite bearbeiten` für eine bestimmte Seite zu deaktivieren oder gibt eine alternative URL an, unter der der Inhalt dieser Seite bearbeitet werden kann. ### `head` -**type:** [`HeadConfig[]`](/de/reference/configuration/#headconfig) +**Typ:** [`HeadConfig[]`](/de/reference/configuration/#headconfig) Du kannst zusätzliche Tags zum `<head>` deiner Seite hinzufügen, indem du das Feld `head` Frontmatter verwendest. Dies bedeutet, dass du benutzerdefinierte Stile, Metadaten oder andere Tags zu einer einzelnen Seite hinzufügen kannst. Ähnlich wie bei der [globalen `head` Option](/de/reference/configuration/#head). ```md --- +# src/content/docs/example.md title: Über uns head: # Benutze einen eigenen <title> Tag @@ -52,13 +62,14 @@ head: ### `tableOfContents` -**type:** `false | { minHeadingLevel?: number; maxHeadingLevel?: number; }` +**Typ:** `false | { minHeadingLevel?: number; maxHeadingLevel?: number; }` Überschreibt die [globale `tableOfContents`-Konfiguration](/de/reference/configuration/#tableofcontents). Passe die einzuschließenden Überschriftsebenen an oder setze sie auf `false`, um das Inhaltsverzeichnis auf dieser Seite auszublenden. ```md --- +# src/content/docs/example.md title: Seite mit nur H2s im Inhaltsverzeichnis tableOfContents: minHeadingLevel: 2 @@ -68,6 +79,7 @@ tableOfContents: ```md --- +# src/content/docs/example.md title: Seite ohne Inhaltsverzeichnis tableOfContents: false --- @@ -75,8 +87,8 @@ tableOfContents: false ### `template` -**type:** `'doc' | 'splash'` -**default:** `'doc'` +**Typ:** `'doc' | 'splash'` +**Voreinstellung:** `'doc'` Legt die Layoutvorlage für diese Seite fest. Seiten verwenden standardmäßig das `'doc'`-Layout. @@ -84,7 +96,7 @@ Setze den Typen auf `'splash'`, um ein breiteres Layout ohne Seitenleisten zu ve ### `hero` -**type:** [`HeroConfig`](#heroconfig) +**Typ:** [`HeroConfig`](#heroconfig) Fügt eine Hero-Komponente oben auf der Seite ein. Kann sehr gut mit `template: splash` kombiniert werden. @@ -92,6 +104,7 @@ Zum Beispiel zeigt diese Konfiguration einige übliche Optionen, einschließlich ```md --- +# src/content/docs/example.md title: Meine Website template: splash hero: @@ -99,15 +112,17 @@ hero: tagline: Bringe deine Wertgegenstände im Handumdrehen auf den Mond und wieder zurück. image: alt: Ein glitzerndes, leuchtend farbiges Logo - file: ../../assets/logo.png + file: ~/assets/logo.png actions: - text: Erzähl mir mehr link: /getting-started/ icon: right-arrow - variant: primary - text: Schau mal auf GitHub vorbei link: https://github.com/astronaut/mein-projekt icon: external + variant: minimal + attrs: + rel: me --- ``` @@ -115,11 +130,12 @@ Du kannst verschiedene Versionen der Hero-Komponente im hellen und dunklen Modus ```md --- +# src/content/docs/example.md hero: image: alt: Ein glitzerndes, farbenfrohes Logo - dark: ../../assets/logo-dark.png - light: ../../assets/logo-light.png + dark: ~/assets/logo-dark.png + light: ~/assets/logo-light.png --- ``` @@ -152,15 +168,16 @@ interface HeroConfig { actions?: Array<{ text: string; link: string; - variant: 'primary' | 'secondary' | 'minimal'; - icon: string; + variant?: 'primary' | 'secondary' | 'minimal'; + icon?: string; + attrs?: Record<string, string | number | boolean>; }>; } ``` ### `banner` -**type:** `{ content: string }` +**Typ:** `{ content: string }` Zeigt ein Ankündigungsbanner oben auf dieser Seite an. @@ -169,6 +186,7 @@ Auf dieser Seite wird beispielsweise ein Banner mit einem Link zu `example.com` ```md --- +# src/content/docs/example.md title: Seite mit Banner banner: content: | @@ -179,12 +197,13 @@ banner: ### `lastUpdated` -**type:** `Date | boolean` +**Typ:** `Date | boolean` Überschreibt die [globale Option `lastUpdated`](/de/reference/configuration/#lastupdated). Wenn ein Datum angegeben wird, muss es ein gültiger [YAML-Zeitstempel](https://yaml.org/type/timestamp.html) sein und überschreibt somit das im Git-Verlauf für diese Seite gespeicherte Datum. ```md --- +# src/content/docs/example.md title: Seite mit einem benutzerdefinierten Datum der letzten Aktualisierung lastUpdated: 2022-08-09 --- @@ -192,12 +211,13 @@ lastUpdated: 2022-08-09 ### `prev` -**type:** `boolean | string | { link?: string; label?: string }` +**Typ:** `boolean | string | { link?: string; label?: string }` Überschreibt die [globale Option `pagination`](/de/reference/configuration/#pagination). Wenn eine Zeichenkette angegeben wird, wird der generierte Linktext ersetzt und wenn ein Objekt angegeben wird, werden sowohl der Link als auch der Text überschrieben. ```md --- +# src/content/docs/example.md # Versteckt den Link zur vorherigen Seite prev: false --- @@ -205,6 +225,7 @@ prev: false ```md --- +# src/content/docs/example.md # Überschreibe den Linktext der vorherigen Seite prev: Fortsetzung des Tutorials --- @@ -212,6 +233,7 @@ prev: Fortsetzung des Tutorials ```md --- +# src/content/docs/example.md # Überschreibe sowohl den Link zur vorherigen Seite als auch den Text prev: link: /unverwandte-seite/ @@ -221,12 +243,13 @@ prev: ### `next` -**type:** `boolean | string | { link?: string; label?: string }` +**Typ:** `boolean | string | { link?: string; label?: string }` Dasselbe wie [`prev`](#prev), aber für den Link zur nächsten Seite. ```md --- +# src/content/docs/example.md # Versteckt den Link zur nächsten Seite next: false --- @@ -234,21 +257,37 @@ next: false ### `pagefind` -**type:** `boolean` -**default:** `true` +**Typ:** `boolean` +**Voreinstellung:** `true` Legt fest, ob diese Seite in den [Pagefind](https://pagefind.app/)-Suchindex aufgenommen werden soll. Setze das Feld auf `false`, um eine Seite von den Suchergebnissen auszuschließen: ```md --- +# src/content/docs/example.md # Diese Seite aus dem Suchindex ausblenden pagefind: false --- ``` +### `draft` + +**Typ:** `boolean` +**Voreinstellung:** `false` + +Legt fest, ob diese Seite als Entwurf betrachtet werden soll und nicht in [Produktions-Builds](https://docs.astro.build/de/reference/cli-reference/#astro-build) und [Autogenerierte Link-Gruppen](/de/guides/sidebar/#automatisch-erzeugte-gruppen) aufgenommen werden soll. Setze die Eigenschaft auf `true`, um eine Seite als Entwurf zu markieren und sie nur während der Entwicklung sichtbar zu machen. + +```md +--- +# src/content/docs/example.md +# Diese Seite von den Produktions-Builds ausschließen +draft: true +--- +``` + ### `sidebar` -**type:** [`SidebarConfig`](#sidebarconfig) +**Typ:** [`SidebarConfig`](#sidebarconfig) Steuert, wie diese Seite in der [Seitenleiste](/de/reference/configuration/#sidebar) angezeigt wird, wenn eine automatisch generierte Linkgruppe verwendet wird. @@ -266,13 +305,14 @@ interface SidebarConfig { #### `label` -**type:** `string` -**default:** the page [`title`](#title-erforderlich) +**Typ:** `string` +**Voreinstellung:** der Seitentitel ([`title`](#title-erforderlich)) Legt die Bezeichnung für diese Seite in der Seitenleiste fest, wenn sie in einer automatisch erzeugten Linkgruppe angezeigt wird. ```md --- +# src/content/docs/example.md title: Über dieses Projekt sidebar: label: Infos @@ -281,13 +321,14 @@ sidebar: #### `order` -**type:** `number` +**Typ:** `number` Steuere die Reihenfolge dieser Seite beim Sortieren einer automatisch erstellten Gruppe von Links. Niedrigere Nummern werden in der Linkgruppe weiter oben angezeigt. ```md --- +# src/content/docs/example.md title: Erste Seite sidebar: order: 1 @@ -296,13 +337,14 @@ sidebar: #### `hidden` -**type:** `boolean` -**default:** `false` +**Typ:** `boolean` +**Voreinstellung:** `false` Verhindert, dass diese Seite in eine automatisch generierte Seitenleistengruppe aufgenommen wird. ```md --- +# src/content/docs/example.md title: Versteckte Seite sidebar: hidden: true @@ -311,14 +353,15 @@ sidebar: #### `badge` -**type:** <code>string | <a href="/de/reference/configuration/#badgeconfig">BadgeConfig</a></code> +**Typ:** <code>string | <a href="/de/reference/configuration/#badgeconfig">BadgeConfig</a></code> Füge der Seite in der Seitenleiste ein Abzeichen hinzu, wenn es in einer automatisch generierten Gruppe von Links angezeigt wird. Bei Verwendung einer Zeichenkette wird das Abzeichen mit einer Standard-Akzentfarbe angezeigt. -Optional kann ein [`BadgeConfig` Objekt](/de/reference/configuration/#badgeconfig) mit den Feldern `text` und `variant` übergeben werden, um das Abzeichen anzupassen. +Optional kann ein [`BadgeConfig` Objekt](/de/reference/configuration/#badgeconfig) mit den Feldern `text`, `variant` and `class` übergeben werden, um das Abzeichen anzupassen. ```md --- +# src/content/docs/example.md title: Seite mit einem Badge sidebar: # Verwendet die Standardvariante, die der Akzentfarbe deiner Website entspricht @@ -328,6 +371,7 @@ sidebar: ```md --- +# src/content/docs/example.md title: Seite mit einem Abzeichen sidebar: badge: @@ -338,12 +382,13 @@ sidebar: #### `attrs` -**type:** `Record<string, string | number | boolean | undefined>` +**Typ:** `Record<string, string | number | boolean | undefined>` HTML-Attribute, die dem Seitenlink in der Seitenleiste hinzugefügt werden, wenn er in einer automatisch generierten Gruppe von Links angezeigt wird. ```md --- +# src/content/docs/example.md title: Seite im neuen Tab öffnen sidebar: # Dies öffnet den Link in einem neuen Tab @@ -351,3 +396,71 @@ sidebar: target: _blank --- ``` + +## Frontmatter-Schema anpassen + +Das Frontmatter-Schema für die Starlight-Inhaltssammlung `docs` wird in `src/content/config.ts` mit dem `docsSchema()`-Helper konfiguriert: + +```ts {3,6} +// src/content/config.ts +import { defineCollection } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ schema: docsSchema() }), +}; +``` + +Mehr über Schemata für Inhaltssammlungen erfährst du in [„Definieren eines Sammelschemas“](https://docs.astro.build/de/guides/content-collections/#definieren-eines-sammelschemas) in den Astro-Dokumenten. + +`docsSchema()` nimmt die folgenden Optionen an: + +### `extend` + +**Typ:** Zod-Schema oder Funktion, die ein Zod-Schema zurückgibt +**Voreinstellung:** `z.object({})` + +Erweitere das Schema von Starlight um zusätzliche Felder, indem du `extend` in den `docsSchema()` Optionen setzt. +Der Wert sollte ein [Zod-Schema](https://docs.astro.build/de/guides/content-collections/#datentypen-mit-zod-definieren) sein. + +Im folgenden Beispiel geben wir einen strengeren Typ für `description` an, um es zur Pflicht zu machen und fügen ein neues optionales Feld `category` hinzu: + +```ts {8-13} +// src/content/config.ts +import { defineCollection, z } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ + schema: docsSchema({ + extend: z.object({ + // Mache ein eingebautes Feld erforderlich statt optional. + description: z.string(), + // Füge dem Schema ein neues Feld hinzu. + category: z.enum(['tutorial', 'guide', 'reference']).optional(), + }), + }), + }), +}; +``` + +Um die Vorteile der [Astro `image()`-Hilfe](https://docs.astro.build/de/guides/images/#bilder-in-inhaltssammlungen) zu nutzen, verwende eine Funktion, die deine Schemaerweiterung zurückgibt: + +```ts {8-13} +// src/content/config.ts +import { defineCollection, z } from 'astro:content'; +import { docsSchema } from '@astrojs/starlight/schema'; + +export const collections = { + docs: defineCollection({ + schema: docsSchema({ + extend: ({ image }) => { + return z.object({ + // Füge ein Feld hinzu, das auf ein lokales Bild aufgelöst werden muss. + cover: image(), + }); + }, + }), + }), +}; +``` From 88455b28581a6f803ccff6488487d5d1a8f50d91 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:42:45 +0200 Subject: [PATCH 33/36] i18n(de): update translation reference/configuration (#2459) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../docs/de/reference/configuration.mdx | 250 +++++++++++++++--- 1 file changed, 206 insertions(+), 44 deletions(-) diff --git a/docs/src/content/docs/de/reference/configuration.mdx b/docs/src/content/docs/de/reference/configuration.mdx index 03df0286f26..03a5aa874bc 100644 --- a/docs/src/content/docs/de/reference/configuration.mdx +++ b/docs/src/content/docs/de/reference/configuration.mdx @@ -1,6 +1,8 @@ --- title: Konfigurationsreferenz description: Ein Überblick über alle von Starlight unterstützten Konfigurationsoptionen. +sidebar: + label: Konfiguration --- ## Konfiguriere die `starlight` Integration @@ -25,10 +27,22 @@ Du kannst die folgenden Optionen an die `starlight` Integration übergeben. ### `title` (erforderlich) -**Typ:** `string` +**Typ:** `string | Record<string, string>` Lege den Titel für deine Website fest. Wird in den Metadaten und im Titel der Browser-Tabs verwendet. +Der Wert kann eine Zeichenkette sein, oder für mehrsprachige Websites ein Objekt mit Werten für jedes Gebietsschema. +Wenn die Objektform verwendet wird, müssen die Schlüssel BCP-47-Tags sein (z. B. `en`, `ar` oder `zh-CN`): + +```ts +starlight({ + title: { + en: 'My delightful docs site', + de: 'Meine bezaubernde Dokumentationsseite', + }, +}); +``` + ### `description` **Typ:** `string` @@ -69,7 +83,7 @@ Konfiguriere das Inhaltsverzeichnis, das rechts auf jeder Seite angezeigt wird. **Typ:** `{ baseUrl: string }` -Aktiviere "Diese Seite bearbeiten"-Links, indem du die Basis-URL für diese festlegst. Der endgültige Link wird `editLink.baseUrl` + der aktuelle Seitenpfad sein. Zum Beispiel, um das Bearbeiten von Seiten im `withastro/starlight` Repo auf GitHub zu ermöglichen: +Aktiviere „Diese Seite bearbeiten“-Links, indem du die Basis-URL für diese festlegst. Der endgültige Link wird `editLink.baseUrl` + der aktuelle Seitenpfad sein. Zum Beispiel, um das Bearbeiten von Seiten im `withastro/starlight` Repo auf GitHub zu ermöglichen: ```js starlight({ @@ -88,28 +102,38 @@ Mit dieser Konfiguration würde eine `/einfuehrung` einen Bearbeitungslink haben Konfiguriere die Navigationselemente der Seitenleiste deiner Website. Eine Seitenleiste ist eine Array von Links und Linkgruppen. -Jedes Element muss ein `label` und eine der folgenden Eigenschaften haben: +Mit Ausnahme von Einträgen, die `slug` verwenden, muss jeder Eintrag ein `label` und eine der folgenden Eigenschaften haben: - `link` - ein einzelner Link zu einer bestimmten URL, z.B. `'/home'` oder `'https://example.com'`. + +- `slug` - ein Verweis auf eine interne Seite, z.B. `'guides/getting-started'`. + - `items` - ein Array, das weitere Links und Untergruppen enthält. + - `autogenerate` - ein Objekt, das ein Verzeichnis deiner Dokumentation angibt, aus dem automatisch eine Gruppe von Links erzeugt werden soll. +Interne Links können auch als Zeichenkette anstelle eines Objekts mit der Eigenschaft `slug` angegeben werden. + ```js starlight({ sidebar: [ // Ein einzelner Link mit der Bezeichnung "Startseite". { label: 'Startseite', link: '/' }, - // Eine Gruppe mit der Bezeichnung "Hier anfangen", die zwei Links enthält. + // Eine Gruppe mit der Bezeichnung „Hier beginnen“, die vier Links enthält. { label: 'Hier anfangen', items: [ - { label: 'Einleitung', link: '/intro' }, - { label: 'Nächste Schritte', link: '/next-steps' }, + // Verwendung von `slug` für interne Links. + { slug: 'intro' }, + { slug: 'installation' }, + // Oder du verwendst die Abkürzung für interne Links. + 'tutorial', + 'next-steps', ], }, // Eine Gruppe, die auf alle Seiten im Referenzverzeichnis verweist. { - label: 'Referenz', + label: 'Referenzen', autogenerate: { directory: 'referenz' }, }, ], @@ -127,20 +151,17 @@ Gruppen von Links sind standardmäßig aufgeklappt. Du kannst dieses Verhalten Autogenerierte Untergruppen respektieren standardmäßig die Eigenschaft `collapsed` ihrer übergeordneten Gruppe. Dies kannst du mit der Eigenschaft `autogenerate.collapsed` außer Kraft setzen. -```js +```js {5,13} sidebar: [ // Eine zusammengefasste Gruppe von Links { - label: 'Collapsed Links', + label: 'Zusammengeklappte Links', collapsed: true, - items: [ - { label: 'Einleitung', link: '/intro' }, - { label: 'Nächste Schritte', link: '/next-steps' }, - ], + items: ['intro', 'next-steps'], }, // Eine aufgeklappte Gruppe, die automatisch generierte Untergruppen enthält, welche standardmäßig eingeklappt sind. { - label: 'Referenz', + label: 'Referenzen', autogenerate: { directory: 'reference', collapsed: true, @@ -153,7 +174,7 @@ sidebar: [ Wenn deine Website mehrsprachig ist, wird das `label` jedes Elements als in der Standard-Sprache verfasst betrachtet. Du kannst die Eigenschaft `translations` verwenden, um die Labels für andere unterstützte Sprachen festzulegen: -```js +```js {5,9,14} sidebar: [ // Ein Beispiel für eine Seitenleiste mit ins Französische übersetzten Beschriftungen { @@ -178,21 +199,37 @@ sidebar: [ #### `SidebarItem` ```ts -type SidebarItem = { - label: string; - translations?: Record<string, string>; - badge?: string | BadgeConfig; -} & ( - | { - link: string; - attrs?: Record<string, string | number | boolean | undefined>; - } - | { items: SidebarItem[]; collapsed?: boolean } - | { - autogenerate: { directory: string; collapsed?: boolean }; - collapsed?: boolean; - } -); +type SidebarItem = + | string + | ({ + translations?: Record<string, string>; + badge?: string | BadgeConfig; + } & ( + | { + // Link + link: string; + label: string; + attrs?: Record<string, string | number | boolean | undefined>; + } + | { + // Interner Link + slug: string; + label?: string; + attrs?: Record<string, string | number | boolean | undefined>; + } + | { + // Gruppe von Links + label: string; + items: SidebarItem[]; + collapsed?: boolean; + } + | { + // Automatisch generierte Linkgruppe + label: string; + autogenerate: { directory: string; collapsed?: boolean }; + collapsed?: boolean; + } + )); ``` #### `BadgeConfig` @@ -200,7 +237,8 @@ type SidebarItem = { ```ts interface BadgeConfig { text: string; - variant: 'note' | 'tip' | 'caution' | 'danger' | 'success' | 'default'; + variant?: 'note' | 'tip' | 'caution' | 'danger' | 'success' | 'default'; + class?: string; } ``` @@ -208,12 +246,11 @@ interface BadgeConfig { **Typ:** <code>\{ \[dir: string\]: [LocaleConfig](#localeconfig) \}</code> -[Konfiguriere die Internationalisierung (i18n)](/de/guides/i18n/) für Ihre Website, indem du festlegst, welche `Locales` unterstützt werden. +[Konfiguriere die Internationalisierung (i18n)](/de/guides/i18n/) für deine Website, indem du festlegst, welche `locales` unterstützt werden. Jeder Eintrag sollte das Verzeichnis, in dem die Dateien der jeweiligen Sprache gespeichert sind, als Schlüssel verwenden. ```js -// astro.config.mjs import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; @@ -266,7 +303,7 @@ Die Bezeichnung für diese Sprache, die den Benutzern angezeigt werden soll, z. **Typ:** `string` -Das BCP-47-Tag für diese Sprache, z. B. `"en"`, `"ar"` oder `"zh-CN"`. Wenn nicht gesetzt, wird standardmäßig der Verzeichnisname der Sprache verwendet. Sprach-Tags mit regionalen Unter-Tags (z.B. `"pt-BR"` oder `"en-US"`) verwenden integrierte UI-Übersetzungen für ihre Basissprache, wenn keine regionalspezifischen Übersetzungen gefunden werden. +Das BCP-47-Tag für diese Sprache, z. B. `"en"`, `"ar"` oder `"zh-CN"`. Wenn nicht gesetzt, wird standardmäßig der Verzeichnisname der Sprache verwendet. Sprach-Tags mit regionalen Unter-Tags (z.B. `"pt-BR"` oder `"en-US"`) verwenden integrierte UI-Übersetzungen für deine Basissprache, wenn keine regionalspezifischen Übersetzungen gefunden werden. ##### `dir` @@ -278,7 +315,7 @@ Die Schreibrichtung dieser Sprache; `"ltr"` für links-nach-rechts (die Voreinst Du kannst die Standardsprache ohne ein `/lang/`-Verzeichnis anbieten, indem du ein `root`-Locale setzst: -```js +```js {3-6} starlight({ locales: { root: { @@ -302,7 +339,7 @@ Legt die Sprache fest, die als Standard für diese Website gilt. Der Wert sollte mit einem der Schlüssel deines [`locales`](#locales)-Objekts übereinstimmen. (Wenn deine Standardsprache deiner [Root-Locale](#root-locale) ist, kannst du dies überspringen). -Das `defaultLocale` wird verwendet, um Ersatzinhalte bereitzustellen, wenn Übersetzungen fehlen. +Das standard Locale wird verwendet, um Ersatzinhalte bereitzustellen, wenn Übersetzungen fehlen. ### `social` @@ -344,6 +381,94 @@ starlight({ }); ``` +### `expressiveCode` + +**Typ:** `StarlightExpressiveCodeOptions | boolean` +**Voreinstellung:** `true` + +Starlight verwendet [Expressive Code](https://github.com/expressive-code/expressive-code/tree/main/packages/astro-expressive-code), um Codeblöcke zu rendern und Unterstützung für das Hervorheben von Teilen von Codebeispielen, das Hinzufügen von Dateinamen zu Codeblöcken und mehr hinzuzufügen. +Im [Handbuch „Codeblöcke“](/de/guides/authoring-content/#codeblöcke) erfährst du, wie du die Expressive Code-Syntax in deinen Markdown- und MDX-Inhalten verwendest. + +Du kannst alle standardmäßigen [Expressive Code-Konfigurationsoptionen](https://github.com/expressive-code/expressive-code/blob/main/packages/astro-expressive-code/README.md#configuration) sowie einige Starlight-spezifische Eigenschaften verwenden, indem du sie in der Option `expressiveCode` von Starlight festlegst. +Lege beispielsweise die Option `styleOverrides` von Expressive Code fest, um das Standard-CSS zu überschreiben. Dadurch sind Anpassungen möglich, beispielsweise das Hinzufügen abgerundeter Ecken zu deinen Codeblöcken: + +```js ins={2-4} +starlight({ + expressiveCode: { + styleOverrides: { borderRadius: '0.5rem' }, + }, +}); +``` + +Wenn du Expressive Code deaktivieren möchtest, setze in deiner Starlight-Konfiguration `expressiveCode: false`: + +```js ins={2} +starlight({ + expressiveCode: false, +}); +``` + +Zusätzlich zu den standardmäßigen Expressive Code-Optionen kannst du in deiner `expressiveCode`-Konfiguration auch die folgenden Starlight-spezifischen Eigenschaften festlegen, um das Designverhalten für deine Codeblöcke weiter anzupassen: + +#### `themes` + +**Typ:** `Array<string | ThemeObject | ExpressiveCodeTheme>` +**Voreinstellung:** `['starlight-dark', 'starlight-light']` + +Lege die Designs fest, die zum Stylen von Codeblöcken verwendet werden. +Weitere Informationen zu den unterstützten Designformaten findest du in der [Expressive Code-Dokumentation zu Designs](https://github.com/expressive-code/expressive-code/blob/main/packages/astro-expressive-code/README.md#themes). + +Starlight verwendet standardmäßig die dunkle und helle Variante von Sarah Drasners [Night Owl-Thema](https://github.com/sdras/night-owl-vscode-theme). + +Wenn du mindestens ein dunkles und ein helles Design angibst, wird Starlight das aktive Codeblock-Design automatisch mit dem aktuellen Site-Design synchron halten. +Konfiguriere dieses Verhalten mit der Option [`useStarlightDarkModeSwitch`](#usestarlightdarkmodeswitch). + +#### `useStarlightDarkModeSwitch` + +**Typ:** `boolean` +**Voreinstellung:** `true` + +Falls `true`, wechseln Codeblöcke automatisch zwischen hellen und dunklen Designs, wenn sich das Site-Design ändert. +Falls `false`, müssen Sie manuell CSS hinzufügen, um das Wechseln zwischen mehreren Designs zu handhaben. + +:::note +Beim Festlegen von `themes` musst du mindestens ein dunkles und ein helles Design angeben, damit der Wechsel zum Starlight-Dunkelmodus funktioniert. +::: + +#### `useStarlightUiThemeColors` + +**Typ:** `boolean` +**Voreinstellung:** `true` wenn `themes` nicht gesetzt ist, andernfalls `false` + +Falls `true`, werden Starlights CSS-Variablen für die Farben von Codeblock-UI-Elementen (Hintergründe, Schaltflächen, Schatten usw.) verwendet, die dem [Site-Farbdesign](/de/guides/css-and-tailwind/#themes) entsprechen. +Falls `false`, werden für diese Elemente die vom aktiven Syntaxhervorhebungsdesign bereitgestellten Farben verwendet. + +:::note +Wenn du benutzerdefinierte Themes verwendest und dies auf `true` setzt, musst du mindestens ein dunkles und ein helles Theme bereitstellen, um den richtigen Farbkontrast zu gewährleisten. +::: + +### `pagefind` + +**Typ:** `boolean` +**Voreinstellung:** `true` + +Lege fest, ob Starlight's Standard-Site-Search-Anbieter [Pagefind](https://pagefind.app/) aktiviert ist. + +Setze diese Option auf `false`, um die Indizierung deiner Website mit Pagefind zu deaktivieren. +Dadurch wird auch die Standard-Suchoberfläche ausgeblendet, falls sie verwendet wird. + +Pagefind kann nicht aktiviert werden, wenn die Option [`prerender`](#prerender) auf `false` gesetzt ist. + +### `prerender` + +**Typ:** `boolean` +**Voreinstellung:** `true` + +Lege fest, ob Starlight-Seiten vorgerendert zu statischem HTML oder bei Bedarf von einem [SSR-Adapter](https://docs.astro.build/de/guides/server-side-rendering/) gerendert werden sollen. + +Starlight-Seiten werden standardmäßig vorgerendert. +Wenn du einen SSR-Adapter verwendest und Starlight-Seiten bei Bedarf rendern möchtest, setze `prerender: false`. + ### `head` **Typ:** [`HeadConfig[]`](#headconfig) @@ -367,6 +492,9 @@ starlight({ }); ``` +Einträge in `head` werden direkt in HTML-Elemente umgewandelt und durchlaufen nicht Astros [script](https://docs.astro.build/de/guides/client-side-scripts/#script-bundling) oder [style](https://docs.astro.build/de/guides/styling/#styles-stile-in-astro) Verarbeitung. +Wenn du lokale Elemente wie Skripte, Stile oder Bilder importieren musst, [überschreibe die Komponente Head](/de/guides/overriding-components/#eine-integrierte-komponente-wiederverwenden). + #### `HeadConfig` ```ts @@ -380,16 +508,16 @@ interface HeadConfig { ### `lastUpdated` **Typ:** `boolean` -**Standard:** `false` +**Voreinstellung:** `false` Legt fest, ob in der Fußzeile angezeigt werden soll, wann die Seite zuletzt aktualisiert wurde. -Standardmäßig verwendet diese Funktion die Git-Historie Ihres Repositorys und kann auf einigen Bereitstellungsplattformen, die [shallow clones](https://git-scm.com/docs/git-clone/de#git-clone---depthltTiefegt) durchführen, nicht genau sein. Eine Seite kann diese Einstellung oder das Git-basierte Datum mit dem [`lastUpdated` Frontmatter-Feld](/de/reference/frontmatter/#lastupdated) überschreiben. +Standardmäßig verwendet diese Funktion die Git-Historie deines Repositorys und kann auf einigen Bereitstellungsplattformen, die [shallow clones](https://git-scm.com/docs/git-clone/de#git-clone---depthltTiefegt) durchführen, nicht genau sein. Eine Seite kann diese Einstellung oder das Git-basierte Datum mit dem [`lastUpdated` Frontmatter-Feld](/de/reference/frontmatter/#lastupdated) überschreiben. ### `pagination` **Typ:** `boolean` -**Standard:** `true` +**Voreinstellung:** `true` Legt fest, ob die Fußzeile Links zur vorherigen und nächsten Seite enthalten soll. @@ -398,7 +526,7 @@ Eine Seite kann diese Einstellung oder den Linktext und/oder die URL mit Hilfe d ### `favicon` **Typ:** `string` -**Standard:** `'/favicon.svg'` +**Voreinstellung:** `'/favicon.svg'` Legt den Pfad des Standard-Favicons für deine Website fest. Dieses sollte sich im Verzeichnis `public/` befinden und eine gültige Icon-Datei (`.ico`, `.gif`, `.jpg`, `.png` oder `.svg`) sein. @@ -412,7 +540,7 @@ Wenn du zusätzliche Varianten oder Fallback-Favicons festlegen musst, kannst du ```js starlight({ - favicon: '/images/favicon.svg'. + favicon: '/images/favicon.svg', head: [ // ICO-Favicon als Fallback für Safari hinzufügen { @@ -430,12 +558,19 @@ starlight({ ### `titleDelimiter` **Typ:** `string` -**Standard:** `'|'` +**Voreinstellung:** `'|'` Legt das Trennzeichen zwischen Seitentitel und dem Titel der Website im `<title>`-Tag der Website fest, welches in den Browser-Tabs angezeigt wird. Standardmäßig hat jede Seite einen `<title>` von `Seiten Überschrift | Webseitenname`. -Zum Beispiel heißt diese Seite "Konfigurationsreferenz" und diese Website heißt "Starlight", also ist der `<titel>` für diese Seite "Konfigurationsreferenz | Starlight". +Zum Beispiel heißt diese Seite „Konfigurationsreferenz“ und diese Website heißt „Starlight“, also ist der `<titel>` für diese Seite „Konfigurationsreferenz | Starlight“. + +### `disable404Route` + +**Typ:** `Boolean` +**Voreinstellung:** `false` + +Deaktiviert die Einspeisung von Starlights Standard [404 Seite](https://docs.astro.build/en/core-concepts/astro-pages/#custom-404-error-page). Um eine eigene `src/pages/404.astro`-Route in deinem Projekt zu verwenden, setze diese Option auf `true`. ### `components` @@ -451,4 +586,31 @@ starlight({ }); ``` -Siehe die [Komponenten-Ersetzung Referenz](/de/reference/overrides/) für Details zu allen Komponenten, die du überschreiben kannst. +Siehe die [Referenz der Ersetzung von Komponenten](/de/reference/overrides/) für Details zu allen Komponenten, die du überschreiben kannst. + +### `plugins` + +**Typ:** [`StarlightPlugin[]`](/de/reference/plugins/#api-schnellreferenz) + +Erweitere Starlight mit eigenen Plugins. +Plugins nehmen Änderungen an deinem Projekt vor, um die Funktionen von Starlight zu verändern oder zu erweitern. + +Besuche das [Plugins Schaufenster](/de/resources/plugins/#plugins) um eine Liste der verfügbaren Plugins zu sehen. + +```js +starlight({ + plugins: [starlightPlugin()], +}); +``` + +Siehe die [Referenz für Plugins](/de/reference/plugins/) für Details zur Erstellung eigener Plugins. + +### `credits` + +Aktiviere die Anzeige eines „Erstellt mit Starlight“-Links in der Fußzeile deiner Website. + +```js +starlight({ + credits: true, +}); +``` From 3d8239af76dc65cfea406f1c7394f2330eade064 Mon Sep 17 00:00:00 2001 From: HiDeoo <HiDeoo@users.noreply.github.com> Date: Tue, 22 Oct 2024 09:43:30 +0000 Subject: [PATCH 34/36] [ci] format --- .../docs/de/reference/configuration.mdx | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/src/content/docs/de/reference/configuration.mdx b/docs/src/content/docs/de/reference/configuration.mdx index 03a5aa874bc..37722aba551 100644 --- a/docs/src/content/docs/de/reference/configuration.mdx +++ b/docs/src/content/docs/de/reference/configuration.mdx @@ -540,18 +540,18 @@ Wenn du zusätzliche Varianten oder Fallback-Favicons festlegen musst, kannst du ```js starlight({ - favicon: '/images/favicon.svg', - head: [ - // ICO-Favicon als Fallback für Safari hinzufügen - { - tag: 'link', - attrs: { - rel: 'icon', - href:'/images/favicon.ico', - sizes: '32x32', - }, - }, - ], + favicon: '/images/favicon.svg', + head: [ + // ICO-Favicon als Fallback für Safari hinzufügen + { + tag: 'link', + attrs: { + rel: 'icon', + href: '/images/favicon.ico', + sizes: '32x32', + }, + }, + ], }); ``` From 3e218ee95af5c33c55431ee20d2ca12d225fe7b2 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:49:28 +0200 Subject: [PATCH 35/36] i18n(de): update translation guides/authoring-content (#2458) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- .../docs/de/guides/authoring-content.md | 213 -------- .../docs/de/guides/authoring-content.mdx | 510 ++++++++++++++++++ 2 files changed, 510 insertions(+), 213 deletions(-) delete mode 100644 docs/src/content/docs/de/guides/authoring-content.md create mode 100644 docs/src/content/docs/de/guides/authoring-content.mdx diff --git a/docs/src/content/docs/de/guides/authoring-content.md b/docs/src/content/docs/de/guides/authoring-content.md deleted file mode 100644 index 62607a71338..00000000000 --- a/docs/src/content/docs/de/guides/authoring-content.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Inhalte in Markdown verfassen -description: Ein Überblick über die von Starlight unterstützte Markdown-Syntax. ---- - -Starlight unterstützt die gesamte Bandbreite der [Markdown](https://daringfireball.net/projects/markdown/) Syntax in `.md` Dateien sowie Frontmatter [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f) um Metadaten wie Titel und Beschreibung zu definieren. - -Bitte prüfe die [MDX docs](https://mdxjs.com/docs/what-is-mdx/#markdown) oder [Markdoc docs](https://markdoc.dev/docs/syntax), wenn du diese Dateiformate verwendest, da die Unterstützung und Verwendung von Markdown unterschiedlich sein kann. - -## Inline-Stile - -Text kann **fett**, _italic_, oder ~~durchgestrichen~~ sein. - -```md -Text kann **fett**, _italic_, oder ~~durchgestrichen~~ sein. -``` - -Du kannst [auf eine andere Seite](/de/getting-started/) verlinken. - -```md -Du kannst [auf eine andere Seite](/de/getting-started/) verlinken. -``` - -Du kannst `inline code` mit Backticks hervorheben. - -```md -Du kannst `inline code` mit Backticks hervorheben. -``` - -## Bilder - -Bilder in Starlight verwenden [Astros eingebaute optimierte Asset-Unterstützung](https://docs.astro.build/de/guides/assets/). - -Markdown und MDX unterstützen die Markdown-Syntax für die Anzeige von Bildern, einschließlich Alt-Text für Bildschirmleser und unterstützende Technologien. - -![Eine Illustration von Planeten und Sternen mit dem Wort "Astro"](https://raw.githubusercontent.com/withastro/docs/main/public/default-og-image.png) - -```md -![Eine Illustration von Planeten und Sternen mit dem Wort "astro"](https://raw.githubusercontent.com/withastro/docs/main/public/default-og-imag) -``` - -Relative Bildpfade werden auch für lokal in Ihrem Projekt gespeicherte Bilder unterstützt. - -```md -// src/content/docs/page-1.md - -![Ein Raketenschiff im Weltraum](../../assets/images/rocket.svg) -``` - -## Überschriften - -Mit einer Überschrift kannst du den Inhalt strukturieren. Überschriften in Markdown werden durch eine Reihe von `#` am Anfang der Zeile gekennzeichnet. - -### Wie du Seiteninhalte in Starlight strukturierst - -Starlight ist so konfiguriert, dass es automatisch den Seitentitel als Überschrift verwendet und eine "Übersicht"-Überschrift an den Anfang des Inhaltsverzeichnisses jeder Seite setzt. Wir empfehlen, jede Seite mit normalem Text zu beginnen und die Seitenüberschriften ab `<h2>` zu verwenden: - -```md ---- -title: Markdown Anleitung -description: Wie man Markdown in Starlight benutzt ---- - -Diese Seite beschreibt, wie man Markdown in Starlight benutzt. - -## Inline-Stile - -## Überschriften -``` - -### Automatische Überschriften-Ankerlinks - -Wenn du Überschriften in Markdown verwendst, erhaltst du automatisch Ankerlinks, so dass du direkt auf bestimmte Abschnitte deiner Seite verlinken kannst: - -```md ---- -title: Meine Seite mit Inhalt -description: Wie man Starlight's eingebaute Ankerlinks benutzt ---- - -## Einleitung - -Ich kann auf [meine Schlussfolgerung](#schlussfolgerung) weiter unten auf derselben Seite verlinken. - -## Schlussfolgerung - -`https://meine-site.com/seite1/#einleitung` navigiert direkt zu meiner Einleitung. -``` - -Überschriften der Ebene 2 (`<h2>`) und der Ebene 3 (`<h3>`) werden automatisch im Inhaltsverzeichnis der Seite angezeigt. - -## Nebenbemerkungen - -Nebenbemerkungen (auch bekannt als "Ermahnungen" oder "Callouts") sind nützlich, um sekundäre Informationen neben dem Hauptinhalt einer Seite anzuzeigen. - -Starlight bietet eine eigene Markdown-Syntax für die Darstellung von Nebeninformationen. Seitenblöcke werden mit einem Paar dreifacher Doppelpunkte `:::` angezeigt, um den Inhalt zu umschließen, und können vom Typ `note`, `tip`, `caution` oder `danger` sein. - -Sie können alle anderen Markdown-Inhaltstypen innerhalb einer Nebenbemerkung verschachteln, allerdings eignen sich diese am besten für kurze und prägnante Inhaltsstücke. - -### Nebenbemerkung `note` - -:::note -Starlight ist ein Toolkit für Dokumentations-Websites, das mit [Astro](https://astro.build/de) erstellt wurde. Du kannst mit diesem Befehl beginnen: - -```sh -npm create astro@latest -- --template starlight -``` - -::: - -````md -:::note -Starlight ist ein Toolkit für Dokumentations-Websites, das mit [Astro](https://astro.build/de) erstellt wurde. Du kannst mit diesem Befehl beginnen: - -```sh -npm create astro@latest -- --template starlight -``` - -::: -```` - -### Benutzerdefinierte Nebenbemerkungstitel - -Du kannst einen benutzerdefinierten Titel für die Nebenbemerkung in eckigen Klammern nach dem Typen angeben, z.B. `:::tip[Wusstest du schon?]`. - -:::tip[Wusstest du schon?] -Astro hilft dir, schnellere Websites mit ["Islands Architecture"](https://docs.astro.build/de/concepts/islands/) zu erstellen. -::: - -```md -:::tip[Wusstest du schon?] -Astro hilft dir, schnellere Websites mit ["Islands Architecture"](https://docs.astro.build/de/concepts/islands/) zu erstellen. -::: -``` - -### Weitere Typen - -Vorsichts- und Gefahrenhinweise sind hilfreich, um die Aufmerksamkeit des Benutzers auf Details zu lenken, über die er stolpern könnte. -Wenn du diese häufig verwenden, kann das auch ein Zeichen dafür sein, dass die Sache, die Sie dokumentieren, von einem neuen Design profitieren könnte. - -:::caution -Wenn du nicht sicher bist, ob du eine großartige Dokumentseite willst, überlege es dir zweimal, bevor du [Starlight](/de/) verwendest. -::: - -:::danger -Deine Benutzer können dank hilfreicher Starlight-Funktionen produktiver sein und dein Produkt einfacher nutzen. - -- Übersichtliche Navigation -- Benutzer-konfigurierbares Farbthema -- [i18n-Unterstützung](/de/guides/i18n/) - -::: - -```md -:::caution -Wenn du nicht sicher bist, ob du eine großartige Dokumentseite willst, überlege es dir zweimal, bevor du [Starlight](/de/) verwendest. -::: - -:::danger -Deine Benutzer können dank hilfreicher Starlight-Funktionen produktiver sein und dein Produkt einfacher nutzen. - -- Übersichtliche Navigation -- Benutzer-konfigurierbares Farbthema -- [i18n-Unterstützung](/de/guides/i18n/) - -::: -``` - -## Blockzitate - -> Dies ist ein Blockzitat, das üblicherweise verwendet wird, wenn eine andere Person oder ein Dokument zitiert wird. -> -> Blockzitate werden durch ein ">" am Anfang jeder Zeile gekennzeichnet. - -```md -> Dies ist ein Blockzitat, das üblicherweise verwendet wird, wenn eine andere Person oder ein Dokument zitiert wird. -> -> Blockzitate werden durch ein ">" am Anfang jeder Zeile gekennzeichnet. -``` - -## Code blocks - -Ein Codeblock wird durch einen Block mit drei Backticks <code>```</code> am Anfang und Ende gekennzeichnet. Du kannst die verwendete Programmiersprache nach den ersten drei Backticks angeben. - -```js -// Javascript code with syntax highlighting. -var fun = function lang(l) { - dateformat.i18n = require('./lang/' + l); - return true; -}; -``` - -````md -```js -// Javascript code with syntax highlighting. -var fun = function lang(l) { - dateformat.i18n = require('./lang/' + l); - return true; -}; -``` -```` - -```md -Lange, einzeilige Codeblöcke sollten nicht umgebrochen werden. Sie sollten horizontal scrollen, wenn sie zu lang sind. Diese Zeile sollte lang genug sein, um dies zu demonstrieren. -``` - -## Andere allgemeine Markdown-Funktionen - -Starlight unterstützt alle anderen Markdown-Autorensyntaxen, wie Listen und Tabellen. Einen schnellen Überblick über alle Markdown-Syntaxelemente findest du im [Markdown Cheat Sheet von The Markdown Guide](https://www.markdownguide.org/cheat-sheet/). - -## Erweiterte Markdown- und MDX-Konfiguration - -Starlight verwendet Astros Markdown- und MDX-Renderer, der auf remark und rehype aufbaut. Du kannst eine Unterstützung für eigene Syntax und Verhalten hinzufügen, indem du `remarkPlugins` oder `rehypePlugins` in deiner Astro-Konfigurationsdatei hinzufügst. Weitere Informationen findest du unter ["Markdown konfigurieren"] (https://docs.astro.build/de/guides/markdown-content/#markdown-konfigurieren) in der Astro-Dokumentation. diff --git a/docs/src/content/docs/de/guides/authoring-content.mdx b/docs/src/content/docs/de/guides/authoring-content.mdx new file mode 100644 index 00000000000..48c1a02a0c8 --- /dev/null +++ b/docs/src/content/docs/de/guides/authoring-content.mdx @@ -0,0 +1,510 @@ +--- +title: Inhalte in Markdown verfassen +description: Ein Überblick über die von Starlight unterstützte Markdown-Syntax. +--- + +Starlight unterstützt die gesamte Bandbreite der [Markdown](https://daringfireball.net/projects/markdown/) Syntax in `.md` Dateien sowie Frontmatter [YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f) um Metadaten wie Titel und Beschreibung zu definieren. + +Bitte prüfe die [MDX docs](https://mdxjs.com/docs/what-is-mdx/#markdown) oder [Markdoc docs](https://markdoc.dev/docs/syntax), wenn du diese Dateiformate verwendest, da die Unterstützung und Verwendung von Markdown unterschiedlich sein kann. + +## Frontmatter + +Du kannst einzelne Seiten in Starlight anpassen, indem du Werte in deinen Frontmatter festlegst. +Frontmatter wird oben in deinen Dateien zwischen `---`-Trennzeichen festgelegt: + +```md title="src/content/docs/example.md" +--- +title: Mein Seitentitel +--- + +Nach dem zweiten `---` folgt der Seiteninhalt. +``` + +Jede Seite muss mindestens einen `title` enthalten. +Alle verfügbaren Felder und Informationen zum Hinzufügen benutzerdefinierter Felder findst du in der [Frontmatter-Referenz](/de/reference/frontmatter/). + +## Inline-Stile + +Text kann **fett**, _italic_, oder ~~durchgestrichen~~ sein. + +```md +Text kann **fett**, _italic_, oder ~~durchgestrichen~~ sein. +``` + +Du kannst [auf eine andere Seite](/de/getting-started/) verlinken. + +```md +Du kannst [auf eine andere Seite](/de/getting-started/) verlinken. +``` + +Du kannst `inline code` mit Backticks hervorheben. + +```md +Du kannst `inline code` mit Backticks hervorheben. +``` + +## Bilder + +Bilder in Starlight verwenden [Astros eingebaute optimierte Asset-Unterstützung](https://docs.astro.build/de/guides/assets/). + +Markdown und MDX unterstützen die Markdown-Syntax für die Anzeige von Bildern, einschließlich Alt-Text für Bildschirmleser und unterstützende Technologien. + +![Eine Illustration von Planeten und Sternen mit dem Wort "Astro"](https://raw.githubusercontent.com/withastro/docs/main/public/default-og-image.png) + +```md +![Eine Illustration von Planeten und Sternen mit dem Wort "astro"](https://raw.githubusercontent.com/withastro/docs/main/public/default-og-imag) +``` + +Relative Bildpfade werden auch für lokal in Ihrem Projekt gespeicherte Bilder unterstützt. + +```md +// src/content/docs/page-1.md + +![Ein Raketenschiff im Weltraum](../../assets/images/rocket.svg) +``` + +## Überschriften + +Mit einer Überschrift kannst du den Inhalt strukturieren. Überschriften in Markdown werden durch eine Reihe von `#` am Anfang der Zeile gekennzeichnet. + +### Wie du Seiteninhalte in Starlight strukturierst + +Starlight ist so konfiguriert, dass es automatisch den Seitentitel als Überschrift verwendet und eine "Übersicht"-Überschrift an den Anfang des Inhaltsverzeichnisses jeder Seite setzt. Wir empfehlen, jede Seite mit normalem Text zu beginnen und die Seitenüberschriften ab `<h2>` zu verwenden: + +```md +--- +title: Markdown Anleitung +description: Wie man Markdown in Starlight benutzt +--- + +Diese Seite beschreibt, wie man Markdown in Starlight benutzt. + +## Inline-Stile + +## Überschriften +``` + +### Automatische Überschriften-Ankerlinks + +Wenn du Überschriften in Markdown verwendst, erhaltst du automatisch Ankerlinks, so dass du direkt auf bestimmte Abschnitte deiner Seite verlinken kannst: + +```md +--- +title: Meine Seite mit Inhalt +description: Wie man Starlights eingebaute Ankerlinks benutzt +--- + +## Einleitung + +Ich kann auf [meine Schlussfolgerung](#schlussfolgerung) weiter unten auf derselben Seite verlinken. + +## Schlussfolgerung + +`https://meine-site.com/seite1/#einleitung` navigiert direkt zu meiner Einleitung. +``` + +Überschriften der Ebene 2 (`<h2>`) und der Ebene 3 (`<h3>`) werden automatisch im Inhaltsverzeichnis der Seite angezeigt. + +Erfahre mehr darüber, wie Astro Kopfzeilen-IDs verarbeitet, in [der Astro-Dokumentation](https://docs.astro.build/de/guides/markdown-content/#%C3%BCberschriften-ids). + +## Nebenbemerkungen + +Nebenbemerkungen (auch bekannt als "Ermahnungen" oder "Callouts") sind nützlich, um sekundäre Informationen neben dem Hauptinhalt einer Seite anzuzeigen. + +Starlight bietet eine eigene Markdown-Syntax für die Darstellung von Nebeninformationen. Seitenblöcke werden mit einem Paar dreifacher Doppelpunkte `:::` angezeigt, um den Inhalt zu umschließen, und können vom Typ `note`, `tip`, `caution` oder `danger` sein. + +Sie können alle anderen Markdown-Inhaltstypen innerhalb einer Nebenbemerkung verschachteln, allerdings eignen sich diese am besten für kurze und prägnante Inhaltsstücke. + +### Nebenbemerkung `note` + +:::note +Starlight ist ein Toolkit für Dokumentations-Websites, das mit [Astro](https://astro.build/de) erstellt wurde. Du kannst mit diesem Befehl beginnen: + +```sh +npm create astro@latest -- --template starlight +``` + +::: + +````md +:::note +Starlight ist ein Toolkit für Dokumentations-Websites, das mit [Astro](https://astro.build/de) erstellt wurde. Du kannst mit diesem Befehl beginnen: + +```sh +npm create astro@latest -- --template starlight +``` + +::: +```` + +### Benutzerdefinierte Nebenbemerkungstitel + +Du kannst einen benutzerdefinierten Titel für die Nebenbemerkung in eckigen Klammern nach dem Typen angeben, z.B. `:::tip[Wusstest du schon?]`. + +:::tip[Wusstest du schon?] +Astro hilft dir, schnellere Websites mit ["Islands Architecture"](https://docs.astro.build/de/concepts/islands/) zu erstellen. +::: + +```md +:::tip[Wusstest du schon?] +Astro hilft dir, schnellere Websites mit ["Islands Architecture"](https://docs.astro.build/de/concepts/islands/) zu erstellen. +::: +``` + +### Weitere Typen + +Vorsichts- und Gefahrenhinweise sind hilfreich, um die Aufmerksamkeit des Benutzers auf Details zu lenken, über die er stolpern könnte. +Wenn du diese häufig verwenden, kann das auch ein Zeichen dafür sein, dass die Sache, die Sie dokumentieren, von einem neuen Design profitieren könnte. + +:::caution +Wenn du nicht sicher bist, ob du eine großartige Dokumentseite willst, überlege es dir zweimal, bevor du [Starlight](/de/) verwendest. +::: + +:::danger +Deine Benutzer können dank hilfreicher Starlight-Funktionen produktiver sein und dein Produkt einfacher nutzen. + +- Übersichtliche Navigation +- Benutzer-konfigurierbares Farbthema +- [i18n-Unterstützung](/de/guides/i18n/) + +::: + +```md +:::caution +Wenn du nicht sicher bist, ob du eine großartige Dokumentseite willst, überlege es dir zweimal, bevor du [Starlight](/de/) verwendest. +::: + +:::danger +Deine Benutzer können dank hilfreicher Starlight-Funktionen produktiver sein und dein Produkt einfacher nutzen. + +- Übersichtliche Navigation +- Benutzer-konfigurierbares Farbthema +- [i18n-Unterstützung](/de/guides/i18n/) + +::: +``` + +## Blockzitate + +> Dies ist ein Blockzitat, das üblicherweise verwendet wird, wenn eine andere Person oder ein Dokument zitiert wird. +> +> Blockzitate werden durch ein ">" am Anfang jeder Zeile gekennzeichnet. + +```md +> Dies ist ein Blockzitat, das üblicherweise verwendet wird, wenn eine andere Person oder ein Dokument zitiert wird. +> +> Blockzitate werden durch ein ">" am Anfang jeder Zeile gekennzeichnet. +``` + +## Codeblöcke + +Ein Codeblock wird durch einen Block mit drei Backticks <code>```</code> am Anfang und Ende gekennzeichnet. Du kannst die verwendete Programmiersprache nach den ersten drei Backticks angeben. + +```js +// Javascript-Code mit Syntaxhervorhebung. +var fun = function lang(l) { + dateformat.i18n = require('./lang/' + l); + return true; +}; +``` + +````md +```js +// Javascript-Code mit Syntaxhervorhebung. +var fun = function lang(l) { + dateformat.i18n = require('./lang/' + l); + return true; +}; +``` +```` + +### Expressive Code-Merkmale + +Starlight verwendet [Expressive Code](https://github.com/expressive-code/expressive-code/tree/main/packages/astro-expressive-code), um die Formatierungsmöglichkeiten für Codeblöcke zu erweitern. +Die Textmarker und Fensterrahmen-Plugins von Expressive Code sind standardmäßig aktiviert. +Die Darstellung von Codeblöcken kann mit Starlights [`expressiveCode` Konfigurationsoption](/de/reference/configuration/#expressivecode) konfiguriert werden. + +#### Textmarkierungen + +Du kannst bestimmte Zeilen oder Teile deiner Codeblöcke hervorheben, indem du [Expressive Code Textmarkierungen](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-text-markers/README.md#usage-in-markdown--mdx-documents) in der ersten Zeile deines Codeblocks verwendest. +Verwende geschweifte Klammern (`{ }`), um ganze Zeilen hervorzuheben, und Anführungszeichen, um Textabschnitte zu markieren. + +Es gibt drei Hervorhebungsstile: neutral, um auf den Code aufmerksam zu machen, grün, um eingefügten Code zu kennzeichnen, und rot, um gelöschten Code zu kennzeichnen. +Sowohl Text als auch ganze Zeilen können mit der Standardmarkierung oder in Kombination mit `ins=` und `del=` markiert werden, um die gewünschte Hervorhebung zu erzielen. + +Expressive Code bietet mehrere Optionen zur Anpassung des visuellen Erscheinungsbildes deiner Codebeispiele. +Viele dieser Optionen können kombiniert werden, um sehr anschauliche Codebeispiele zu erstellen. +Bitte schaue dir die [Expressive Code Dokumentation](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-text-markers/README.md) an, um dich über die umfangreichen Optionen zu informieren. +Einige der gebräuchlichsten Beispiele sind unten aufgeführt: + +- [Markiere ganze Zeilen und Zeilenbereiche mit dem Marker `{ }`](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-text-markers/README.md#marking-entire-lines--line-ranges): + + ```js {2-3} + function demo() { + // Diese Zeile (#2) und die nächste Zeile sind hervorgehoben + return 'This is line #3 of this snippet'; + } + ``` + + ````md + ```js {2-3} + function demo() { + // Diese Zeile (#2) und die nächste Zeile sind hervorgehoben + return 'This is line #3 of this snippet'; + } + ``` + ```` + +- [Markieren von Textabschnitten mit der Markierung `" "` oder regulären Ausdrücken](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-text-markers/README.md#marking-individual-text-inside-lines): + + ```js "einzelne Begriffe" /Auch.*unterstützt/ + // Auch einzelne Begriffe können hervorgehoben werden + function demo() { + return 'Auch reguläre Ausdrücke werden unterstützt'; + } + ``` + + ````md + ```js "einzelne Begriffe" /Auch.*unterstützt/ + // Auch einzelne Begriffe können hervorgehoben werden + function demo() { + return 'Auch reguläre Ausdrücke werden unterstützt'; + } + ``` + ```` + +- [Text oder Zeilen mit `ins` oder `del` als eingefügt oder gelöscht markieren](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-text-markers/README.md#selecting-marker-types-mark-ins-del): + + ```js "return true;" ins="eingefügte" del="gelöschte" + function demo() { + console.log('Dies sind eingefügte und gelöschte Markertypen'); + // Die return-Anweisung verwendet den Standard-Markierungstyp + return true; + } + ``` + + ````md + ```js "return true;" ins="eingefügte" del="gelöschte" + function demo() { + console.log('Dies sind eingefügte und gelöschte Markertypen'); + // Die return-Anweisung verwendet den Standard-Markierungstyp + return true; + } + ``` + ```` + +- [Kombinieren Sie die Syntaxhervorhebung mit einer `diff`-ähnlichen Syntax](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-text-markers/README.md#combining-syntax-highlighting-with-diff-like-syntax): + + ```diff lang="js" + function thisIsJavaScript() { + // Dieser gesamte Block wird als JavaScript hervorgehoben, + // und wir können ihm immer noch Diff-Markierungen hinzufügen! + - console.log('Zu entfernender alter Code') + + console.log('Neuer, glänzender Code!') + } + ``` + + ````md + ```diff lang="js" + function thisIsJavaScript() { + // Dieser gesamte Block wird als JavaScript hervorgehoben, + // und wir können ihm immer noch Diff-Markierungen hinzufügen! + - console.log('Zu entfernender alter Code') + + console.log('Neuer, glänzender Code!') + } + ``` + ```` + +#### Rahmen und Überschriften + +Codeblöcke können innerhalb eines fensterähnlichen Rahmens dargestellt werden. +Ein Rahmen, der wie ein Terminalfenster aussieht, wird für Shell-Skriptsprachen (z.B. `bash` oder `sh`) verwendet. +Andere Sprachen werden in einem Rahmen im Stil eines Code-Editors angezeigt, wenn sie einen Titel enthalten. + +Der optionale Titel eines Code-Blocks kann entweder mit einem `title="..."`-Attribut gesetzt werden, das den öffnenden Backticks und dem Sprachbezeichner des Code-Blocks folgt, oder mit einem Dateinamenkommentar in den ersten Zeilen des Codes. + +- [Hinzufügen einer Registerkarte für den Dateinamen mit einem Kommentar](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-frames/README.md#adding-titles-open-file-tab-or-terminal-window-title) + + ```js + // meine-test-datei.js + console.log('Hallo Welt!'); + ``` + + ````md + ```js + // meine-test-datei.js + console.log('Hallo Welt!'); + ``` + ```` + +- [Hinzufügen eines Titels zu einem Terminalfenster](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-frames/README.md#adding-titles-open-file-tab-or-terminal-window-title) + + ```bash title="Installieren von Abhängigkeiten…" + npm install + ``` + + ````md + ```bash title="Installieren von Abhängigkeiten…" + npm install + ``` + ```` + +- [Fensterrahmen mit `frame="none"` deaktivieren](https://github.com/expressive-code/expressive-code/blob/main/packages/%40expressive-code/plugin-frames/README.md#overriding-frame-types) + + ```bash frame="none" + echo "Dies wird trotz Verwendung der Bash-Sprache nicht als Terminal dargestellt" + ``` + + ````md + ```bash frame="none" + echo "Dies wird trotz Verwendung der Bash-Sprache nicht als Terminal dargestellt" + ``` + ```` + +## Details + +Details (auch bekannt als „Offenlegungen“ oder „Akkordeons“) sind nützlich, um Inhalte zu verbergen, die nicht unmittelbar relevant sind. +Die Nutzer können auf eine kurze Zusammenfassung klicken, um den gesamten Inhalt zu sehen. + +Verwende die Standard-HTML-Elemente [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) und [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary) in deinem Markdown-Inhalt, um ein Offenlegungs-Widget zu erstellen. + +Du kannst jede andere Markdown-Syntax innerhalb eines `<Details>`-Elements verschachteln. + +<details> +<summary>Wo und wann ist das Sternbild Andromeda am besten zu sehen?</summary> + +Das Sternbild [Andromeda](<https://de.wikipedia.org/wiki/Andromeda_(Sternbild)>) ist am Nachthimmel im Monat November in Breitengraden zwischen `+90°` und `−40°` am besten sichtbar. + +</details> + +```md +<details> +<summary>Wo und wann ist das Sternbild Andromeda am besten zu sehen?</summary> + +Das Sternbild [Andromeda](<https://de.wikipedia.org/wiki/Andromeda_(Sternbild)>) ist am Nachthimmel im Monat November in Breitengraden zwischen `+90°` und `−40°` am besten sichtbar. + +</details> +``` + +## Andere allgemeine Markdown-Funktionen + +Starlight unterstützt alle anderen Markdown-Autorensyntaxen, wie Listen und Tabellen. Einen schnellen Überblick über alle Markdown-Syntaxelemente findest du im [Markdown Cheat Sheet von The Markdown Guide](https://www.markdownguide.org/cheat-sheet/). + +## Erweiterte Markdown- und MDX-Konfiguration + +Starlight verwendet Astros Markdown- und MDX-Renderer, der auf remark und rehype aufbaut. Du kannst eine Unterstützung für eigene Syntax und Verhalten hinzufügen, indem du `remarkPlugins` oder `rehypePlugins` in deiner Astro-Konfigurationsdatei hinzufügst. Weitere Informationen findest du unter ["Markdown konfigurieren"](https://docs.astro.build/de/guides/markdown-content/#markdown-plugins) in der Astro-Dokumentation. + +## Markdoc + +Starlight unterstützt die Erstellung von Inhalten in Markdoc mithilfe der experimentellen [Astro Markdoc-Integration](https://docs.astro.build/de/guides/integrations-guide/markdoc/) und der Starlight Markdoc-Voreinstellung. + +### Erstelle ein neues Projekt mit Markdoc + +Starte ein neues Starlight-Projekt mit vorkonfiguriertem Markdoc mit `create astro`: + +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; + +<Tabs syncKey="pkg"> +<TabItem label="npm"> + +```sh +npm create astro@latest -- --template starlight/markdoc +``` + +</TabItem> +<TabItem label="pnpm"> + +```sh +pnpm create astro --template starlight/markdoc +``` + +</TabItem> +<TabItem label="Yarn"> + +```sh +yarn create astro --template starlight/markdoc +``` + +</TabItem> +</Tabs> + +### Markdoc zu einem bestehenden Projekt hinzufügen + +Wenn du bereits eine Starlight-Site hast und Markdoc hinzufügen möchtest, befolge diese Schritte. + +<Steps> + +1. Füge Astros Markdoc-Integration hinzu: + + <Tabs syncKey="pkg"> + + <TabItem label="npm"> + + ```sh + npx astro add markdoc + ``` + + </TabItem> + + <TabItem label="pnpm"> + + ```sh + pnpm astro add markdoc + ``` + + </TabItem> + + <TabItem label="Yarn"> + + ```sh + yarn astro add markdoc + ``` + + </TabItem> + + </Tabs> + +2. Installiere die Starlight Markdoc-Voreinstellung: + + <Tabs syncKey="pkg"> + + <TabItem label="npm"> + + ```sh + npm install @astrojs/starlight-markdoc + ``` + + </TabItem> + + <TabItem label="pnpm"> + + ```sh + pnpm add @astrojs/starlight-markdoc + ``` + + </TabItem> + + <TabItem label="Yarn"> + + ```sh + yarn add @astrojs/starlight-markdoc + ``` + + </TabItem> + + </Tabs> + +3. Erstelle eine Markdoc-Konfigurationsdatei unter `markdoc.config.mjs` und verwende die Starlight Markdoc-Voreinstellung: + + ```js + import { defineMarkdocConfig } from '@astrojs/markdoc/config'; + import starlightMarkdoc from '@astrojs/starlight-markdoc'; + + export default defineMarkdocConfig({ + extends: [starlightMarkdoc()], + }); + ``` + +</Steps> + +Weitere Informationen zur Syntax und den Funktionen von Markdoc findest du in der [Markdoc-Dokumentation](https://markdoc.dev/docs/syntax) oder im [Astro Markdoc-Integrationshandbuch](https://docs.astro.build/de/guides/integrations-guide/markdoc/). From bd5b62e1e0777d5765f43d269b81dfc14a2d9e06 Mon Sep 17 00:00:00 2001 From: trueberryless <99918022+trueberryless@users.noreply.github.com> Date: Tue, 22 Oct 2024 11:54:12 +0200 Subject: [PATCH 36/36] i18n(de): translate reference/plugins (#2464) Co-authored-by: HiDeoo <494699+HiDeoo@users.noreply.github.com> --- docs/src/content/docs/de/reference/plugins.md | 234 ++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 docs/src/content/docs/de/reference/plugins.md diff --git a/docs/src/content/docs/de/reference/plugins.md b/docs/src/content/docs/de/reference/plugins.md new file mode 100644 index 00000000000..a14340ca0f1 --- /dev/null +++ b/docs/src/content/docs/de/reference/plugins.md @@ -0,0 +1,234 @@ +--- +title: Plugins Referenz +description: Ein Überblick über die Starlight-Plugin-API. +tableOfContents: + maxHeadingLevel: 4 +sidebar: + label: Plugins +--- + +Starlight-Plugins können die Konfiguration, die Benutzeroberfläche und das Verhalten von Starlight anpassen und sind gleichzeitig einfach weiterzugeben und wiederzuverwenden. +Diese Referenzseite dokumentiert die API, auf die Plugins Zugriff haben. + +Erfahre mehr über die Verwendung eines Starlight-Plugins in der [Konfigurationsreferenz](/de/reference/configuration/#plugins) oder besuche das [Plugins Schaufenster](/de/resources/plugins/#plugins), um eine Liste der verfügbaren Plugins zu sehen. + +## API-Schnellreferenz + +Ein Starlight-Plugin hat die folgende Form. +Siehe unten für Details zu den verschiedenen Eigenschaften und Hook-Parametern. + +```ts +interface StarlightPlugin { + name: string; + hooks: { + setup: (options: { + config: StarlightUserConfig; + updateConfig: (newConfig: StarlightUserConfig) => void; + addIntegration: (integration: AstroIntegration) => void; + astroConfig: AstroConfig; + command: 'dev' | 'build' | 'preview'; + isRestart: boolean; + logger: AstroIntegrationLogger; + injectTranslations: (Record<string, Record<string, string>>) => void; + }) => void | Promise<void>; + }; +} +``` + +## `name` + +**Typ:** `string` + +Ein Plugin muss einen eindeutigen Namen angeben, der es beschreibt. Der Name wird verwendet, wenn [Logging-Nachrichten](#logger) sich auf dieses Plugin bezieht und kann von anderen Plugins verwendet werden, um das Vorhandensein dieses Plugins zu erkennen. + +## `hooks` + +Hooks sind Funktionen, die Starlight aufruft, um Plugin-Code zu bestimmten Zeiten auszuführen. Derzeit unterstützt Starlight nur einen einzigen `setup`-Hook. + +### `hooks.setup` + +Plugin-Setup-Funktion, die aufgerufen wird, wenn Starlight initialisiert wird (während des [`astro:config:setup`](https://docs.astro.build/de/reference/integrations-reference/#astroconfigsetup) Integrations-Hooks). +Der `setup`-Hook kann verwendet werden, um die Starlight-Konfiguration zu aktualisieren oder Astro-Integrationen hinzuzufügen. + +Dieser Hook wird mit den folgenden Optionen aufgerufen: + +#### `config` + +**Typ:** `StarlightUserConfig` + +Eine schreibgeschützte Kopie der vom Benutzer bereitgestellten [Starlight-Konfiguration](/de/reference/configuration/). +Diese Konfiguration kann durch andere Plugins, die vor dem aktuellen Plugin konfiguriert wurden, aktualisiert worden sein. + +#### `updateConfig` + +**Typ:** `(newConfig: StarlightUserConfig) => void` + +Eine Callback-Funktion zur Aktualisierung der vom Benutzer bereitgestellten [Starlight-Konfiguration](/de/reference/configuration/). +Gib die Konfigurationsschlüssel der root-Ebene an, die du überschreiben möchtest. +Um verschachtelte Konfigurationswerte zu aktualisieren, musst du das gesamte verschachtelte Objekt bereitstellen. + +Um eine vorhandene Konfigurationsoption zu erweitern, ohne sie außer Kraft zu setzen, wird der vorhandene Wert in den neuen Wert übertragen. +Im folgenden Beispiel wird ein neues [`social`](/de/reference/configuration/#social) Medienkonto zur bestehenden Konfiguration hinzugefügt, indem `config.social` in das neue `social` Objekt übertragen wird: + +```ts {6-11} +// plugin.ts +export default { + name: 'add-twitter-plugin', + hooks: { + setup({ config, updateConfig }) { + updateConfig({ + social: { + ...config.social, + twitter: 'https://twitter.com/astrodotbuild', + }, + }); + }, + }, +}; +``` + +#### `addIntegration` + +**Typ:** `(integration: AstroIntegration) => void` + +Eine Callback-Funktion zum Hinzufügen einer [Astro-Integration](https://docs.astro.build/de/reference/integrations-reference/), die vom Plugin benötigt wird. + +Im folgenden Beispiel prüft das Plugin zunächst, ob [Astros React-Integration](https://docs.astro.build/de/guides/integrations-guide/react/) konfiguriert ist, und fügt sie, falls nicht, mit `addIntegration()` hinzu: + +```ts {14} "addIntegration," +// plugin.ts +import react from '@astrojs/react'; + +export default { + name: 'plugin-using-react', + hooks: { + setup({ addIntegration, astroConfig }) { + const isReactLoaded = astroConfig.integrations.find( + ({ name }) => name === '@astrojs/react' + ); + + // Füge die React-Integration nur hinzu, wenn sie nicht bereits geladen ist. + if (!isReactLoaded) { + addIntegration(react()); + } + }, + }, +}; +``` + +#### `astroConfig` + +**Typ:** `AstroConfig` + +Eine schreibgeschützte Kopie der vom Benutzer bereitgestellten [Astro-Konfiguration](https://docs.astro.build/de/reference/configuration-reference/). + +#### `command` + +**Typ:** `'dev' | 'build' | 'preview'` + +Der Befehl, mit dem Starlight gestartet wird: + +- `dev` - Projekt wird mit `astro dev` ausgeführt +- `build` - Projekt wird mit `astro build` ausgeführt +- `preview` - Projekt wird mit `astro preview` ausgeführt + +#### `isRestart` + +**Typ:** `boolean` + +`false`, wenn der Dev-Server startet, `true`, wenn ein Reload ausgelöst wird. +Häufige Gründe für einen Neustart sind, dass ein Benutzer seine `astro.config.mjs` bearbeitet, während der Dev-Server läuft. + +#### `logger` + +**Typ:** `AstroIntegrationLogger` + +Eine Instanz des [Astro-Integrationsloggers](https://docs.astro.build/de/reference/integrations-reference/#astrointegrationlogger), die du zum Schreiben von Protokollen verwenden kannst. +Allen protokollierten Meldungen wird der Name des Plugins vorangestellt. + +```ts {6} +// plugin.ts +export default { + name: 'long-process-plugin', + hooks: { + setup({ logger }) { + logger.info('Beginn eines langen Prozesses…'); + // Ein langer Prozess… + }, + }, +}; +``` + +Im obigen Beispiel wird eine Meldung protokolliert, die die angegebene Info-Meldung enthält: + +```shell +[long-process-plugin] Beginn eines langen Prozesses… +``` + +#### `injectTranslations` + +**Typ:** `(translations: Record<string, Record<string, string>>) => void` + +Eine Callback-Funktion zum Hinzufügen oder Aktualisieren von Übersetzungsstrings, die in Starlights [Lokalisierungs-APIs](/de/guides/i18n/#ui-übersetzungen-verwenden) verwendet werden. + +Im folgenden Beispiel injiziert ein Plugin Übersetzungen für einen benutzerdefinierten UI-String mit dem Namen `myPlugin.doThing` für die Gebietsschemata `en` und `fr`: + +```ts {6-13} /(injectTranslations)[^(]/ +// plugin.ts +export default { + name: 'plugin-with-translations', + hooks: { + setup({ injectTranslations }) { + injectTranslations({ + en: { + 'myPlugin.doThing': 'Do the thing', + }, + fr: { + 'myPlugin.doThing': 'Faire le truc', + }, + }); + }, + }, +}; +``` + +Um die eingefügten Übersetzungen in der Benutzeroberfläche deines Plugins zu verwenden, folge der Anleitung [„UI-Übersetzungen verwenden“](/de/guides/i18n/#ui-übersetzungen-verwenden). + +Typen für die injizierten Übersetzungsstrings eines Plugins werden automatisch im Projekt eines Benutzers generiert, sind aber noch nicht verfügbar, wenn du in der Codebasis deines Plugins arbeitest. +Um das `locals.t`-Objekt im Kontext deines Plugins einzugeben, deklariere die folgenden globalen Namespaces in einer TypeScript-Deklarationsdatei: + +```ts +// env.d.ts +declare namespace App { + type StarlightLocals = import('@astrojs/starlight').StarlightLocals; + // Definiere das Objekt `locals.t` im Kontext eines Plugins. + interface Locals extends StarlightLocals {} +} + +declare namespace StarlightApp { + // Definiere die zusätzlichen Plugin-Übersetzungen in der Schnittstelle `I18n`. + interface I18n { + 'myPlugin.doThing': string; + } +} +``` + +Du kannst die Typen für die Schnittstelle `StarlightApp.I18n` auch aus einer Quelldatei ableiten, wenn du ein Objekt hast, das deine Übersetzungen enthält. + +Nehmen wir zum Beispiel die folgende Quelldatei: + +```ts title="ui-strings.ts" +export const UIStrings = { + en: { 'myPlugin.doThing': 'Do the thing' }, + fr: { 'myPlugin.doThing': 'Faire le truc' }, +}; +``` + +Die folgende Deklaration würde Typen aus den englischen Schlüsseln in der Quelldatei ableiten: + +```ts title="env.d.ts" +declare namespace StarlightApp { + type UIStrings = typeof import('./ui-strings').UIStrings.en; + interface I18n extends UIStrings {} +} +```