В 5.* работало, а в 6.* - черные ромбики.

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

Аватар пользователя eShKa eShKa 6 октября 2009 в 12:55

Проблема в общем вот в чем, перешел с 5-ки на 6-ку и решил перенести кусок кода, все встало кроме отображения рууского текста в пхп, вот код

function salamander_user_bar() {
  global $user;
  $output = '';
                    if (!$user->uid) {
    $output .= drupal_get_form('user_login_block');
  }
  else {
    $output .= t('<p class="user-info"> Привет !user, рад видеть тебя!</p>', array('!user' => theme('username', $user)));
              $output .= theme('item_list', array(
      l(t('Ваш аккаунт'), 'user/'.$user->uid, array('title' => t('Редактировать аккаунт'))),
      l(t('Выход'), 'logout')));
  }
  $output = '<div id="user-bar">'.$output.'</div>';
         return $output;
}

А нас странице вместо Привет !user, рад видеть тебя! отображаются черные ромбики со знаком вопроса, !user отображается корректно.

Вопрос что делать?

Комментарии

Аватар пользователя Stutzer Stutzer 6 октября 2009 в 13:17

Если я не ошибаюсь, в коде не должно быть ничего, кроме латиницы, которая потом переводится на нужный язык с помощью модуля Locale.
Т.е. писать t('Выход') не есть хорошо. Во-первых, зачем t(), если текст уже на русском. Во-вторых, как минимум, исходник должен быть в кодировке UTF-8, чтобы это работало.

Аватар пользователя glu2006 glu2006 6 октября 2009 в 13:28

Для того чтоб что-то и куда-то сувать, а Вашем случае это именно так. Надо знать что и куда и главное зачем. Вы же не пишите к примеру

<?php
if($i неравно $j) {

}

?>

потому что слово "неравно" не используется по синтаксису оператора foreach а с чего вы взяли что в функцию t() можно сувать кирилицу???
Я еще удивляюсь как это в 5-ке работало.
Предназначение функции t() - файл common.inc со строки 695 и до начала функции.

Аватар пользователя andriy.olischuk andriy.olischuk 6 октября 2009 в 14:05

в t() кириллицу писать не надо.
А ромбики оттого, что файл не в UTF. Нужно средствами IDE (редактора кода, или блокнота) сохранить в кодировке UTF-8.