Swedish adaptation: Instegscertifikat and HAREC
- Editions replaced by INSTEG, HAREC and UPPGRADERING (Instegscertifikat -> HAREC) - Question pool optional; simulator, homework tool and solutions switch off without one - All UI strings, templates, renderers and project JS localised to sv-SE (decimal comma, Swedish non-breaking-space rules, Å/Ä/Ö in Morse table) - DARC branding, membership CTA and German links removed; attribution footer added - Page names centralised in src/pages.py - README and docs rewritten in Swedish Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
@@ -1,63 +1,128 @@
|
||||
# 50ohm.de
|
||||
# 50Ω – svensk adaption
|
||||
|
||||
50ohm.de ist die Ausbildungsplattform des DARC e.V.
|
||||
Generator för en svensk webbplats för självstudier inför **Instegscertifikatet** och **HAREC**. Projektet är en oberoende svensk adaption av [50ohm.de](https://50ohm.de) och drivs varken av DARC e.V. eller av SSA.
|
||||
|
||||
Dieses Repository enthält den Generator für die Seite [50ohm.de](https://50ohm.de), der mit einem andern [Repository](https://github.com/DARC-e-V/50ohm-contents-dl/) als Quelle für die Inhalte arbeitet.
|
||||
## Licens, attribution och ändringsmeddelande
|
||||
|
||||
## Überblick
|
||||
Det här repot är baserat på generatorn bakom [50ohm.de](https://50ohm.de) (DARC e.V.), originalet finns i repot [DARC-e-V/50ohm](https://github.com/DARC-e-V/50ohm) (grenen `main`). Generatorns kod är licensierad under AGPL-3.0 (se [`LICENSE`](LICENSE)); innehållet på 50ohm.de är licensierat under CC BY 4.0 och måste tillskrivas DARC e.V. Licensfilerna ska behållas.
|
||||
|
||||
Die Ausbildungsmaterialien von 50ohm.de werden in einem erweiterten Markdownformat geschrieben, intern als DARCdown bezeichnet. Kern des Generators ist ein Parser, der auf [mistletoe](https://github.com/miyuchina/mistletoe) basiert und um zusätzliche Syntax und Ausgabeformate erweitert wurde.
|
||||
**Ändringar:** Generatorn har översatts till svenska (gränssnitt, bildtexter, LaTeX, enhets- och typografiregler enligt svensk praxis), kurserna har ersatts av Instegscertifikat, HAREC och uppgradering från Instegscertifikat till HAREC, den tyska frågebanken är valfri, och all DARC-/tysk branding och alla länkar till tyska tjänster har tagits bort.
|
||||
|
||||
Die möglichen Ausgabeformate sind:
|
||||
Detta är en oberoende adaption. Den är **inte godkänd av DARC eller SSA**.
|
||||
|
||||
## Översikt
|
||||
|
||||
Utbildningsmaterialet skrivs i ett utökat markdown-format, internt kallat DARCdown. Kärnan i generatorn är en parser baserad på [mistletoe](https://github.com/miyuchina/mistletoe) som har utökats med extra syntax och utdataformat. Formatet beskrivs i `README-FORMAT.md` i innehållsrepot.
|
||||
|
||||
Utdataformat:
|
||||
- HTML: [`fifty_ohm_html_renderer.py`](renderer/fifty_ohm_html_renderer.py)
|
||||
- LaTeX: [`fifty_ohm_latex_renderer`](renderer/fifty_ohm_latex_renderer.py)
|
||||
- HTML für Slides mit reveal.js: [`fifty_ohm_html_slide_renderer.py`](renderer/fifty_ohm_html_slide_renderer.py)
|
||||
- LaTeX: [`fifty_ohm_latex_renderer.py`](renderer/fifty_ohm_latex_renderer.py)
|
||||
- HTML för presentationer med reveal.js: [`fifty_ohm_html_slide_renderer.py`](renderer/fifty_ohm_html_slide_renderer.py)
|
||||
|
||||
Prinzipiell lassen sich diese Generatoren auch für andere Quell-Repositories verwenden. Dies ist insbesondere für andere IARU-Verbände interessant, welche auch 50ohm als Ausbildungsseite implementieren wollen. Der eigentliche Teil des Generators liegt in `src`, insbesondere das Skript ([`build.py`](src/build.py)). In dieser Datei finden sich außerdem weitere Begleitfunktionen zum Renderprozess, z.B. das Übersetzen von Fragennummern in Fragen oder das Kopieren von Assets.
|
||||
Själva generatorn finns i `src`, framför allt skriptet [`build.py`](src/build.py). Namnen på webbplatsens sidor definieras på ett ställe: [`src/pages.py`](src/pages.py).
|
||||
|
||||
## Mitmachen und Kontakt
|
||||
## Kurser (Edition)
|
||||
|
||||
Aktuell wird 50ohm durch ein kleines ehrenamtliches Entwicklerteam beim DARC e.V. betreut und weiterentwickelt. Falls du einen Fehler oder einen Funktionswunsch hast, schreibe gerne ein Issue. Auch über einen PR freuen wir uns!
|
||||
Wenn du inhaltliche Beiträge hast, kannst du diese über dieses [Repository](https://github.com/DARC-e-V/50ohm-contents-dl) einreichen.
|
||||
Tre kurser byggs. Varje kurs har en innehållsförteckning (toc) i innehållsrepot:
|
||||
|
||||
Bei Anfragen bitte die Email-Adresse [[email protected]](mailto:[email protected]) nutzen. Weiterhin findet man viele der Beitragenden im Matrix-Kanal [50ohm Contribution](https://matrix.to/#/#50ohm-contribution:darc.de).
|
||||
| Edition (`--edition`) | Kurs | Fil |
|
||||
|---|---|---|
|
||||
| `INSTEG` | Instegscertifikat | `toc/INSTEG.json` |
|
||||
| `HAREC` | HAREC | `toc/HAREC.json` |
|
||||
| `UPPGRADERING` | Uppgradering: Instegscertifikat till HAREC | `toc/UPPGRADERING.json` |
|
||||
|
||||
### Python einrichten und Abhängigkeiten installieren
|
||||
Utan `--edition` byggs alla tre. Alternativet kan anges flera gånger:
|
||||
|
||||
Dieses Projekt wurde mit [`uv`](https://docs.astral.sh/uv/) aufgesetzt, ist aber genauso mit `pip` und `venv` kompatibel.
|
||||
|
||||
Wichtig ist, mit der richtigen Python-Version aus der `.python-version` zu arbeiten. Mit `uv` geht das ganz einfach:
|
||||
```console
|
||||
$ uv venv
|
||||
Using CPython 3.12.7
|
||||
Creating virtual environment at .venv
|
||||
$ source .venv/bin/activate
|
||||
$ python main.py --edition INSTEG --edition HAREC
|
||||
```
|
||||
|
||||
Die Dependencies müssen aus der `requirements.txt` installiert werden:
|
||||
## Innehållsrepot
|
||||
|
||||
Generatorn läser sitt innehåll från ett separat repo med följande struktur:
|
||||
|
||||
```
|
||||
toc/<EDITION>.json innehållsförteckning per kurs
|
||||
contents/sections/<ident>.md text för ett avsnitt
|
||||
contents/slides/<ident>.md presentation för ett avsnitt (valfri)
|
||||
contents/snippets/*.md korta texter för startsidan
|
||||
contents/static/<sida>.html statiska sidor (+ <sida>_sidebar.html, valfri)
|
||||
contents/drawings, photos, html bilder, foton och inbäddad HTML
|
||||
contents/questions/question_pool.json frågebank (valfri, se nedan)
|
||||
contents/questions/metadata.json bildmetadata för frågorna (valfri)
|
||||
contents/solutions/<frågenummer>.md lösningsvägar (valfria)
|
||||
```
|
||||
|
||||
### Statiska sidor och snippets
|
||||
|
||||
Följande sidnamn används (se `src/pages.py`): `prov`, `info`, `sok`, `kurser_karta`, `kurser_lista`, `mentorer`. För de tre sista används en generell mall om innehållsrepot saknar motsvarande statiska sida. Saknade snippets ger tom text, bygget misslyckas inte.
|
||||
|
||||
Snippets som används på startsidan: `index_title`, `index_teaser`, `index_content`, `index_btn_start`, `index_btn_vad_ar_amatorradio`, `lernen_selbst_title`, `lernen_selbst_teaser`, `lernen_selbst_btn_instegs`, `lernen_selbst_btn_harec`, `lernen_selbst_btn_uppgradering`, `lernen_kurs_*` och `lernen_mentor_*` (`title`, `teaser`, `btn`).
|
||||
|
||||
### Frågebank (valfri)
|
||||
|
||||
Det finns ingen svensk frågebank. Om `contents/questions/question_pool.json` saknas hoppar generatorn över provsimulatorn, övningsverktyget, lösningssidorna och `question_index.json`, och alla länkar dit döljs i mallarna (Jinja-variabeln `has_question_pool`). Finns frågebanken byggs allt som förut. `metadata.json` är valfri; saknas en fråga där används standardvärden.
|
||||
|
||||
## Kom igång
|
||||
|
||||
### Installera Python och beroenden
|
||||
|
||||
Projektet är uppsatt med [`uv`](https://docs.astral.sh/uv/) men fungerar lika bra med `pip` och `venv`. Använd Python-versionen i `.python-version`.
|
||||
|
||||
```console
|
||||
$ uv venv
|
||||
$ source .venv/bin/activate
|
||||
$ uv pip sync requirements.txt
|
||||
```
|
||||
|
||||
### Ausführen
|
||||
|
||||
Um 50ohm ausführen zu können, muss der Pfad zu einem lokal ausgechecktem Content-Repository in die `config/config.json` eingetragen werden. Ein Beispiel-Content-Repository für deutsche Inhalte findet sich hier: [50ohm-contents-dl](https://github.com/DARC-e-V/50ohm-contents-dl).
|
||||
|
||||
Die 50ohm.de-Website wird mit folgendem Befehl vollständig gebaut:
|
||||
Med `venv` och `pip`:
|
||||
|
||||
```console
|
||||
$ python3 ./build.py
|
||||
$ python3 -m venv .venv
|
||||
$ source .venv/bin/activate
|
||||
$ pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### Starten
|
||||
Der Einstiegspunkt ist in `build/index.html` zu finden.
|
||||
Alle Seiten sind auch in `build/build.zip` gepackt enthalten.
|
||||
### Bygga
|
||||
|
||||
Um auch die Suchfunktion auf der Seite nutzen zu können, muss ein lokaler Webserver gestartet werden:
|
||||
Ange sökvägen till ett utcheckat innehållsrepo, antingen i `config/config.json` (se `config/config.json.example`), som miljövariabel `OHM_INPUT` eller på kommandoraden:
|
||||
|
||||
```console
|
||||
$ python main.py -i ../50ohm-contents-dl -o build
|
||||
```
|
||||
|
||||
Flaggor: `--input/-i` (innehåll), `--output/-o` (målkatalog, standard `./build`), `--edition` (kurs, se ovan), `--no-render-editions`, `--no-render-solutions`, `--build-zip`. `python build.py` bygger allt och packar `build/build.zip`.
|
||||
|
||||
### Testa lokalt
|
||||
|
||||
Startsidan är `build/index.html`. För att sökfunktionen ska fungera krävs en lokal webbserver:
|
||||
|
||||
```console
|
||||
$ cd build/
|
||||
$ python3 -m http.server 8000
|
||||
```
|
||||
|
||||
Anschließend kann die Webseite unter [`http://localhost:8000/index.html`](http://localhost:8000/index.html) aufgerufen werden.
|
||||
Öppna sedan [`http://localhost:8000/index.html`](http://localhost:8000/index.html).
|
||||
|
||||
### Hosting
|
||||
|
||||
Resultatet är rent statiska filer. Kopiera innehållet i `build/` till valfri webbserver (nginx, Apache, GitHub Pages, ...). Alla länkar är relativa. Ett Docker-bygge finns i `docker/Dockerfile`:
|
||||
|
||||
```console
|
||||
$ docker build -f docker/Dockerfile -t 50ohm-sv .
|
||||
$ docker run --rm -v ../50ohm-contents-dl:/content -v $PWD/build:/build 50ohm-sv -i /content -o /build
|
||||
```
|
||||
|
||||
Webbplatsens sidfot innehåller en platshållare för driftansvarigs egna utgivar-/kontaktuppgifter och integritetspolicy (`templates/html/page.html`, markerad med `TODO`). Den måste fyllas i innan webbplatsen publiceras.
|
||||
|
||||
### Tester och kodstil
|
||||
|
||||
```console
|
||||
$ pip install pytest ruff
|
||||
$ python -m pytest
|
||||
$ ruff check . && ruff format --check .
|
||||
```
|
||||
|
||||
## Presentationer
|
||||
|
||||
Se [`doc/Slides.md`](doc/Slides.md).
|
||||
|
||||
Reference in New Issue
Block a user