wagtail / wagtailtrans

A Wagtail add-on for supporting multilingual sites
http://wagtailtrans.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
104 stars 60 forks source link

Do not append language code to slug while synchronizing translation tree #196

Open mateusz-kleinert opened 3 years ago

mateusz-kleinert commented 3 years ago

Hello, there is an issue created some time ago - #178 - which I believe this PR can solve.

With WAGTAILTRANS_SYNC_TREE set to True we can end up with paths like this one: /fr/products-fr/ assuming that the fr is not the default language. This is due to synchronizing translation tree algorithm which makes use of create_translation() method from TranslatablePage. As create_translation() can be used in a different contexts it tampers the slug value trying to make it unique. With WAGTAILTRANS_SYNC_TREE set to True we don't need to append language code to slug as the translated page is going to exist in a different sub-tree than the canonical page.

After some experiments I think the synchronize_trees() signal handler is the right place for a fix. However, I'd love to get some feedback and discuss alternatives.