Search code examples
zend-frameworkviewtranslate

Zend Framework and switching view script paths


I have a problem. Basically, depending on whether a user goes to /es or /br or /cn etc on our website, we have different language template files. So far, we were using a custom templating engine to make this work, but are making a switch over to ZF. I can't seem to figure out how to get ZF to look for a view script in say cn/about-us if the language varuable is cn.

I can't (don't want to) use Zend_Translate for this because we have way too many translated template files and it's just not feasible using Zend_Translate for bazillion different files with multi-paragraphs of Chinese/Korean/Japanese, forgetting for a second that I don't speak those languages.

Can anybody help me?


Solution

  • You can write a controller plugin and use it's routeStartup() method to alter Zend_View settings (path to where your view scripts are located) and change the request uri before routing starts.

    class My_Controller_Plugin_LanguageSwitcher extends Zend_Controller_Plugin_Abstract
    {
        public function routeStartup(Zend_Controller_Request_Abstract $request)
        {
            // examine the $_SERVER['REQUEST_URI'] and look for your language identifier
            // fetch the View and set appropriate view scripts path using setScriptPath() method
            // strip the language identifier from your REQUEST_URI
            // change the request uri using $request->setRequestUri('your-new-uri-without-the-language-  identifier');
        }
    }