Tam jde o to, ze z pohledu systemu je v obou pripadech na stejne strance (<front>) a neni duvod presmerovat - detekce je spravna, uzivateli jde spravny obsah.
Funkce jako drupal_goto() nebo current_path() nebo arg() neresi jazyk, jen systemovou cestu a ta je v tomhle pripade prazdny retezec.
Ten problém byl asi v tom, že jsem blbě předpokládal dvě věci.
1. I když má Drupal nastaven pro defaultní jazyk (angličtinu) prázdný prefix, tak pokud dojde k přístupu na url bez prefixu, tak to nedopadne tak, že se zvolí jazyk co nemá prefix, ale metoda URL selže a jdou se zkoušet ty další. Tím došlo k tomu, že se detekoval jazyk z hlaviček. Já jsem se domníval, že Drupal prostě zvolí angličtinu. V podstatě jsem myslel, že URL vždycky uspěje.
2 Druhá věc je, že Drupal nepřesměruje automaticky na adresu s prefixem pro detekovaný jazyk, což jsem myslel, že se děje.
Oni se ty dvě věci vlastně popírají, protože kdyby URL vždycky uspěla, tak by nikdy nemohlo dojít k tomu automatickému přesměrování, měl jsem to blbě nastavné.
Každopádně jsem to nakonec musel vyřešit hákem hook_language_negotiation_info a napsáním vlastní detekce, protože z těch dostupných to chování prostě nešlo udělat.
S tím Drupalem to je ale šílenost co se týče té lokalizace. Řeším to už asi 4 dny a pořád se vyskytují nové problémy. Teď se mi zase na stránce u českých překladů zobrazují checkboxy bez labelu pro anglické taxonomy termy co nemají překlad, místo toho aby tam byly jen ty české termy a to jsem navíc musel ještě taxonomy fieldy nahradit těmi entity referencemi, jinak se to nepřekládalo vůbec, protože ty moduly entity_translation a i18_taxonomy si nějak nerozumí.