Drupal - přesměrování na lokalizovanou stránku

i18n pain

Drupal - přesměrování na lokalizovanou stránku
« kdy: 19. 08. 2015, 13:18:40 »
Mám dva jazyky - cs a en. En je defautlní a url prefix nemá. Cs má prefix cs.

www.site.com - 'en' obsah
www.site.com/cs - 'cs' obsah

Detekce jazyka je nastavená v tomto pořadí - URL, USER, BROWSER.

Tzn. nejdříve pokus získat jazyky z url, pokud nic tak jestli je uživatel zaregistrován a má nastavený jazyk a pokud také nic, tak podle hlaviček požadavku.

Problém je, že pořád když mi přijde na web nepřihlášený uživatel, tak mu drupal servíruje český obsah (tzn. detekce z hlaviček funguje), ale z adresy pro anglický, takže na hlavní stránce
www.site.com dostane anonymní Čech 'cs' obsah, ale správně by ho to mělo přesměrovat na www.site.com/cs.

Nevíte kde se dá nastavit něco jako "přesměruj na lokalizovanou  stránku pro detekovaný jazyk"?



Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #1 kdy: 19. 08. 2015, 13:25:13 »
si myslim, ze to pro frontpage nevyresis.
Děkuji za možnost editace příspěvku.

VK

Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #2 kdy: 20. 08. 2015, 16:01:04 »
Odpověď Googlu pro "drupal localized frontpage" nic neřeší?

Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #3 kdy: 20. 08. 2015, 16:43:57 »
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.
Děkuji za možnost editace příspěvku.

i18n pain

Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #4 kdy: 21. 08. 2015, 01:16:46 »
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í.






Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #5 kdy: 21. 08. 2015, 09:20:58 »
No, entity_translation prislo az hoooodne dlouho po i18n takze tam to moc spolu neklapne.

Pokud stavis novy multilang web tak bych dosta vazne zvazil D8.

Jinak co je skvely tak jsi popsal: kdyz ti neco nevyhovuje tak si to proste hooknes nebo napises sam.
Děkuji za možnost editace příspěvku.

i18n pain

Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #6 kdy: 21. 08. 2015, 10:56:34 »
No, entity_translation prislo az hoooodne dlouho po i18n takze tam to moc spolu neklapne.

Pokud stavis novy multilang web tak bych dosta vazne zvazil D8.

Jinak co je skvely tak jsi popsal: kdyz ti neco nevyhovuje tak si to proste hooknes nebo napises sam.

Já jsem o tom uvažoval dělat to rovnou v D8, i když to je ještě beta, ale protože nejsem žádný Drupal expert, tak jsem zvolil raději D7, o kterém je na netu spousta materiálů a většina problémů se dá nějak pogooglit. Taky na mě působí D8 takovým rozporuplným dojmem. Mám pocit, že se to OOP na ten drupal úplně nehodí. Milión tříd, každá třída spoustu interfaců, takový moc "enterprise". Když jsem začínal programovat, tak se akorát rozjížděli různé PHP frameworky a v té době bylo hrozně IN používat Zend. Pak příšel Zend 2 a byl to docela propadák. Trochu na mě tak působí ta evoluce Drupalu. Snad později změním názor.

Re:Drupal - přesměrování na lokalizovanou stránku
« Odpověď #7 kdy: 21. 08. 2015, 12:40:47 »
Ano, D8 z hlediska "vnitrku" je enterprise orientovany. Je to logicke - Dries = Acquia = velky byznys.

Co bylo dle meho strategicke v pozitivnim smyslu tak je, nahrazeni jadra za Symfony. Driv byl phpkar a toho clovek ucil do Drupalu(hooky, api apod). Dneska muzu na Drupal programovani vzit Symfonistu, zvladne to v pohode i zednar, teda Zendar. A mozna i Netteckar se preorientuje.

Ale je pravda, ze jsem v podstate jen ten proceduralni hookovaci drupalista takze nemam s programovanim D8 zatim praxi(jen frontend klikani a lehce sablona) tak to beru dost jako vyzvu.
Děkuji za možnost editace příspěvku.