1

Тема: Помогите с i18

Доброе время суток. Я перевожу генератор-админку на русский (такая стоит задача от заказчика)
Не могу перевести слова Actions и choose an action  режиме list
Говорят, что надо использовать режим i18,  но много написано, сложно пока понять. Мне надо просто в админке заменить универсально эти два слова. Подскажите, плиз, самое простое решение. Очень надо и буду очень благодарен!

2

Re: Помогите с i18

http://forum.symfony.org.ua/post/4183/#p4183

3

Re: Помогите с i18

для админки словари переводов хранятся в
sfConfig::get(sf_symfony_lib_dir)\plugins\sfDoctrinePlugin\i18n\
sfConfig::get(sf_symfony_lib_dir)\plugins\sfPropelPlugin\i18n\

<?php echo __('Choose an action', array(), 'sf_admin') ?> в _list_batch_actions.php
и
<?php echo __('Actions', array(), 'sf_admin') ?> в _list.php

в словарях sf_admin есть эти переводы, хз почему у вас это не перевелось

4 Отредактировано Ivanovich (2010-01-06 14:47:44)

Re: Помогите с i18

Я сделал:
1.Каталог /backend/i18n/ru
2.Скопировал туда http://www.symfonians.ru/uploads/ru/messages.xml
3.В настройках /apps/backend/config
поставил
.settings:
    i18n:                   on
    default_culture:        ru_RU
4.Почистил куки и кеш

Получился частичный перевод, например в постраничной навигации в админке: 20 results (страница 1/2)  - смесь русского и английского.
Такое ощущение, что система не видит /backend/i18n/ru/messages.xml

5

Re: Помогите с i18

default_culture:        ru

нужно вот так сделать. и почистить кукисы еще default/wink

6

Re: Помогите с i18

default_culture:        ru
ничего не решает
тоже самое что и ru_RU

7 Отредактировано emkill (2010-01-06 22:30:07)

Re: Помогите с i18

я сегодня перевел админку включив i18n: on и default_culture: ru

в дебаг панели глянь Config -> User и проверь culture и default_culture - оба должны быть ru

PS в 1.4 ветке

8 Отредактировано Ivanovich (2010-01-07 00:47:27)

Re: Помогите с i18

Всё заработало, спасибо большое.
А как применить I18N для sfGuardAuth плагина sfDoctrineGuardPlugin? В файле стоит <?php use_helper('I18N') ?>, а какой именно хелпер? в I18N  самой симфы нет таких записей, как echo __("You don't have the required permission to access this page.")
Как быть?

9

Re: Помогите с i18

самому перевести в xliff файле... вбей по поиск по сайту этот формат - найдеш инфу

10 Отредактировано Ivanovich (2010-01-08 10:56:08)

Re: Помогите с i18

Очень помогают Ваши советы. Большое спасибо!
Но вот возникают новые вопросы.
Как мне интернационализировать setLabels форм?
Например
       $this->widgetSchema->setLabels(array(
          'username'   => 'Username',
          'password' => 'Pass' 
      ));

Я пробовал нижеописанными способами, но безуспешно:
1)
/lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardFormSignin.class.php
class sfGuardFormSignin extends BasesfGuardFormSignin
{
  public function configure()
  {
   $this->widgetSchema->setLabels(array(
                   'username'   => __('Username', array(), 'sf_admin')
   ...
или
   $this->widgetSchema->setLabels(array(
                   'username'   => 'Username',

   ...
2)
/apps/backend/i18n/sf_admin.xml
     <trans-unit>
        <source>Username</source>
        <target>Логин</target>
      </trans-unit>

Как правильно интернационализовать формы?

11

Re: Помогите с i18

В общем я разобрался с sfGuardAuth
просто разобрал формы на составляющие и отредактировал \plugins\sfDoctrineGuardPlugin\modules\sfGuardAuth\templates\signinSuccess.php
но как не хочется вмешиваться в код самого плагина

Как можно вывести из плагина в приложения формы sfGuardAuth?

12

Re: Помогите с i18

нифига ты не разобрался.

по поводу "вмешиваться в код самого плагина" ответ прост - plugins\sfGuardPlugin\README строка 140

а интернационализация форм происходит автоматически, без всяких хелперов типа __()

13

Re: Помогите с i18

Для перевода я использую словарь sf_admin.xml, взятого из ядра симфы sf_admin.ru.xml - И там нет таких слов, как "sign in" "Password" - это пришлось самому вписывать. Ну а в самой форме я прописал:
<th><? echo __( 'Username', array(), 'sf_admin' ) ?></th>
<td><?php echo $form['username'] ?></td>

Как лучше решить эту проблему, что бы получить оценку "разобрался"?

14

Re: Помогите с i18

По руссификации плагина и вообще по работе с плагинами - не надо править код в самом плагине. Почему? Потому что плагины периодически обновляются, а правки в ядре плагина - это стена, которую Вы строите сами на пути простого обновления плагина.
Не надо править \plugins\sfDoctrineGuardPlugin\modules\sfGuardAuth\templates\signinSuccess.php. Правильно - скопировать этот код в /apps/frontend/modules/sfGuardAuth/templates/signinSuccess.php - с поправками на название приложения (frontend замените на свое).
И русификацию правильно делать внутри собственного приложения, а не внутри плагина. Есть такая папочка I18n называется - вот туда и помещаем перевод.