t () не печатает переведенную строку - PullRequest
0 голосов
/ 16 ноября 2010

Я сейчас пытаюсь сделать модуль переводимым, используя t () для всех Hard-Codes-Strings. Так как я просто вызываю t (), как рекомендовано в документации, я понятия не имею, что я могу делать неправильно. Я звоню в block_theme моего модуля.

Hook_theme ();

Не, если это важно ...

/* # Themes {{{*/
function catchy_overview_theme() {
  return array(
    'catchy_overview_block' => array(
      'template' => 'catchy_overview_block',
      'arguments' => array('nodes' => null, 'terms' => null, 'imagecache_preset' => imagecache_preset(variable_get("catchy_overview_imagecache_preset", null)))
    )
  );
}/*}}}*/

catchy_overview_block.tpl.php

<?php
/*
 * Catchy Overview Block Template
 *
 * Defined Vars:
 * $nodes All collected nodes grouped by tid
 * $terms Taxonomy-Array-Map tid => Name
 * $imagecache_preset The configured imagecache preset.
 */
?>
<ul class="catchy-overview">
  <?php foreach ($nodes as $key => $value) { ?>
    <li class="term term-<?php print $key?>">
      <h2><?php print t( $terms[$key] ) ?></h2>
      <ul>
        <?php foreach ($value as $node) { ?>
          <li class="node node-<?php print $node->nid ?>">
            <?php
              $image = theme_imagecache($imagecache_preset['presetname'], $node->field_photo[0]["filepath"], $node->title, $node->title);
              print l($image . "<span>" . $node->title . "</span>", 'node/'.$node->nid, array('html' => true));
            ?>
          </li>
        <?php } ?>
      </ul>
    </li>
  <?php } ?>
</ul>

Термин, подлежащий переводу и печати, находится в пределах <h2>, который является термином таксономии, который я получаю с помощью SQL-запроса:

  $terms_result = db_query("
    SELECT tid, name
    FROM {term_data}
    WHERE vid = '".variable_get('catchy_overview_vocabulary_id', false)."'
  ");

Я действительно надеюсь, что вы поможете мне. Если вам нужна дополнительная информация, не стесняйтесь комментировать ... Я сейчас в замешательстве.

Ответы [ 4 ]

2 голосов
/ 16 ноября 2010

Вы не можете передавать переменные в качестве параметров в функцию t (), это должна быть фактическая строка на основе кода.

Вы можете перейти сюда: API функции Drupal t () , чтобы узнать больше, но, насколько я знаю, это просто невозможно. Вам нужно будет найти какой-то другой способ перевода ключей. Может быть, составить собственную таблицу отношений и перевести их самостоятельно.

0 голосов
/ 18 марта 2016

обратите внимание, что переведенная страница должна быть посещена до появления строки под t ('string') в интерфейсе перевода

0 голосов
/ 06 мая 2014

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

Если t () не работает, попробуйте выйти из системы и посмотреть, будет ли он работать?

Если вы вошли в систему как администратор, для которого установлен английский язык, то есть для языка установлен язык, и если обнаружение языка отдает приоритет настройке пользователя, может случиться так, что даже если страница находится на каком-либо другом языке из-за языка пользователя, обнаружен английский.

0 голосов
/ 17 ноября 2010

Я склонен подозревать, что у вас не включен модуль Locale, не включено более одного языка или не введен фактический перевод для слова.

...