Drupal.t не появляется среди переводов - PullRequest
3 голосов
/ 12 июля 2011

Я пытаюсь сделать перевод на JavaScript на сайте Drupal. Я использую функцию JS Drupal.t(). Кажется, все работает; Загружается Drupal, вызывается функция, заменяются заполнители, но трансляция не происходит. Слова остаются на английском языке, и слова не добавляются в базу данных переводов. Кто-нибудь знает, почему это происходит и как его решить?

Ответы [ 4 ]

2 голосов
/ 11 июня 2012

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

Я заметил, что Drupal.locale.strings не заполняется вызовами JavaScript.

Поэтому я обычно создаю часть кода PHP, которая выполняет эту работу на стороне сервера. Вы можете сделать это где угодно в своем коде PHP. Но лучше всего сделать это в модуле, который вы кодируете. Тогда будет проще экспортировать его с помощью модуля Potx , чтобы вы могли хранить строки в некоторых файлах *.po для последующего использования вашего модуля.

Если вы спешите, вы можете просто сделать это в теле фиктивного узла (просто «предварительный просмотр») с помощью формата ввода PHP :

<?php

print t('Example : %variable', array('%variable' => 'test'));

?>

Как только это будет сделано, вы сможете найти свои строки и перевести их на странице администратора.

Чтобы восстановить файл JavaScript, вам нужно очистить весь кэш (с помощью Devel или посетив страницу modules ).

1 голос
/ 10 августа 2011

Не уверен насчет части javascript, но я часто использовал эту функцию. Если вы хотите, чтобы строки отображались в таблице перевода, вам нужно загрузить соответствующую страницу на двух разных языках, прежде чем она позволит вам перевести их. Надеюсь, это поможет.

0 голосов
/ 22 марта 2012

you Вы сжимаете JS? Проверьте в разделе производительности вашего сайта.

Очистка кэша теперь должна восстановить js с правильными переводами.

0 голосов
/ 21 июля 2011

Функция Drupal.t() очень мала, поэтому я готов поспорить, что мы просто рассмотрим ее здесь.

function (str, args) {
  // Fetch the localized version of the string.
  if (Drupal.locale.strings && Drupal.locale.strings[str]) {
    str = Drupal.locale.strings[str];
  }

  if (args) {
    // Transform arguments before inserting them
    for (var key in args) {
      switch (key.charAt(0)) {
        // Escaped only
        case '@':
          args[key] = Drupal.checkPlain(args[key]);
        break;
        // Pass-through
        case '!':
          break;
        // Escaped and placeholder
        case '%':
        default:
          args[key] = Drupal.theme('placeholder', args[key]);
          break;
      }
      str = str.replace(key, args[key]);
    }
  }
  return str;
}

Итак, вы можете видеть, что она проверяет Drupal.locale.strings, чтобы найти переводимые строки для текущей локали,Можете ли вы открыть консоль на своем сайте в Drupal и набрать Drupal.locale и посмотреть, что из этого получается?

В Drupal, чтобы добавить новый язык, вы должны сначала включить модуль Locale.Вы сделали это?

Далее вам нужно импортировать свой язык через интерфейс перевода в admin / build / translate.Вы сделали это?

Здесь вы видите, что я импортировал французский и немецкий языки: http://grimhappy.com/i/ce75ca.png

...