Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,37 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/spec/v2.0.0.ht

---

## [2.37.0] — 2026-08-07

Alle 24 EU-Amtssprachen statt zwei.

### ✨ Added
- **Sprachauswahl als gebündeltes Vokabular** (`config/vocabularies/language.json`). Bisher standen
fest im Code nur Deutsch und Englisch zur Wahl — und zwar nicht nur beim Sprachfeld des
Datensatzes, sondern auch in allen drei Übersetzungs-Repeatern und bei der Standardsprache in
den Einstellungen. Mehrsprachige Metadaten waren damit praktisch auf Englisch beschränkt,
obwohl das Plugin sie als Funktion führt.

### ℹ️ Hintergrund
Die Begrenzung lag ausschließlich in der Auswahlliste: `odw_resolve_language_tag()` setzte alle
24 EU-Sprachcodes schon vorher korrekt nach BCP-47 um (`DEU` → `de`, `POL` → `pl` …). Die
JSON-LD-Ausgabe war also längst vorbereitet, das Formular bot die Sprachen nur nicht an.

Deutsch und Englisch stehen weiterhin an erster Stelle, die übrigen 22 alphabetisch darunter.
Bleibt die Vokabulardatei einmal aus, fällt die Auswahl auf Deutsch und Englisch zurück — ohne
mindestens eine Sprache ließe sich weder eine Übersetzung pflegen noch eine Standardsprache
wählen.

Wie bei den anderen gebündelten Vokabularen stehen die Bezeichnungen in der JSON-Datei und
durchlaufen damit nicht die Übersetzungsdateien. Das ISO-Kürzel im Label („Polnisch (PL)")
macht den Eintrag trotzdem eindeutig.

### 📝 Dokumentation
- Die Roadmap in `CLAUDE.md` führte `access-right` und die EU-Sprachliste als offen. Das
`access-right`-Vokabular liegt seit Längerem vor; beide Punkte sind jetzt als erledigt vermerkt.

---

## [2.36.0] — 2026-08-07

Überarbeitetes Formular-Design — Typografie, Abstände, Eingabefelder.
Expand Down
11 changes: 7 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -730,7 +730,7 @@ Update **both** locations:
- MINOR: New features (backward-compatible)
- PATCH: Bug fixes only

Current: **v2.36.0**
Current: **v2.37.0**

---

Expand Down Expand Up @@ -766,6 +766,9 @@ Neue technische Festlegungen gehören dorthin, nicht in README oder CLAUDE.md.
Dokument) + `&format=turtle` über den dependency-freien `ODW_Rdf`-Serializer; Admin-Box mit den
kopierfertigen URLs. Gegen die gebündelten SHACL-Shapes validiert (DCAT-AP.de: konform).
- **Reproduzierbare Abhängigkeiten (v2.34.0):** `vendor/` ist nicht mehr eingecheckt (siehe Quick Start).
- **Gebündelte Vokabulare vervollständigt (v2.37.0):** `access-right` (3 Stufen) und `language`
(alle 24 EU-Amtssprachen) liegen unter `config/vocabularies/`. Die Sprachauswahl bot vorher nur
Deutsch und Englisch, obwohl `odw_resolve_language_tag()` alle 24 Codes bereits umsetzen konnte.
- **Content Negotiation (v2.35.0):** Alle drei Endpunkte liefern `jsonld`/`json`/`turtle`; ohne
`?format=` entscheidet der `Accept`-Header (q-Werte, `Vary: Accept`). Explizites `?format=`
hat Vorrang.
Expand All @@ -777,8 +780,8 @@ Neue technische Festlegungen gehören dorthin, nicht in README oder CLAUDE.md.
- **Gutenberg-Block** für die Download-Card (Alternative zum Shortcode).
- **Mehrsprachigkeit der Oberfläche** (WPML/Polylang) — das Datenmodell unterstützt Mehrsprachigkeit
bereits, die Integration fehlt.
- **Optional/künftig:** weitere gebündelte Vokabulare (`access-right`, vollständige EU-Sprachliste);
Registry-getriebenes Formular-/JSON-LD-Rendering (Aufräumarbeit ohne sichtbaren Nutzen).
- **Optional/künftig:** Registry-getriebenes Formular-/JSON-LD-Rendering (Aufräumarbeit ohne
sichtbaren Nutzen).

> **Hinweis zu i18n:** Im aktuellen Container ist `msgfmt` nicht verfügbar. Die `.mo` wird daher per
> gebündeltem, dependency-freiem PO→MO-Skript neu erzeugt:
Expand Down Expand Up @@ -869,6 +872,6 @@ Neue technische Festlegungen gehören dorthin, nicht in README oder CLAUDE.md.

---

**Zuletzt aktualisiert**: Version 2.36.0 (August 2026)
**Zuletzt aktualisiert**: Version 2.37.0 (August 2026)
**Autor**: Open Data Wizard Team (nozilla)
**License**: GPL-2.0-or-later
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
![PHP Version](https://img.shields.io/badge/PHP-%3E%3D%208.1-8892BF?style=flat-square&logo=php&logoColor=white)
![WordPress](https://img.shields.io/badge/WordPress-compatible-21759B?style=flat-square&logo=wordpress&logoColor=white)
![DCAT-AP](https://img.shields.io/badge/DCAT--AP-3.0-brightgreen?style=flat-square)
![Version](https://img.shields.io/badge/Version-2.36.0-brightgreen?style=flat-square)
![Version](https://img.shields.io/badge/Version-2.37.0-brightgreen?style=flat-square)
![PRs Welcome](https://img.shields.io/badge/PRs-willkommen-brightgreen?style=flat-square)

📖 [Dokumentation](DOCUMENTATION.md) · 📋 [Feld-Referenz](docs/FELD-REFERENZ.md) · 📐 [Technische Spezifikation](TECHNICAL-SPEC.md) · 📝 [Changelog](CHANGELOG.md) · 🛡️ [Security](SECURITY.md) · ⚖️ [Lizenz](LICENSE)
Expand Down Expand Up @@ -101,7 +101,7 @@ allgemeinverständlicher Erklärung je Feld steht in [`docs/FELD-REFERENZ.md`](d
- **Mehrere Distributionen** je Datensatz — dieselben Daten z. B. als CSV *und* JSON, jeweils mit
eigener Lizenz, Größe und Format

**Statt Freitext kontrollierte Vokabulare:** Themen, Dateiformate, Sprachen, Lizenzen, Zugriffsrechte
**Statt Freitext kontrollierte Vokabulare:** Themen, Dateiformate, Sprachen (alle 24 EU-Amtssprachen), Lizenzen, Zugriffsrechte
und Aktualisierungsfrequenzen stammen aus den offiziellen EU- und DCAT-AP.de-Listen. Sie wählen
„Umwelt" — gespeichert wird die dazugehörige URI.

Expand Down
98 changes: 98 additions & 0 deletions config/vocabularies/language.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
[
{
"value": "http://publications.europa.eu/resource/authority/language/DEU",
"label": "Deutsch (DE)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/ENG",
"label": "Englisch (EN)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/BUL",
"label": "Bulgarisch (BG)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/DAN",
"label": "Dänisch (DA)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/EST",
"label": "Estnisch (ET)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/FIN",
"label": "Finnisch (FI)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/FRA",
"label": "Französisch (FR)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/ELL",
"label": "Griechisch (EL)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/GLE",
"label": "Irisch (GA)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/ITA",
"label": "Italienisch (IT)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/HRV",
"label": "Kroatisch (HR)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/LAV",
"label": "Lettisch (LV)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/LIT",
"label": "Litauisch (LT)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/MLT",
"label": "Maltesisch (MT)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/NLD",
"label": "Niederländisch (NL)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/POL",
"label": "Polnisch (PL)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/POR",
"label": "Portugiesisch (PT)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/RON",
"label": "Rumänisch (RO)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/SWE",
"label": "Schwedisch (SV)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/SLK",
"label": "Slowakisch (SK)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/SLV",
"label": "Slowenisch (SL)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/SPA",
"label": "Spanisch (ES)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/CES",
"label": "Tschechisch (CS)"
},
{
"value": "http://publications.europa.eu/resource/authority/language/HUN",
"label": "Ungarisch (HU)"
}
]
22 changes: 16 additions & 6 deletions includes/class-fields.php
Original file line number Diff line number Diff line change
Expand Up @@ -1187,12 +1187,22 @@ public static function get_format_eu_uri( string $format ): string {
* @return array<string, string>
*/
public static function get_language_options(): array {
$base = 'http://publications.europa.eu/resource/authority/language/';
return array(
'' => __( '— Bitte wählen —', 'open-data-wizard' ),
$base . 'DEU' => __( 'Deutsch (DE)', 'open-data-wizard' ),
$base . 'ENG' => __( 'Englisch (EN)', 'open-data-wizard' ),
);
$options = array( '' => __( '— Bitte wählen —', 'open-data-wizard' ) );

foreach ( self::load_vocabulary( 'language' ) as $entry ) {
$options[ $entry['value'] ] = $entry['label'];
}

// Rückfallebene, falls die Vokabulardatei fehlt oder unlesbar ist:
// Ohne mindestens eine Sprache ließen sich weder mehrsprachige Literale
// pflegen noch eine Standardsprache in den Einstellungen wählen.
if ( 1 === count( $options ) ) {
$base = 'http://publications.europa.eu/resource/authority/language/';
$options[ $base . 'DEU' ] = __( 'Deutsch (DE)', 'open-data-wizard' );
$options[ $base . 'ENG' ] = __( 'Englisch (EN)', 'open-data-wizard' );
}

return $options;
}

/**
Expand Down
4 changes: 2 additions & 2 deletions open-data-wizard.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: Open Data Wizard
* Plugin URI: https://github.com/daimpad/OpenDataWizard
* Description: DCAT-AP 3.0 konforme Open Data Metadatenverwaltung für WordPress. Bereitstellung als maschinenlesbarer JSON-LD-Endpoint für offene Daten.
* Version: 2.36.0
* Version: 2.37.0
* Requires at least: 6.4
* Requires PHP: 8.1
* Author: nozilla
Expand All @@ -26,7 +26,7 @@
exit;
}

define( 'ODW_VERSION', '2.36.0' );
define( 'ODW_VERSION', '2.37.0' );
define( 'ODW_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'ODW_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'ODW_PLUGIN_FILE', __FILE__ );
Expand Down
Loading