09 August 2026

DIY-Upgrade auf TYPO3 v14: Warum ich den l10nmgr selbst migriert habe – und was das bedeutet

Jeder, der seit ein paar Jahren TYPO3-Projekte betreut, kennt das Problem: Ein neues Major-Release wie TYPO3 v14 steht vor der Tür, der Core macht riesige Sprünge – aber manche etablierte Extension hängt fest.

Ein Paradebeispiel dafür ist der Localization Manager (l10nmgr). Für komplexe, mehrsprachige Instanzen ist das Tool Gold wert. Das Problem: Die frei zugängliche Version im Repository steht bei v12. Version 13 ist nicht öffentlich verfügbar, und eine offizielle v14 gibt es schlicht nicht.

Vor diesem Dilemma stand ich vor kurzem für interne Zwecke. Die Lösung? Ich habe mir die öffentliche v12 geschnappt und sie in akribischer Kleinarbeit – aber mit kräftiger KI-Unterstützung – direkt auf TYPO3 v14 gehoben. Völlig in Eigenregie, ohne Anbindung an die offiziellen Entwickler des l10nmgr und natürlich ohne die geschützten Features einer v13.

Das Ergebnis ist eine funktionierende, interne Lauffähigkeit für pages und tt_content. Doch das Experiment wirft ein paar spannende Fragen auf.


Der Doppel-Sprung: Wo KI echte Hilfe war

Von v12 direkt auf v14 zu springen bedeutet, eine komplette Core-Generation (v13) schlicht zu überspringen. Das heißt doppelt so viele Deprecations, doppelt so viele Breaking Changes und völlig veraltete API-Muster im Quellcode.

Sagen wir, wie es ist: Ohne KI-Unterstützung hätte ich mir diesen Aufwand für ein internes Werkzeug kaum gemacht.

  • Der Zeit-Katalysator: KI-Modelle sind genial darin, alte v12-Code-Muster zu erkennen und Vorschläge zu machen, wie man zwei Major-Versionen an Core-Evolution auf einmal überbrückt.
  • Muster-Mapping im Akkord: Veraltete API-Aufrufe über Dutzende Dateien hinweg aufzuspüren und systematisch umzubauen, ist für eine KI eine reine Fleißaufgabe.
  • Eigenbau statt Sackgasse: Statt darauf zu warten, ob irgendwann ein offizielles Update kommt, kann man sich für den eigenen Workflow selbst helfen.

Die Schattenseite: Die Verantwortung beim "Inoffiziellen Fork"

So genial die Möglichkeit ist, veralteten Code eigenhändig wiederzubeleben – man muss sich der Grenzen und der Verantwortung bewusst sein.

1. Völlige Eigenverantwortung

Wenn man eine Extension auf eigene Faust migriert, gibt es kein Sicherheitsnetz. Keine Community, die Bugfixes liefert, und kein offizielles Team, das man fragen kann.

Mein Grundsatz: Wenn der KI-gestützte Code beim Import Daten korrumpiert oder eine Sicherheitslücke aufreißt, gibt es keinen Maintainer, auf den man zeigen kann. Die Verantwortung liegt zu 100 % bei mir.

2. Der "Schuldenberg auf Pump"

Weil die offizielle v13 nicht öffentlich ist, fehlen meinem internen Port sämtliche Features oder Architektur-Anpassungen, die in dieser Generation entstanden sein könnten. Ich habe sozusagen eine v12 auf v14 "gepatcht". Wenn man hier nicht genau versteht, was die KI im Code geändert hat, baut man sich für zukünftige Updates eine technische Schuldenfalle.

3. Community vs. Eigenbrötelei

Open Source lebt eigentlich vom Teilen. Ein reiner "Private Port" löst zwar das eigene Problem, hilft der Community aber erst einmal nicht direkt weiter. Umso wichtiger ist es, transparent zu kommunizieren: Das hier ist ein Experiment für den eigenen Bedarf, kein offizielles Produkt.


Mein Fazit

Dass der l10nmgr auf Basis der v12 bei mir intern unter TYPO3 v14 wieder läuft, zeigt enorm gut, was heute dank KI möglich ist. Man ist nicht mehr völlig blockiert, wenn Erweiterungen veralten.

Aber KI ist kein Zauberstab. Sie nimmt uns die stupide Anpassungsarbeit ab – die Analyse, das Risiko und die finale Verantwortung für die Datenintegrität bleiben reine Mendersache.

26 August 2021

[UPDATE 2] TYPO3 9.x+ Routing mit tx_jobfair nutzen

Ich weiß ich weiß, eigentlich nutzt man keine veralteten Extensions mehr, die evtl. noch Sicherheitsprobleme haben - in diesem Fall nutze ich die Upload-Funktion überhaupt nicht, daher sollte diese Sicherheitslücke gar kein Problem mehr sein. Zurück zum Thema

Kurzum, wenn Ihr Jobfair mit TYPO3 9 oder 10 nutzen wollt und trotzdem sprechende URLs haben möchtet, braucht ihr folgenden Code in der der Siteconfig (config.yaml). An dieser Stelle möchte ich mich nochmal bei den Mitgliedern der inoffziellen TYPO3-Gruppe auf Facebook herzlich bedanken für die Hilfe! 


  Jobfair:

    type: Extbase

    limitToPages: 

      - 123

    extension: Jobfair

    plugin: Pi1

    routes:

      - 

        routePath: '/{job_title}'

        _controller: 'Job::show'

        _arguments:

          job_title: job

    defaultController: 'Job::show'

    aspects:

      job_title:

        type: PersistedAliasMapper

        tableName: tx_jobfair_domain_model_job

        routeFieldName: job_title slug

UPDATE:

Hey Leute, kurzes Update - wie ihr im Code oben sehen könnt, habe ich bei "routeFieldName:" anstatt job_title nun slug genommen. Das ist viel besser, weil hier aus den Titeln saubere URLs generiert werden. Gerade bei Stellenanzeigen mit Angaben wie z.B. (m/w/d) oder so werden die Slashes nicht mit in die URL übernommen sondern sauber mit "-" umgeschrieben. Dasselbe gilt auch für Umlaute. 

Falls ihr viele Stellenanzeigen habt und die ganzen Slugs nicht per Hand neu generieren wollt (bei einem Upgrade der Website) dann kann ich euch die Extension "Rebuild URL slugs" empfehlen. Damit könnt ihr auf Knopfdruck z.B. von allen News oder allen Jobs die Slugs neu generieren. 

P.S.: Wenn ihr eine angepasste Version von Jobfair für V9 haben wollt, gebt mir einfach Bescheid - aber bitte nicht die Bewerbungsfunktion nutzen! 

UPDATE 2 (2022): 

Jobfair wurde inzwischen offiziell fortgeführt! Vielen Dank an dieser Stelle an "nhovratov"!

Mir ist allerdings bei einer Installation ein neuer Bug aufgefallen: Wenn ihr die Stellenanzeigen in einem Ordner habt, der nicht im Seitenbaum eurer aktuellen Website liegt, werden die Stellenanzeigen auf der Detailseite nicht korrekt angezeigt. Siehe Screenshot, damit ihr wisst, was ich meine:


Es geht hier darum, dass dieselben Stellenanzeigen auf mehreren Seiten eingebunden werden sollen. Das Problem wird hier nochmal ausführlich dargestellt: https://forge.typo3.org/issues/91397

Die Lösung bei Jobfair: Ihr müsst folgende TCA anpassen, dann sollte es funktionieren:

$GLOBALS['TCA']['tx_jobfair_domain_model_job']['columns']['slug']['config']['eval'] = 'unique';




29 März 2021

Nextcloud Fehlermeldung: Step 4 is currently in process. Please reload this page later.

Hey Leute, 

wenn ihr mal euer Nextcloud aktualisiert und der Vorgang (aus welchem Grund auch immer) hängt und jeder Update-Prozess mit der Fehlermeldung "Step 4 is currently in process. Please reload this page later." quittiert wird, dann könnt ihr folgendes machen: 

  1. Geht per FTP/Shell/WebFTP etc. zum Unterordner "data". Hier dürfte es einen Unterordner namens "updater-xxxxxxxxxxxx" geben, wobei die "x" eine beliebige Zeichenfolge sein können. 
  2. Löscht diesen Unterordner (könnte eine Weile dauern, weil in dem Unterordner sämtliche Dateien für das jeweilige Update hinterlegt ist)
  3. Started den Updateprozess neu
  4. Et voilà!

03 März 2021

USB-Mikrofon/Audio-Interface mit SwyxIt! 11 benutzen

Jeder, der mal auf die Idee kam im Homeoffice (oder auch im Büro) mit SwyxIt! Version 11 (Windows) ein USB-Mikrofon/Audio-Interface zu nutzen, wird sehr schnell enttäuscht sein - beim Telefonieren hört das Gegenüber nämlich nichts, rein gar nichts, obwohl das Mikrofon korrekt ausgewählt und in den Audioeinstellungen augenscheinlich korrekt kalibriert wurde. 

Anscheinend ist es so, dass - aus welchem Grund auch immer - SwyxIt! die Empfindlichkeit des Mikrofons nicht einstellen (oder speichern) kann. Es ist quasi immer auf 0 eingestellt, egal was man in der App einstellt. 

Hier habe ich die Lösung: 

  • Merkt euch den Namen eures USB-Mikrofons in der SwyxIt!-App. 
  • Öffnet den Registrierungseditor als Administrator
    1. Öffnet hierzu das Windowsmenü, 
    2. tippt "Regedit" ein
    3. Rechtsklick auf "Registrierungs-Editor"
    4. "Als Administrator ausführen"
  • Hangelt euch bis zu diesem Schlüssel: \HKEY_CURRENT_USER\SOFTWARE\Swyx\Client Line Manager\CurrentVersion\Options\S-xxxxxxx\AudioModes\
    • S-xxxxx steht für einen Ordner mit einer sehr langen Zahlenkombination, der bei jedem individuell ist
  • Öffnet dann hier den Unterordner mit dem Namen eures USB-Mikrofons. 
  • Stellt dann bei den Einträgen "HandsetCaptureVolume", "HandsfreeCaptureVolume", "HeadsetCaptureVolume" jeweils den gewünschten Wert von 0-100 (=Mikrofonempfindlichkeit) ein. Wichtig ist, dass ihr die Basis auf  "Dezimal" stellt! 

  • Danach sollte es gehen! Viel Spaß eurem Gegenüber für die deutlich verbesserte Sprachqualität!