Языковые расширения в Joomla. Joomla jtext
Работа со строками в joomla! 1.5
В данном примере, мы переведем слово 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! 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.Переменные:- array $strings = array()
- alt - преобразовывает строку в текущем языке.
- string $string - строка для преобразования
- string $alt - альтернативная настройка для глобальной строки
- mixed $jsSafe - Возвращает результат выполнения javascript в безопасном режиме, массив из массива опций, как описано в функции sprintf
- boolean $interpretBackSlashes - для интерпретации слеша (\\ ->\, \n ->возврат корретки, \t -> табуляция)
- boolean $script - указывает, что в строку будет вставлен javascript код.
- plural - тоже самое, что и sprintf, только делает множественную форму
- string $string -формат строки
- integer $n - число пунктов
- mixed 2 - Смешанное число аргументов для функции sprintf, первый аргумент должен быть целым числом
- array 3 - дополнительный массив опций
- printf - прохождение строки через printf
- mixed 1 - смешанное число аргументов для функции sprintf
- format $string - формат строки
- script - преобразует строку в текущем языке и сохраняет его как JavaScript
- string $string - Ключ JText
- $jsSafe
- $interpretBackSlashes
- sprintf - прохождение строки через sprintf
- string $string - формат строки
- mixed 1 - смешанное число аргументов для sprintf
- array 2 - дополнительный массив опций
- _ - преобразование строки в текущем языке
- string $string - строка для преобразования
- mixed $jsSafe - Возвращает результат выполнения javascript в безопасном режиме, массив из массива опций, как описано в функции sprintf
- boolean $interpretBackSlashes - для интерпретации слеша (\\ ->\, \n ->возврат корретки, \t -> табуляция
- boolean $script - указывает, что в строку будет вставлен javascript код
Понравилась статья? Поблагодарить автора:
zloykolobok.blogspot.com
Где меняется в Джумле 2.5 в блоге метериалов...
art-bersiti сказал(а): ↑ Подскажите пожалуйста, в каком файле удалить вывод COM_CONTENT_READ_MORE все глаза просмотрел, не сказать, что новичок сам пишу на php но тут местами нагорожено)Да не написал что делаю, ставлю в материале разделитель, чтоб в блоке вывода категорий выводилась часть статьи, а не полностью. всё получается хорошо, но в сокращённом варианте статьи выводится "подробнее" ссылка на материал она мне вообще не нужна.
Нажмите, чтобы раскрыть...
Смотря какой шаблон редактируется.Вывод краткого содержания материала категории (как раз то, где кнопка "Подробнее"):components/com_content/views/category/tmpl/default-item.phpТо же самое, но на главной странице:/components/com_content/views/featured/tmpl/default-item.php
Код кнопки "Подробнее":
Код (PHP):
<p>
<a href="<?php echo $link; ?>">
<?php
if (!$params->get('access-view')) :
echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
elseif ($readmore = $this->item->alternative_readmore) :
echo $readmore;
if ($params->get('show_readmore_title', 0) != 0) :
echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
endif;
elseif ($params->get('show_readmore_title', 0) == 0) :
echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
else :
echo JText::_('COM_CONTENT_READ_MORE');
echo JHtml::_('string.truncate', ($this->item->title), $params->get('readmore_limit'));
endif;
?>
</a>
</p>
В Joomla легче всего искать элементы с "прошитым" текстом так: копируете слово/фразу, открываете языковой файл (папка languages, дальше в зависимости от языка и нужного расширения) и смотрите какому коду соответствует это слово/фраза. Затем открываете phpDesigner или Dream или что там у вас и ищите по файлам где выводится языковой код.
P.S.: а где, по-вашему, нагорожено то?
joomla-support.ru