Часть 3 Локализация модуля

14/04/2012 Разработка модуля Joomla 2.5

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

mod_helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" method="upgrade">
		<!-- Названия модуля -->
		<name>mod_helloworld</name> 
 		<!-- Следующие элементы являются не обязательными, 
			информация об авторе, копирайте и т.п. -->
		<creationDate>November 2010</creationDate>
		<author>SomeBody</author>
		<authorEmail>email@example.org</authorEmail>
		<authorUrl>http://www.joomla-code.ru</authorUrl>
		<copyright>Copyright Info</copyright>
		<license>License Info</license>
		<!--  Версия модуля запишется в БД таблица extension -->
        <version>0.0.1</version>
        <!-- Описание, не обязательно, по умолчанию использеуется имя модуля -->
        <description>MOD_HELLOWORLD_XML_DESCRIPTION</description>
 
		<!-- Обратите внимание на атрибут folder, он указывает из
				 какой директории будут копироваться файлы  -->
        <files>
                <filename module="mod_helloworld">mod_helloworld.php</filename>
                <filename>mod_helloworld.xml</filename>
				<filename>index.html</filename>
				<folder>tmpl</folder>
        </files>
		<config>
			<fields name="params">
				<!-- Основные параметры для модуля -->
				<fieldset name="basic">
					<field name="text" type="text"
						label="MOD_HELLOWORLD_TEXT_FIELD_LABEL"
						description="MOD_HELLOWORLD_TEXT_FIELD_DESC" />	
				</fieldset>
				<!-- Дополнительные параметры для модуля -->
				<fieldset name="advanced">
					<field name="layout" type="modulelayout"
						label="JFIELD_ALT_LAYOUT_LABEL"
						description="JFIELD_ALT_MODULE_LAYOUT_DESC" />				
				</fieldset>
			</fields>
		</config>
		<!-- Файлы локализации -->
		<languages folder="language">
			<language tag="ru-RU">ru-RU/ru-RU.mod_helloworld.ini</language>
			<language tag="ru-RU">ru-RU/ru-RU.mod_helloworld.sys.ini</language>
		</languages>		
</extension>

Для локализации соответствующих констант создадим файлы

ru-RU.mod_helloworld.ini

; Helloworld
; Copyright © http://joomla-code.ru
; License GNU/GPL v.2 or later.
; Внимаение: все файлы должны быть сохранены в кодировке UTF-8 (без BOM)

MOD_HELLOWORLD_XML_DESCRIPTION="Описание модуля HELLO WORLD!"
MOD_HELLOWORLD_TEXT_FIELD_LABEL="Текст"
MOD_HELLOWORLD_TEXT_FIELD_DESC="Введите текст, который будет отображаться модулем"
MOD_HELLOWORLD_PARAMETR_LABEL="Ваш текст в параметре модуля  - '%s'"

Так же есть системный файл локализации, в котором можно перевести название модуля и описание.

ru-RU.mod_helloworld.sys.ini

; Helloworld
; Copyright © http://joomla-code.ru
; License GNU/GPL v.2 or later.
; Внимаение: все файлы должны быть сохранены в кодировке UTF-8 (без BOM)

MOD_HELLOWORLD="Название модуля HELLO WORLD"
MOD_HELLOWORLD_XML_DESCRIPTION="Описание модуля HELLO WORLD!"

Для корректного отображения описания модуля после установки, данные файлы нужно сохранять в директории "language", т.е. для русской локализации это будет директория "language/ru-RU".

Для отображения параметра "text" нужно изменить макет модуля

tmpl/default.php

<?php
/**
 * @package     Joomla.Tutorials
 * @subpackage  Module
 * @copyright   (C) 2012 http://jomla-code.ru
 * @license     License GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access.
defined('_JEXEC') or die('(@)|(@)');

echo JText::sprintf('MOD_HELLOWORLD_PARAMETR_LABEL', $params->get('text'));
?>
Вложения:
mod_helloworld_part3.zip[ ] (1016) Загрузок

5 

Комментарии   

 
+1 Guazzo
16.07.2012 16:41
Ну гуд, че)
Все работает. Уроки правильные. Спасибо.
Вот делаю 1 шажки под жумлу кодить.
Ответить
 
 
0 Guazzo
16.07.2012 16:51
Только откуда берется %s эта переменная...если она только в языковом файле заюзана
Ответить
 
 
0 Дмитрий
06.08.2012 11:15
это подстановка sprintf, только переменной text отбъекта params не существует.
Ответить
 
 
+1 Sergey
21.11.2012 22:26
афтар, допиши, что файлы локализации надо кидать в папку /language/ru-RU
а то у новичков опять ничего не получится :)
Ответить
 
 
0 Guazzo
22.11.2012 09:04
Sergey, в установщике же все прописывается,что куда закидывается, руками не надо ничего ставить.
Ответить
 
 
-3 sergey
23.12.2012 19:48
Разрабы уебаны. Нафига менять параметры, все модули под 1.5 теперь приходится переписывать. Было param, теперь надо писать field, вот нафига это надо было делать? Что от этого изменилось, надежность джумлы или что.
Ответить
 
 
-1 HeG
22.01.2013 20:52
sergey, а как же ! А наследить в истории !
Ответить
 
 
-3 IONEX
02.07.2013 03:21
Чем вызвана необходимость создания двух файлов локализации, почему нельзя все уместить в один?
Ответить
 
 
0 Emilie
23.01.2017 09:55
These are truly wonderful ideas in about blogging. You have touched some fastidious factors here.
Any way keep up wrinting.

Feel free to surf to my site :: Chrinstine: http://Yahoo.net/
Ответить
 

Добавить комментарий


Защитный код
Обновить