Категория:
Опубликовано:

Переводимые строки в JS файлах - аналог t()

Drupal Переводимые строки в JS

Есть у Drupal замечательная функция - t(), с помощью которой можно легко выводить переводимые строки.

Все это замечательно работает, но только если мы работаем с серверной частью - в PHP.

Но! Drupal не зря "лучшая" платформа. Конечно же есть инструменты для вывода переводимого текста и из javascript-файлов.

Все очень просто - в js-файлах можно выводить переводимый текст с помощью похожей функции: Drupal.t(str, args)

Где:

  • str - переводимая строка
  • args - набор дополнительных данных

Таким образом, для вывода мультиязычного текста нужно поместить его в функцию:

(function($) {
  Drupal.behaviors.awdCP = {
    attach: function (context, settings) {

      alert(Drupal.t('Translateme'));

    }
  };
})(jQuery);

Или, например, нам нужно перевести строку с переменными:

(function($) {
  Drupal.behaviors.awdCP = {
    attach: function (context, settings) {

      var userName = 'Инокентий';
      alert(Drupal.t('Hello @username', {'@username': userName}'));

    }
  };
})(jQuery);

Все как в старой, доброй t()...

После записи - не забываем почистить кеш. А так же добавить перевод на странице admin/config/regional/translate/translate.

Но это еще не все!

Помните, есть же еще данные с множественными значениями, т.н. Plural.

В API Друпала для неё тоже есть своя функция - format_plural(). Удобная штука. Позволяет выводить значения в правильной форме (например: 1 комментарий, 5 комментариев), но тоже для PHP.

И снова, Drupal все это предвидел для нас. Вывод плюральных значений возможен с помощью функции Drupal.formatPlural:

Drupal.formatPlural(count, singular, plural, args)

Где:

  • count - число (количество)
  • singular - формат в единой форме
  • plural - формат в множественной форме
  • args - дополнительные переменные

Пример:

(function($) {
  Drupal.behaviors.awdCP = {
    attach: function (context, settings) {

      var count= 5;
      alert(Drupal.formatPlural(count, '1 comment', '@count comments'));

    }
  };
})(jQuery);

Или более сложный вариант:

(function($) {
  Drupal.behaviors.awdCP = {
    attach: function (context, settings) {

      var count = 5;
      var groupeName = 'Бейсболл';
      alert(Drupal.formatPlural(count, '1 user in groupe @groupeName', '@count users in groupe @groupeName', {'@groupeName': groupeName}));

    }
  };
})(jQuery);

Вот так выводятся переводимые строки в JS.

Статейка на Drupal.org

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