Как да направим многоезичен сайт(част 2). Въвеждане в Zend Translate.
В това видео ще поговорим за това как се прави многоезичен сайт посредством rewrite на url-то. Ще направим и въведение в zend translate.

Проекта който показвам в урока можете да изтеглите от тук
Коментирай
 
Потребител : *
Сайт (URL) :
Коментар : *
Въведи текста : *
             ___     ______    __   __            
  ____      / _ \\  |      \\  \ \\/ //     ___   
 |    \\   | / \ || |  --  //   \ ` //     /   || 
 | [] ||   | \_/ || |  --  \\    | ||     | [] || 
 |  __//    \___//  |______//    |_||      \__ || 
 |_|`-`     `---`   `------`     `-`'       -|_|| 
 `-`                                         `-`  
 
преди 8 месеца
Нали за това сме тук, да си помогнем взаимно. Дано е полезно на някого както на мен ми свърши работа :)
преди 8 месеца
Браво супер.

Мерси, че даде решението:)
преди 8 месеца
Извинявай че не ти оставих много време да решиш проблема :P, но намерих решение. С поставянето на следната функция в bootstrap файл-а работи прилично.

protected function _initSetTranslations(){
if(Zend_Auth::getInstance()->hasIdentity()){
$language = Zend_Auth::getInstance()->getStorage()->read()->user_lang;
} else {
$language = 'en';
}
$translate = new Zend_Translate('csv', APPLICATION_PATH . '/resources/language/'. $language . '.csv' , $language);
Zend_Registry::set('Zend_Translate', $translate);
}
преди 8 месеца
Здрасти, за съжаление не съм го тествал този казус, понеже не ползвам navigation в production сайтове.

Може да го пробвам тези дни при многоезичност и ще пиша за резултата:)

Предполагам, че ако впишеш думата от navigation в .ini с преводите ще се преведе. Както става и с валидизациите и label-ите при формите. Но трябва да се тества.
преди 8 месеца
Здравей,
Имам следният въпрос: Когато менюто е организирано със Zend_navigation и текста е в xml файл както беше правил в един урок (който между другото работи супер, вече го тествах, мерси за урока) как трябва да се преведе с този Zend_Translate след като не можеш да добавяш php в xml файла!
<?php echo $this->translate('Alabala'); ?>

Сещам се за вариант с три xml-а според езика да се зарежда съответния, но ми се струва доста дървено да дублираш правата (acl resources) и имена на пътищата само заради Title-a. При някава промяна трябва да ги преправяш в N на брой файла. В крайна сметка нали заради това има Zend_Translate. Има ли начин как да се използва в тоя случай?
Благодаря за отговора!
преди 1 година
И аз също си мислих за този вариант, но не ми остана време да го тествам за което се извинявам:(

Мисля, че е ок и важното е, че работи. Хубаво си го измислил браво:)
Boggy
преди 1 година
Ами общо взето както каза не се получи аз също в началото пробвах, но уви ... В крайна сметка го докарах да работи коректно по следния начин:

$router->addRoute('admin', new Zend_Controller_Router_Route('admin', array('module'=> 'admin', 'controller' => 'index', 'action' => 'index')));

$router->addRoute('admin-controller',
new Zend_Controller_Router_Route('/admin/:controller', array('module' => 'admin', 'controller' => 'index', 'action' => 'index')));

$router->addRoute('admin-controller-action', new Zend_Controller_Router_Route('admin/:controller/:action',array('module' => 'admin')));

Но не съм много сигурен дали е удачно това решение.
преди 1 година
До колкото разбирам имаш 2 модула. Един за сайта и един за админ. Нормално стандартно. Ако вземеш route където е :lang/:module/:controller:/:action и накрая вместо lang да е равно на :ланг, може да сложиш bg. Тоест да не търси параметър.
При положение, че default-а не се пише, при него ще се гледа :controller/:action.

4:30 е и трудно пиша смислено:) Ще ме извиняваш. Утре ще тествам реално за проблема и ще потърся друго решение ако това не става или не ти харесва:)
Boggy
преди 1 година
Здравей, доста полезен урок!
В моя случай имам два модула: default и admin. При default-a всичко е супер. Но при администраторския модул не искам да има опция за езика, т.е. в случая само български да е. От тук идва и проблема, че понеже не подавам префикса за език и хвърля изкльчения. Идея или някаква насока, ако може да ми дадещ.

Благодаря, предварително
преди 1 година
Това нещо:

$router-addRoute(
'blog',
new Zend_Controller_Router_Route('/:lang/blog', array('lang' = ':lang', 'module' = 'blog',
'controller' = 'index', 'action' = 'index')));

url(array('module'='blog','controller' = 'blog', 'action' = 'index',
'lang' = $language)); ?"translate('nav_blog'); ?

може да го замениш с:

$router->addRoute(
'lang-blog',
new Zend_Controller_Router_Route('/:lang/blog', array('lang' => ':lang', 'module' => 'blog',
'controller' => 'index', 'action' => 'index')));

<li><a href="<?php echo $this->url(array('lang' => $language), 'lang-blog'); ?>">blog</a></li>
преди 1 година
Решението е следното. Url представлява обръщение към правилата които пишеме в bootstrap-а(в нашия случай). Което значи, че се ръководиш от тях.

Ако искаш да отидеш в controller само пишеш.

<li><a href="<php echo $this->url(array('lang' => $language, 'controller' => 'projects'), 'lang-controller'); ?>"><?php echo $this->translate('Projects'); ?></a></li>

С това нещо оказваш, че правиш обръщение към lang-controller който приема две стойности. lang и controller:

$router->addRoute(
'lang-controller',
new Zend_Controller_Router_Route('/:lang/:controller', array('lang' => 'bg', 'module' => 'default',
'controller' => 'index', 'action' => 'index')));

По тази логика мисля, че ще можеш да ги направиш и другите.
преди 1 година
Имам малък проблем...
Имам 2 модула - Default и Blog

Към Routes добавих:

// Other stuff
$router-addRoute(
'blog',
new Zend_Controller_Router_Route('/:lang/blog', array('lang' = ':lang', 'module' = 'blog',
'controller' = 'index', 'action' = 'index')));

Навигацията изглежда по този начин:

url(array('controller' = 'index', 'action' = 'index',
'lang' = $language)); ?"translate('nav_home'); ?

url(array('module'='blog','controller' = 'blog', 'action' = 'index',
'lang' = $language)); ?"translate('nav_blog'); ?

И когато отида в site.com/en/blog навигаицята почва да се дъни. И дведте url-та стават "http://method-x.loc/bg/blog".

Останалото работи като пушка... Но това с линковете и модулите нещо не е като хората...
Предложи тема
Предложение от : *
Тема : *
Описание : *