Slug and multilanguages



I have a problem similiar to this post and it seems that str::slug()doesn’t work with chinese either.

So my question is, how I can use slug() to use my default language?
I use a one pager template and my code looks like this:

  $categories = $data->categories()->toStructure();
  $selected = $categories->first();

  <?php foreach ($categories as $category): ?>
    <li class="tab <?= $category == $selected ? 'is-selected' : '' ?>">
      <a href="<?= $site->defaultLanguage('en')->url() . '/#' . str::slug($category->title()) ?>">
        <?= $category->title()->html() ?>
  <?php endforeach ?>


Let’s start with a little fix:

It should be


not $site and the defaultLanguage() method doesn’t accept a parameter (there is only one default language).

What is the result you get from str::slug($category->title())?


I’ve fixed the code

<a href="<?= $kirby->defaultLanguage()->url() . '/#' . str::slug($category->title()) ?>">
  <?= $category->title()->html() ?>

I get the desired result for two languages but for the chinese I get nothing #


You probably need a custom sluggify method for Chinese. Since I’m not familiar with it at all, I can’t give advice how to create a proper slug in Chinese.


Thanks, I’ll try that