From b1dce0336adc00a39d91e67e314492f073b5a110 Mon Sep 17 00:00:00 2001 From: Harald Fielker Date: Sun, 25 Jan 2026 10:54:07 +0100 Subject: [PATCH] i18n --- docs/de/index.md | 33 +++++++++++++++++++++++++++++++++ docs/{ => en}/index.md | 0 docs/en/js/language-detect.js | 19 +++++++++++++++++++ docs/tags.md | 5 ----- mkdocs.yml | 27 ++++++++++++++++++++++----- pyproject.toml | 3 ++- uv.lock | 14 ++++++++++++++ 7 files changed, 90 insertions(+), 11 deletions(-) create mode 100644 docs/de/index.md rename docs/{ => en}/index.md (100%) create mode 100644 docs/en/js/language-detect.js delete mode 100644 docs/tags.md diff --git a/docs/de/index.md b/docs/de/index.md new file mode 100644 index 0000000..cae4dbf --- /dev/null +++ b/docs/de/index.md @@ -0,0 +1,33 @@ +# News Deframer + +News Deframer erkennt journalistische Neutralität und Framing in Nachrichtenartikeln. Durch den Einsatz von Large Language Models (LLMs) analysiert es Schlagzeilen und Artikelinhalte. + +Es ist als Dual-Use-Anwendung konzipiert. Es kann als **RSS-Feed-Proxy** oder als **Browser-Plugin** fungieren, um einen „Framing-Score“ und Kontext bereitzustellen, der den Nutzern hilft zu entscheiden, ob ein Artikel lesenswert ist oder ob er stark voreingenommen ist. + +## Was dieses Projekt ist und was nicht + +- Dies ist **kein** Fake-News-Detektor! +- Dieses Projekt verwendet ein LLM, das als neutraler Journalist fungiert, um Inhalte auf Voreingenommenheit und die Einhaltung neutraler Sprache zu analysieren. +- Wir verwenden offene, transparente [Prompts](https://github.com/deframer/news-deframer/blob/main/pkg/think/prompts), die auf jedem LLM ausgeführt werden können. + +Warum ist Sprachanalyse effektiv? + +- Wir möchten Ihnen helfen, den Umgang mit fragwürdigen Schlagzeilen zu vermeiden. +- Desinformation und Spekulation beruhen oft auf Dark Patterns, Clickbait und emotionalen Triggern. +- Autoren von Desinformation verwenden oft verschleiernde und vage Sprache, um rechtliche Konsequenzen zu vermeiden. + +**WARNUNG**: Es kann zu falsch-positiven / falsch-negativen Ergebnissen kommen. + +## Installation + +Richten Sie Ihre eigene [Instanz](https://github.com/deframer/news-deframer/blob/main/docs/SETUP.md) ein. + +## Übersicht + +- [TODO / Status](https://github.com/deframer/news-deframer/blob/main/TODO.md) + +## Ressourcen + +- [Quellcode](https://github.com/deframer/news-deframer/) +- [Fehlerbericht](https://github.com/deframer/news-deframer/issues) +- [Lizenz](https://github.com/deframer/news-deframer/blob/main/LICENSE) diff --git a/docs/index.md b/docs/en/index.md similarity index 100% rename from docs/index.md rename to docs/en/index.md diff --git a/docs/en/js/language-detect.js b/docs/en/js/language-detect.js new file mode 100644 index 0000000..a5911de --- /dev/null +++ b/docs/en/js/language-detect.js @@ -0,0 +1,19 @@ +(function() { + var langs = ['de'], def = 'en', p = location.pathname, s = localStorage; + var browser = (navigator.language || '').slice(0, 2); + + for (var i = 0; i < langs.length; i++) { + if (p.indexOf('/' + langs[i] + '/') === 0) return s.setItem('lp', langs[i]); + } + + if (p === '/' || p === '/index.html') { + for (var i = 0; i < langs.length; i++) { + if (document.referrer.indexOf('/' + langs[i] + '/') !== -1) return s.setItem('lp', def); + } + + var target = s.getItem('lp'); + if (!target && langs.indexOf(browser) !== -1) target = browser; + + if (target && target !== def) location.href = '/' + target + '/'; + } +})(); diff --git a/docs/tags.md b/docs/tags.md deleted file mode 100644 index fe2924d..0000000 --- a/docs/tags.md +++ /dev/null @@ -1,5 +0,0 @@ -# Tags - -My Tags - - \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index bb8245d..eae3336 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -7,19 +7,21 @@ theme: palette: # Palette toggle for light mode - scheme: default + media: "(prefers-color-scheme: light)" toggle: icon: material/brightness-7 name: Switch to dark mode # Palette toggle for dark mode - scheme: slate + media: "(prefers-color-scheme: dark)" toggle: icon: material/brightness-4 name: Switch to light mode features: - - navigation.instant - - navigation.instant.progress - - navigation.instant.preview + # - navigation.instant + # - navigation.instant.progress + # - navigation.instant.preview - navigation.tracking - navigation.tabs - navigation.tabs @@ -34,13 +36,27 @@ theme: - content.code.copy plugins: + - i18n: + docs_structure: folder + reconfigure_material: true + languages: + - locale: en + name: English + default: true + build: true + - locale: de + name: Deutsch + build: true - search - - tags + # - tags - drawio_file - glightbox # - with-pdf # https://github.com/orzih/mkdocs-with-pdf/tree/master # - macros +extra_javascript: + - js/language-detect.js + markdown_extensions: - pymdownx.superfences: custom_fences: @@ -60,4 +76,5 @@ markdown_extensions: nav: - Home: - Start: index.md - - Tags: tags.md +# - Tags: tags.md + diff --git a/pyproject.toml b/pyproject.toml index 3557ace..b513524 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,4 +9,5 @@ dependencies = [ "mkdocs-material", "mkdocs-glightbox", "mkdocs-drawio-file", -] \ No newline at end of file + "mkdocs-static-i18n", +] diff --git a/uv.lock b/uv.lock index 0be7b92..8044ce8 100644 --- a/uv.lock +++ b/uv.lock @@ -134,6 +134,7 @@ dependencies = [ { name = "mkdocs-drawio-file" }, { name = "mkdocs-glightbox" }, { name = "mkdocs-material" }, + { name = "mkdocs-static-i18n" }, ] [package.metadata] @@ -142,6 +143,7 @@ requires-dist = [ { name = "mkdocs-drawio-file" }, { name = "mkdocs-glightbox" }, { name = "mkdocs-material" }, + { name = "mkdocs-static-i18n" }, ] [[package]] @@ -370,6 +372,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, ] +[[package]] +name = "mkdocs-static-i18n" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/03/2b/59652a2550465fde25ae6a009cb6d74d0f7e724d272fc952685807b29ca1/mkdocs_static_i18n-1.3.0.tar.gz", hash = "sha256:65731e1e4ec6d719693e24fee9340f5516460b2b7244d2a89bed4ce3cfa6a173", size = 1370450, upload-time = "2025-01-24T09:03:24.389Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/f7/ef222a7a2f96ecf79c7c00bfc9dde3b22cd2cc1bd2b7472c7b204fc64225/mkdocs_static_i18n-1.3.0-py3-none-any.whl", hash = "sha256:7905d52fff71d2c108b6c344fd223e848ca7e39ddf319b70864dfa47dba85d6b", size = 21660, upload-time = "2025-01-24T09:03:22.461Z" }, +] + [[package]] name = "packaging" version = "26.0"