Skip to content

fix: Carbon-Fields-Bedienelemente auf Deutsch (v2.47.5) - #154

Merged
daimpad merged 3 commits into
mainfrom
claude/bold-cray-hnaumj
Nov 6, 2026
Merged

daimpad merged 3 commits into
mainfrom
claude/bold-cray-hnaumj

Conversation

@daimpad

@daimpad daimpad commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

Problem

Im Formular erschienen auch in einem deutschen WordPress englische Texte aus der JavaScript-Oberfläche von Carbon Fields (Domain carbon-fields-ui): „There are no entries yet.“, „Add Distribution“, „Select Date“, „No options.“, „Collapse All“ u. a. Umgekehrt zeigte der Kalender auf en_US deutsche Monatsnamen.

Ursachen

  1. Carbon Fields 3.6.11 bringt für carbon-fields-ui keine de_DE-Datei mit.
  2. Carbon Fields lädt seine UI-Texte nicht über wp_set_script_translations(), sondern selbst: Loader::load_textdomain() → Loader::get_ui_translations() → wp_localize_script() als cf.config.locale (über den Filter carbon_fields_config) → setLocaleData() im JS. Seit WordPress 6.5 liefert get_translations_for_domain()->entries eine Liste (WP_Translations::__get()); Carbon Fields übernimmt die Indizes 0, 1, 2 … als msgids. Damit erreicht keine UI-Übersetzung die Oberfläche, auch keine mitgelieferte (z. B. fr_FR). Eine de_DE-Datei allein hätte also nichts bewirkt.
  3. Die Datumsfelder stellten flatpickr fest auf locale: 'de', und odw-datepicker-de.js wurde für jede Locale geladen.

Änderungen

  • ODW_Carbon_Fields_L10n (includes/class-carbon-fields-l10n.php): lädt für alle de*-Locales languages/carbon-fields-ui-de_DE.mo und baut cf.config.locale im Filter carbon_fields_config nach msgid (samt Kontext) neu auf. Eigenschaften werden ohne isset()/?? gelesen, weil WP_Translations kein __isset() hat.
  • languages/carbon-fields-ui-de_DE.po/.mo: 50 Zeichenketten, Anrede „Sie“. Die Datei liegt im Plugin, nicht in vendor/. Meldungen, die nur in der Entwickler-Konsole erscheinen, bleiben englisch.
  • Mehrfachauswahl: „Select...“ und „No options“ sind feste Vorgaben von react-select und laufen durch keine Textdomain. assets/js/odw-carbon-fields-l10n.js ersetzt sie im DOM durch „Auswählen…“ und „Keine passenden Optionen“. Die Zieltexte laufen über die Plugin-Domain, auf en_US ist der Tausch deshalb wirkungslos. Die Live-Vorschau liest nur .cf-multiselect__multi-value__label und ist davon nicht betroffen.
  • Kalendersprache: ODW_Fields::date_picker_options() gibt bei deutscher Locale de, sonst flatpickrs englisches default an. odw-datepicker-de.js wird nur noch für deutsche Locales geladen; sein wirkungsloser Tausch von „Select Date“ (das ist ein Button, kein Platzhalter) ist entfallen.
  • en_US-.po/.mo und .pot sind um die zwei neuen Zeichenketten ergänzt. Alle Einträge aus main sind unverändert, 2 sind hinzugekommen.
  • Version 2.47.5, weil main 2.47.3 und 2.47.4 bereits vergeben hat. CHANGELOG und CLAUDE.md sind angepasst.

Prüfung

  • PHPUnit: 517 Tests grün, davon 12 neu in tests/test-carbon-fields-l10n.php. Sie prüfen die Schlüsselbildung mit nachgebildetem WP_Translations und mit älteren Übersetzungsobjekten, das Laden nur bei deutscher Locale, ob die .mo zur .po passt, und die Kalendersprache je Locale.
  • PHPCS und PHPStan ohne Befund; bin/check-i18n.py OK.
  • bin/build-release.sh und bin/verify-package.py: OK. Die Gegenprobe, bei der .mo und JS aus dem Paket entfernt wurden, meldet beide Dateien als fehlend; sie werden also automatisch erfasst.
  • E2E (admin-workflow.spec.js, „Bedienelemente von Carbon Fields sprechen Deutsch“): deutsche Texte und deutsche Wochentage im Kalender, kein englischer Text. Die Kalenderprüfung kam mit dem letzten Commit hinzu und läuft in der CI.

Generated by Claude Code

Im Formular standen auch in einem deutschen WordPress englische Texte aus
der Oberfläche von Carbon Fields (Domain carbon-fields-ui): „There are no
entries yet.", „Add Distribution", „Select Date", „No options." u. a.

Ursachen:
- Carbon Fields 3.6.11 bringt für carbon-fields-ui keine de_DE-Datei mit.
- Carbon Fields reicht seine UI-Übersetzungen über wp_localize_script()
  als cf.config.locale an setLocaleData() weiter und liest sie über
  get_translations_for_domain()->entries. Seit WP 6.5 ist das eine Liste;
  Carbon Fields nimmt die Indizes als msgids, keine Übersetzung kommt an.

Änderungen:
- ODW_Carbon_Fields_L10n: lädt languages/carbon-fields-ui-de_DE.mo für
  alle de*-Locales und baut cf.config.locale im Filter
  carbon_fields_config nach msgid (samt Kontext) geschlüsselt neu auf.
- languages/carbon-fields-ui-de_DE.po/.mo (Anrede „Sie"), nicht in vendor/.
- assets/js/odw-carbon-fields-l10n.js: feste react-select-Texte der
  Mehrfachauswahl („Select...", „No options") über die Plugin-Domain.
- odw-datepicker-de.js: wirkungslosen Platzhalter-Tausch entfernt.
- en_US-.po/.mo und .pot um die zwei neuen Zeichenketten ergänzt.
- Unit-Tests und E2E-Zusicherung im deutschen Formular.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GcBuax4aJvDgWhT9oi6vNM
main hat 2.47.3 und 2.47.4 vergeben. Versionsstellen auf 2.47.5,
CHANGELOG-Eintrag über 2.47.4 einsortiert, en_US-.mo aus der
zusammengeführten .po neu kompiliert (753 Einträge aus main unverändert,
2 neue).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GcBuax4aJvDgWhT9oi6vNM
@daimpad daimpad changed the title fix: Carbon-Fields-Bedienelemente auf Deutsch (v2.47.3) fix: Carbon-Fields-Bedienelemente auf Deutsch (v2.47.5) Nov 6, 2026
Die Datumsfelder stellten flatpickr fest auf locale 'de', und
odw-datepicker-de.js lud die deutsche Sprachdatei für jede Locale. Auf
en_US zeigte der Kalender deshalb deutsche Monats- und Wochentagsnamen.

- ODW_Fields::date_picker_options(): 'de' bei deutscher Locale, sonst
  flatpickrs englisches 'default' (vermeidet zugleich „invalid locale").
- odw-datepicker-de.js nur für deutsche Locales einbinden.
- Unit-Test je Locale, E2E: deutsche Wochentage im deutschen Formular.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GcBuax4aJvDgWhT9oi6vNM
@daimpad
daimpad merged commit e1af2cb into main Nov 6, 2026
22 checks passed
@daimpad
daimpad deleted the claude/bold-cray-hnaumj branch November 6, 2026 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants