Языковые расширения в Joomla. Joomla jtext


Работа со строками в joomla! 1.5

Одним из основных преимуществ в Joomla! является встроенная многоязычная поддержка. Язык по-умолчанию выбирается в менеджере локализаций, и может быть переключен залогенным пользователем. Статический класс JText используется для перевода строки на различные языки. JText имеет три метода для перевода строки: _(), sprintf() и printf(). Самый часто используемый метод _(). Этот метод является самым основным, так как он переводит строку.

В данном примере, мы переведем слово Monday (если перевод не найден, то вернется строка Monday):

echo JText::_('Monday'); Метод JText::sprintf() аналогичен PHP-функции sprintf(). Мы передаем одну строку для перевода и любое количество дополнительных параметров, которые нужно включить в перевод строки. Дополнительные параметры переводиться не будут.

В данном примере, если перевод для SAVED_ITEMS является Save %d items. То переводом будет "Сохранено 3 шт".

$value = JText::sprintf('SAVED_ITEMS', 3); Или мы можем использовать метод JText::printf(). Этот метод аналогичен PHP-функции printf(). Этот метод возвращает длину результирующей строки перевода.$length = JText::printf('SAVED_ITEMS', 3); Если мы хотим создать перевод для наших расширений, то нужно создавать ini файлы переводов.

Обработчики UTF-8 строк

Для того чтобы Joomla! в полной мере поддерживать многоязычные требования, Joomla! использует кодировку Unicode или UTF-8 (Unicode Transformation Format-8). Unicode - это набор символов, включающий все известные языки. В Joomla! нам предоставляется статический класс JString; этого класса позволяет нам выполнять большинство из обычных строковых функций только в кодировке UTF-8.

Этот пример показывает, как мы можем использовать JString, чтобы преобразовать строку в верхний регистр. Заметим, что имя метода совпадает с аналогичной php-функцией:

$string = JString::strtoupper($string);
PHP функция JString метод Описание
strpos strpos Находит первое совпадение строки в строке
substr substr Возвращает часть строки
strtolower strtolower Возвращает строку в нижнем регистре
strtoupper strtoupper Возвращает строку в верхнем регистре
strlen strlen Колличество символов в строке
str_ireplace str_ireplace Возвращает строку, в которой все вхождения search (без учета регистра символов) заменены на replace
str_split str_split Разбивает строку в массив по заданному символу
strcasecmp strcasecmp Сравнивает строки
strcspn strcspn Возвращает длину участка в начале строки, не соответствующего маске
stristr stristr Находит первое совпадение строки в строке (нечуствительно к регистру)
strrev strrev Переворачивает строку задом наперед
strspn strspn Находит самый длинный сегмент строки заключенный в заданные символы
substr_replace substr_replace Производит замену символов в строке
ltrim ltrim Удаляет пробелы слевой части строки
rtrim rtrim Удаляет пробелы с правой части строки
trim trim Удаляет пробелы слева и справа
ucfirst ucfirst Переводит первый символ в верхний регистр
ucwords ucwords Переводит первый символ каждого слова в верхний регистр.
transcode Переводит строку из одной кодировки в другую. Требует iconv

jcreator.ru

Языковые расширения в Joomla | AllForJoomla apps

Одной из сильных Joomla называют высокую локализацию. Так, в данный момент CMS поддерживает порядка 68 языков. Преимущества этого понятны всем: пользователи разных стран могут использовать возможности системы, используя при этом свой родной язык.

Для локализации в Joomla применены самые банальные расширения, которые именуют языковыми. Они представляют собой группу файлов, имеющих расширение .ini, и содержат слова и фразы, которые отображаются в административной части сайта. Именно потому интерфейс пользователя можно перевести на несколько десятков языков мира. Давайте разберем, как это осуществляется.

Для того чтобы в браузере отобразился текст, который пользователь вывел на экран, в php применяется команда echo. Давайте разберем это на конкретном примере, допустим на экране входа в систему администратора сайта. Вам покажется, что для того чтобы на экране отобразилось то, что вы видите, в коде имеется нечто вроде echo “Joomla! Administration Login”, позволяющее войти на сайт админу. Но это не так.

Языковые расширения в Joomla

Текст пользовательского интерфейса в Joomla жестко не кодируется, а то бы для каждого языка мира пришлось бы вносить изменения в код программы. Вместо этого кодировке подвергаются ключи, расположенные в файлах языковой поддержки. При этом их значения читаются как текст, но в момент выполнения. А если мы попробуем найти символьную строчку Joomla! Administration Login в файле, предназначенном для языковой поддержки и имеющим расширение .ini, то найдем ее не там, а в файле administrator/language/en-GB.com_Login.ini.

COM_LOGIN_JOOMLA_ADMINISTRATION_LOGIN, т.е. левая часть восьмой строки кода имеет название языкового ключа (так называемого дескриптора). При этом в правой части, которая заключена в кавычки, расположено значение – конкретный текст, отображаемый на экране, если пользователем выбран британский английский язык, имеющий обозначение en-GB.

Как вы поняли, при осуществлении поиска языкового ключа, в файлах php его можно встретить два раза: в файлах administrator/templates/hathor/login.php и в administrator/templates/bluestork/login.php.

Строка кода с командой вывода может быть такой:

.

Значит, вместо команды echo с текстом на английском, можно вывести результат выполнения метода, называемый JText:: _(). Аргументом метода должен быть указан языковой ключ – файл с расширением .ini. Именно так метод JText:: _() осуществляет поиск по параметру заданного языкового ключа в файле, который имеет расширение .ini, а потом возвращает совпадающий текст. Но если поиск по ключу не даст результата, метод осуществляет возвращение самого ключа.

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

allforjoomla.ru

Создание расширения для CMS Joomla 1.7. Класс JText. Часть 7.2

Доброго времени суток. И мы с Вами продолжаем тему создания расширения для CMS Joomla. В данном посте мы продолжим рассматривать классы фреймворка Joomla, которые мы использовали, когда немного изменили представление нашего компонента в админке CMS Joomla “Создание расширения для CMS Joomla 1.7. Часть 7. Дизайн административного (backend) интерфейса.” Так в предыдущей статье мы остановились на классе JHtml). А сегодня поговорим о JText. Ну, что ж вступление есть, давайте приступим...Класс JText - это класс обработки текста, который описан в /joomla/methods.php.Переменные:
  1. array $strings = array()
Строки javascript.Методы:
  1. alt - преобразовывает строку в текущем языке.
string alt(string $string, string $alt, [mixed $jsSafe = false], [boolean $interpretBackSlashes = true], [boolean $script = false])
  1. plural - тоже самое, что и sprintf, только делает множественную форму
string plural (string $string, integer $n, mixed 2, array 3)
  1. printf - прохождение строки через printf
mixed sprintf (format $string, mixed 1)
  1. script - преобразует строку в текущем языке и сохраняет его как JavaScript
void script ([string $string = null], [ $jsSafe = false], [ $interpretBackSlashes = true])
  1. sprintf - прохождение строки через sprintf
string sprintf (string $string, mixed 1, array 2)
  1. _ - преобразование строки в текущем языке
string _(string $string, [mixed $jsSafe = false], [boolean $interpretBackSlashes = true], [boolean $script = false])Выше мы с Вами рассмотрели класс JText фреймворка Joomla. И теперь мы можем приступить к дальнейшему наращиванию функциональности для нашего компонента CMS Joomla. Так, что не пропускайте выхода новых постов на данном блоге, подписавшись на RSS-рассылку. До скорых встреч. И всем удачной разработки проектов на движке Joomla.
Понравилась статья? Поблагодарить автора:

zloykolobok.blogspot.com

Где меняется в Джумле 2.5 в блоге метериалов...

art-bersiti сказал(а): ↑ Подскажите пожалуйста, в каком файле удалить вывод COM_CONTENT_READ_MORE все глаза просмотрел, не сказать, что новичок сам пишу на php но тут местами нагорожено):D

Да не написал что делаю, ставлю в материале разделитель, чтоб в блоке вывода категорий выводилась часть статьи, а не полностью. всё получается хорошо, но в сокращённом варианте статьи выводится "подробнее" ссылка на материал она мне вообще не нужна.

Нажмите, чтобы раскрыть...

Смотря какой шаблон редактируется.Вывод краткого содержания материала категории (как раз то, где кнопка "Подробнее"):components/com_content/views/category/tmpl/default-item.php

То же самое, но на главной странице:/components/com_content/views/featured/tmpl/default-item.php

Код кнопки "Подробнее":

Код (PHP):

  1. <p>

  2.     <a href="<?php echo $link; ?>">

  3.         <?php

  4.         if (!$params->get('access-view')) :

  5.             echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');

  6.         elseif ($readmore = $this->item->alternative_readmore) :

  7.             echo $readmore;

  8.             if ($params->get('show_readmore_title', 0) != 0) :

  9.                 echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));

  10.             endif;

  11.         elseif ($params->get('show_readmore_title', 0) == 0) :

  12.             echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');

  13.         else :

  14.             echo JText::_('COM_CONTENT_READ_MORE');

  15.             echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));

  16.         endif;

  17.         ?>

  18.     </a>

  19. </p>

В Joomla легче всего искать элементы с "прошитым" текстом так: копируете слово/фразу, открываете языковой файл (папка languages, дальше в зависимости от языка и нужного расширения) и смотрите какому коду соответствует это слово/фраза. Затем открываете phpDesigner или Dream или что там у вас и ищите по файлам где выводится языковой код.

P.S.: а где, по-вашему, нагорожено то?

 

joomla-support.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта