Переводы полей в профилях пользователей (патч)

Главные вкладки

Аватар пользователя MarinaMim MarinaMim 18 февраля 2009 в 12:55

Я создаю многоязычный сайт с использованием профилей пользователей. К сожалению, drupal забыл включить поддержку переводов в поля профилей, название категорий, значения в выпадающих списках. Пришлось патчить. Делюсь с общественностью, поскольку найти такой полный патч в интернете не удалось. Я создала issue на drupal.org: http://drupal.org/node/376182

Номера строк даны для drupal 6.8, но похоже, что для предыдущих версий изменения абсолютно аналогичные.

File profile.module

function profile_view_field($user, $field), line 264

         return $browse ? l($field->title, "profile/$field->name") : check_plain($field->title);

->

         return $browse ? l(t($field->title), "profile/$field->name") : check_plain(t($field->title));

function profile_view_profile(&$user), line 312

      $title = ($field->type != 'checkbox') ? check_plain($field->title) : NULL;

->

      $title = ($field->type != 'checkbox') ? check_plain(t($field->title)) : NULL;

function _profile_form_explanation($field), line 334

  $output = $field->explanation;

->

  $output = t($field->explanation);

function profile_form_profile($edit, $user, $category, $register = FALSE), line 352

    $category = $field->category;

->

    $category = t($field->category);
    $field->title = t($field->title);

line 399

            $options[$line] = $line;

->

            $options[$line] = t($line);  

function profile_categories(), line 457

      'title' => $category->category,

->

      'title' => t($category->category),

file profile.pages.inc, function profile_browse(), line 71:

    if ($field->type == 'selection' || $field->type == 'list' || $field->type == 'textfield') {
      $title = strtr(check_plain($field->page), array('%value' => theme('placeholder', $value)));
    }

->

    if ($field->type == 'selection') {
      $title = strtr(check_plain(t($field->page)), array('%value' => theme('placeholder', t($value))));
    }
    else if ($field->type == 'list' || $field->type == 'textfield') {
      $title = strtr(check_plain(t($field->page)), array('%value' => theme('placeholder', $value)));
    }

Комментарии

Аватар пользователя MarinaMim MarinaMim 18 февраля 2009 в 13:56

file profile.module, function profile_view_field($user, $field), line 262

      case 'textfield':
      case 'selection':
        return $browse ? l($value, 'profile/'. $field->name .'/'. $value) : check_plain($value);

->

      case 'textfield':
        return $browse ? l($value, 'profile/'. $field->name .'/'. $value) : check_plain($value);
      case 'selection':
        return $browse ? l(t($value), 'profile/'. $field->name .'/'. $value) : check_plain(t($value));
Аватар пользователя V I R U S V I R U S 22 сентября 2009 в 14:55

А что потом? Создавать *.po файл с переводом или оно будет видеть данные значения при переводе интерфейса в админке? Для 7.х это тоже пойдёт?!