/
  • Zend_Translate

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی Zend_Translate
    نویسنده پیام
    scorpion آفلاین
    رضا حقیقی
    ***

    ارسال‌ها: 245
    تاریخ عضویت: ۱۳۸۷ بهمن ۲۷
    اعتبار: 3
    تشکرها : 94
    ( 276 تشکر در 144 ارسال )
    ارسال: #1
    Zend_Translate
    سلام دوستان
    من برای چند زبانه کردن سایت از این روش رفتم:
    یه پلاگین:
    کد PHP:
    class Cytech_Controller_Plugin_LangSelector
    extends Zend_Controller_Plugin_Abstract
    {
        public function 
    preDispatch(Zend_Controller_Request_Abstract $request)
        {
            
    $config = new Zend_Config_Ini(APPLICATION_PATH'/configs/application.ini''production');

            
    $lang $request->getParam('lang','');
            if(
    strtolower($lang)!== 'en' && strtolower($lang)!== 'fa')
            {
               
    $lang $config->general->defaultLang;
               
    $lang $request->setParam('lang',$lang);
            }
            
    $lang $request->getParam('lang');
            if(
    $lang =='fa')
            {
                
    $locale 'fa_IR';
            }
            else
            {
                
    $locale 'en_US';
            }
            
    $zl = new Zend_Locale();
            
    $zl->setLocale($locale);
            
    Zend_Registry::set('Zend_Locale'$zl);

            
    $translate = new Zend_Translate('csv'APPLICATION_PATH.'/configs/lang/'.$lang.'.csv',$lang);
            
    Zend_Registry::set('Zend_Translate'$translate);

        }



    و در bootstrap:

    کد PHP:
    protected function _initRoutes()
        {
            
    $frontController Zend_Controller_Front::getInstance();
            
    $router $frontController->getRouter();
            
    $router-> removeDefaultRoutes();
            
    $router->addRoute(
                    
    'langmodule',
                    new 
    Zend_Controller_Router_Route('/:lang/:module/:controller/:action/*',
                    array(
    'lang'=>'fa',
                            
    'controller'=>'index',
                            
    'module'=>'default',
                            
    'action'=>'index'))
            );

        } 

    حالا میخوام به جای اینکه در bootstarp همه رو فارسی کنه به صورت پیشفرض ببینه مقدار set شده چیه و همونو ست کنه.
    راه حل خوب چیه؟
    __________________________________________________________________________
    رضا حقیقی / Reza Haghighi
    ۱۳۸۸ اسفند ۶ ۰۳:۲۱ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #2
    RE: Zend_Translate
    کد PHP:
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
        {
            
    $locale = new Zend_Locale();
            
    $options = array('scan' => Zend_Translate::LOCALE_FILENAME);
            
    $translate = new Zend_Translate('gettext'Zend_Registry::get('siteRootDir') . '/application/languages/''auto'$options);
            
    $requestParams $this->getRequest()->getParams();
            
    $language = (isset($requestParams['language'])) ? $requestParams['language'] : false;
                    if (
    $language == false) {
                         
    $language = ($translate->isAvailable($locale->getLanguage())) ? $locale->getLanguage() : 'en';
                    }
            if (!
    $translate->isAvailable($language)) {
                throw new 
    Zend_Controller_Action_Exception('This page dont exist',404);
            } else {
           
    $locale->setLocale($language);
                
    $translate->setLocale($locale);
                
    Zend_Form::setDefaultTranslator($translate);
                
    setcookie('lang'$locale->getLanguage(), null'/');
                
    Zend_Registry::set('Zend_Locale'$locale);
                
    Zend_Registry::set('Zend_Translate'$translate);
            }
        } 
    (آخرین ویرایش در این ارسال: ۱۳۸۸ اسفند ۶ ۰۳:۳۶ عصر، توسط admin.)
    ۱۳۸۸ اسفند ۶ ۰۳:۳۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : scorpion
    scorpion آفلاین
    رضا حقیقی
    ***

    ارسال‌ها: 245
    تاریخ عضویت: ۱۳۸۷ بهمن ۲۷
    اعتبار: 3
    تشکرها : 94
    ( 276 تشکر در 144 ارسال )
    ارسال: #3
    RE: Zend_Translate
    باید این کد رو جایگزین preDispatch‌ تو پلاگین کنم؟
    __________________________________________________________________________
    رضا حقیقی / Reza Haghighi
    ۱۳۸۸ اسفند ۶ ۰۴:۱۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,734
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6196 تشکر در 3438 ارسال )
    ارسال: #4
    RE: Zend_Translate
    آره
    ۱۳۸۸ اسفند ۶ ۰۴:۲۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : scorpion
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS