LANGUAGE_NEGOTIATION_NONE disregards path aliases for translated nodes

catch - October 13, 2008 - 20:05
Project:Drupal
Version:7.x-dev
Component:path.module
Category:bug report
Priority:normal
Assigned:Unassigned
Status:active
Description

If you set a path alias for a node which is a translation, and have your locale settings to LANGUAGE_NEGOTIATION_NONE, the alias is never used, and will return a 404 if you try to visit it directly, instead you just get node/nid as if there was no alias set.

This caused me several hours of headache, as documented on #204106: Test for translated path aliases.

Two options:
1. Make drupal_lookup_path() return an alias in that case - there's a patch by desbeers (and updated by me) on that issue which does this.
2. form_alter out the path field on nodes where it's going to be disregarded.

Personally I'd go for #1 - since as far as I can see the current behaviour, whether by design or not, is both completely undocumented, and to me makes no sense whatsoever.

#1

Damien Tournoud - October 13, 2008 - 20:17

I'm favorable to #1, but the patch in the other issue is wrong: we should use any alias regardless of the language *only if* language negotiation is set to NONE.

 
 

Drupal is a registered trademark of Dries Buytaert.