languageCode in changeSlug/changeTitel of Custom PageModel is null

Hi all,
i like to do multilingual pages from database. Therefore i would like to go with the strategy, that all fields are in one row, because i only need two languages, and only 3 fields are translated. (Later there will come other non-translatable fields)

The table looks like that:

That is working so far: Pages are displayed, are deletable by uuid and i can change the text in each language by writeContent in the PageModel.
If i am going to change the slug or the title, i can’t figure out the current language, because languageCode unfortunately is always null.

Shouldn’t the languageCode be the current Panel-Language?

I am wondering, why i get the languageCode in writeContent but not in changeSlug or changeTitle. What am i missing here?

<?php

use Kirby\Cms\Page;
use Kirby\Cms\Pages;
use Kirby\Database\Db;
use Kirby\Uuid\Uuid;

class CommentsPage extends Page
{
    public function children()
    {
        if ($this->children instanceof Pages) {
            return $this->children;
        }

        $comments = [];

        foreach (Db::select('comments') as $comment) {
            $comments[] = [
                'slug' => $comment->slugDE(),
                'num'      => $comment->status() === 'listed' ? 0 : null,
                'template' => 'comment',
                'model'    => 'comment',
                'status' => is_null($comment->status()) ? 'draft' : $comment->status(),
                
                'translations' => [
                    'de' => [
                        'code' => 'de',
                        'slug' => $comment->slugDE(),
                        'content' => [
                            'uuid'  => is_null($comment->uuid()) ? Uuid::generate() : $comment->uuid(),
                            'uuid_debug' => $comment->uuid(),
                            'title'  => $comment->titleDE(),
                            'text'  => $comment->textDE(),
                        ]
                    ],
                    'en' => [
                        'code' => 'en',
                        'slug' => $comment->slugEN(),
                        'content' => [
                            'title'  => $comment->titleEN(),
                            'text'  => $comment->textEN(),
                        ]
                    ],
                ],
            ];
        }

        return $this->children = Pages::factory($comments, $this);
    }
}

public function changeSlug(string $slug, string $languageCode = null)
  {

      $data['slug'.Str::upper($languageCode)] = Str::slug($slug);

      if ($comment = Db::first('comments', '*', ['uuid' => $this->uuid()->id()])) {
          if (Db::update('comments', $data, ['uuid' => $this->uuid()->id()])) {
              return $this;
          };
      }
      return $this;
  }

  public function changeTitle(string $title, string $languageCode = null)
  {
      $data['title'.Str::upper($languageCode)] = $title;

      if ($comment = Db::first('comments', '*', ['uuid' => $this->uuid()->id()])) {
          if (Db::update('comments', $data, ['uuid' => $this->uuid()->id()])) {
              return $this;
          };
      }
      return $this;
  }

public function writeContent(array $data, string $languageCode = null): bool
    {   
        unset($data['uuid_debug']);
        unset($data['slug']);
        unset($data['text']);
        unset($data['title']);

        if ($comment = Db::first('comments', '*', ['uuid' => $this->uuid()->id()])) {
            unset($data['uuid']);

            $data['textDE'] = $this->content('de')->text();
            $data['textEN'] = $this->content('en')->text();
            $result = Db::update('comments', $data, ['uuid' => $this->uuid()->id()]);
            return $result;
        } else {
            $data['slugDE'] = $this->slug('de');
            $data['slugEN'] = $this->slug('en');
            $data['titleDE'] = $this->content('de')->title();
            $data['titleEN'] = $this->content('en')->title();
            $result = Db::insert('comments', $data);
            return $result;
        }

    }

    public function delete(bool $force = false): bool
    {
        return Db::delete('comments', ['uuid' => $this->uuid()->id()]);
    }

}

Hmm, found a more or less easy solution, but i am still wondering why the languageCode-Param is null

public function changeTitle(string $title, string $languageCode = null)
    {
        $languageCode = $languageCode ?? $this->kirby()->language()->code();
        $data['title'.Str::upper($languageCode)] = $title;