Как добавить языковой файл в расширение Joomla?

Добавление языкового файла в расширение позволяет в кратчайшие сроки и грамотным способом перевести его на нужный язык.
Перевести можно как внешнюю (front-end) так и внутреннюю часть (back-end), соответственно языковые файлы буду храниться в разных папках:
language/ и administrator/language/.
Рассмотрим как формировать и вызывать языковой файл в расширении, а также небольшой бонус касаемо плагинов.

Как Joomla загружает языковые файлы?

В общем-то не сложно догадаться, что основые дела с языковой поддержкой происходят в файле из библиотек Joomla: libraries\joomla\language\language.php

Подгружаемые языковые файлы самым простым способом можно посмотреть записав все используемые пути к ним в глобальный массив в функции JLanguage::load:

	// ...
	$filename = ( $extension == 'joomla' ) ?  $lang : $lang . '.' . $extension ;
	$filename = $path.DS.$filename.'.ini'; 
	$GLOBALS[filename][] = $filename; // например, где-нибудь тут
	// ...

и соответственно вывести содержимое массива в шаблоне сайта так <?php echo print_r($GLOBALS[filename]); ?>.

Добавление языкового файла в плагин Joomla

  1. Описать наличие языкового файла в xml-файле так:
    	<files>
    		<filename plugin="pagenavtitles">pagenavtitles.php</filename>
    	</files><!-- Обычно это делается после блока files -->
    	<languages>
    		<language tag="ru-RU">ru-RU.plg_content_pagenavtitles.ini</language>
    		<language tag="en-GB">en-GB.plg_content_pagenavtitles.ini</language>
    	</languages>
  2. Наделать языковых файлов, примерно такого содержания для русского перевода:
    # version 1.0.4 2010
    # author wmdn.ru
    # copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
    # license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
     
    # Note : All ini files need to be saved as UTF-8 - No BOM
     
    PREV=Предыдущая
    NEXT=Следующая
  3. Вызвать метод JPlugin::loadLanguage( 'plg_content_pagenavtitles' ); в конструкторе плагина для инициализации языкового файла с переводом.

Перевода плагинов в Joomla (бонус)

Насколько я понял инсталлятор Joomla считает плагины внутренними расширениями поэтому при их установке перемещает языковые файлы в папку administrator/language/, поэтому метод JLanguage::load их не находит в папке language/ при отрисовке результатов работы плагина во front-end. Поэтому в данном случае для поиска загруженных файлов перевода плагинов следует заменить использование JPlugin::loadLanguage( 'plg_content_pagenavtitles' ); на:

	$lang = & JFactory::getLanguage();
	$lang->load('plg_content_pagenavtitles', JPATH_ADMINISTRATOR);


Добавление комментария:

 css.php