Добавление языкового файла в расширение позволяет в кратчайшие сроки и грамотным способом перевести его на нужный язык.
Перевести можно как внешнюю (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

Описать наличие языкового файла в 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>

 

Наделать языковых файлов, примерно такого содержания для русского перевода:

# 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="Следующая"

 

Вызвать метод 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);

 А точнее вот так.

$lang = JFactory::getLanguage();
$lang->load('plg_content_cardcalculyator', JPATH_ADMINISTRATOR, null, false, false)
        || $lang->load('plg_content_cardcalculyator', JPATH_ADMINISTRATOR, null, true);

Это позволяет подгрузить английский язык в случае отсутствия файлов текущего языка