Me again, still at the absolute beginner level, but having read some more tutorials and manuals and played more with DispatchTest.
Two pre-requisites which I must fulfill in my webshop: 1.) I have to consider internationalisation (i18n) of my app. It has to serve pages in 5 languages (today), probably more later. Language is depending on browser header information or user choice. 2.) I must have 'speaking' URIs for better SEO. I.e. URIs like /cars/volkswagen/sedan instead of /products?manufacturer=23&prodid=42. In German that URI would probably be /fahrzeuge/volkswagen/limousinen. Other example: EN: /cars/rangerover/fourwheeldrive DE: /fahrzeuge/rangerover/allrad FR: /voitures/rangerover/tout-terrain (All examples are fictious.) Now, where does that leave me with the controller and dispatch actions? One idea comes to mind which is to use n different controllers, one for each language (Controller::Cars, Controller::Fahrzeuge, Controller::Voitures etc.). In each controller the same list of actions is repeated (yuck!), each action sub has it's counterpart in each other language. Currently we have 234 entries in our product selection tree (i.e. navigation tree) grouped into 12 major categories and several subcategories, up to 5 levels deep. WTF? Maintain 5 (or more) navig trees plus write 5 (or more) more or less idetical controllers (one for each language) with ~234 action subs each. No way! That's a maintenance nightmare. That cannot be a viable solution... Where am I wrong in my thinking? What I am envisioning is a central file where I (somehow, XML?, database?) maintain a navigation tree (ok, 5 or more), mapping menu entries to URIs. Some process then maps these entries to actions. But how? Other ideas coming to my mind: - Create actions on the fly, mapped from the Menu/URI table. Is this possible with Catalyst? AFAIK Catalyst checks all controllers at startup and builds a list of actions only once - at startup... right? - Have one controller per language and write a central dispatcher action, which does nothing more than use the lookup table mapping menus to URIs? To me this has not the right feel, giving up all the nice dispatcher possibilities of Catalyst... - Put the navig tree in a separate view per language. Maintain n different files when the tree changes. Still leaves me with the dispatcher issue. - Maintain the navig tree somehow (XML, SQL) and write a small script which produces the Conntrollers and actions from the data (plus a navig view for each language)? Maybe I am just blind to see a radically different solution to my problem... any takers? Cheers, Ekki _______________________________________________ List: [email protected] Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[email protected]/ Dev site: http://dev.catalyst.perl.org/
