0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 1336 Просмотров
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Доброго времени суток.

Пытаюсь добавить поддержку многоязычности в модуль S5 MailChimp Signup - никак не получается.

Вот например часть кода:
Код
	if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
return "Email address is invalid";
}

Как вместо "Email address is invalid" выводить значение константы из языкового файла?

Собственного самого языкового файла там нет и я проделал следующее:

1. Создал файл languages/en-GB/en-GB.mod_s5_mailchimp_signup.ini

2. В mod_s5_mailchimp_signup.xml добавил:
Код
	<languages folder="languages-front">
<language tag="en-GB">mod_s5_mailchimp_signup.ini</language>
    </languages>

3. В en-GB.mod_s5_mailchimp_signup добавил:
Код
MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL="Invalid Email Address"

Потом пытаюсь вывести константу вместо стандартного текста:
Код
	if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['email'])) {
return JText::_('MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL');
}

В результате на сайте отдает название самой константы, вместо его значения из языкового файла   ^-^

Подскажите, что я пропустил или не так сделал  ;D
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

b2z

  • Глобальный модератор
  • 6935
  • 753 / 0
  • Разраблю понемногу
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Включите отладку языков и посмотрите, он подгружается для этого модуля?

Выводится ??MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL??
Это значит, что не может найти файл языка или соответствие в нём?

Сам языковой файл судя по системной отладке вроде подгружается:
Код
**Loaded** : JROOT/language/en-GB/en-GB.mod_s5_mailchimp_signup.ini

Прошу прощения за глупый вопрос, но как Joomla в данном случаи знает путь к файлу языков? Через XML?

Т.е. есть строка
Код
return JText::_('MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL');
А как указать, где должен производиться поиск по константе MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL?

А то ведь в самом модуле изначально нет поддержки многоязычности и текст на английском в оригинале пишется напрямую в коде, а не через константу. И по сути вместо этого текста я просто подставляю константу через JText... правильно ли это?
« Последнее редактирование: 14.04.2016, 15:08:28 от wd »
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

b2z

  • Глобальный модератор
  • 6935
  • 753 / 0
  • Разраблю понемногу

Выводится ??MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL??
Это значит, что не может найти файл языка или соответствие в нём?

Сам языковой файл судя по системной отладке вроде подгружается:
Код
**Loaded** : JROOT/language/en-GB/en-GB.mod_s5_mailchimp_signup.ini

Прошу прощения за глупый вопрос, но как Joomla в данном случаи знает путь к файлу языков? Через XML?

Т.е. есть строка
Код
return JText::_('MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL');
А как указать, где должен производиться поиск по константе MOD_S5_MAILCHIMP_SIGNUP_ERROR_INVALID_EMAIL?

А то ведь в самом модуле изначально нет поддержки многоязычности и текст на английском в оригинале пишется напрямую в коде, а не через константу. И по сути вместо этого текста я просто подставляю константу через JText... правильно ли это?
В XML нужно прописывать, чтобы языковой файл устанавливался вместе с модулем.

А так язык подгружается автоматом в хелпере:
https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/module/helper.php#L182-L186

Судя по отладке, действительно файл загружен. Вот почему не находит строку, это странно.
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
А вот helper.php отсутствует в директории модуля - его в этом случаи нужно подключить? Если да - это сложное дело? :)
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

Taatshi

  • Глобальный модератор
  • 4787
  • 457 / 0
  • Верстаем и немножко кодим. Обращайтесь ;)
языковой файл в кодировке utf-8 без bom?
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
языковой файл в кодировке utf-8 без bom?

Так точно.

Может у кого-то есть возможность поставить этот модуль и попробовать подключить к нему языковой файл?
Сам модуль бесплатный, скачать можно тут.
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Или может есть ещё идеи почему не работает?

Helper.php вообще нужен внутри папки модуля и что значит, если его нет?
Или он по-умолчанию подгружается для всех модулей, даже если внутри такого файла нет?
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

robert

  • Живу я здесь
  • 4254
  • 407 / 15
wd, helper.php не обязателен.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
А может быть из-за того, что всё это подгружается через AJAX?
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Значения, которые хочу перевести находится в файле store-address.php и выводятся без перезагрузки страницы:

Спойлер
[свернуть]

Сообщения 'Success! Check your email to confirm sign up.' , 'Error: ', "Email address is invalid" и "No email address provided" выводятся без перезагрузки страницы (т.е. используется AJAX, если я правильно понимаю). Правда не знаю имеет это значение или нет, потому и спрашиваю :)

Ещё заметил, что там кавычки разные (кавычки в которых выводится текст статуса отправки) - где-то двойные, а где-то одиночные... тоже не знаю имеет ли это значение :)
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

b2z

  • Глобальный модератор
  • 6935
  • 753 / 0
  • Разраблю понемногу
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Ну и причём тут модуль? Всё находится в отдельном файле... Подгрузите язык, как это делает helper модуля.

Так этот файл внутри директории модуля mod_s5_mailchimp_signup/files/store-address.php - это получается не связанный с модулем файл?
helper.php в этом модуле отсутствует... или как можно посмотреть, как это делает helper?
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

Taatshi

  • Глобальный модератор
  • 4787
  • 457 / 0
  • Верстаем и немножко кодим. Обращайтесь ;)
Я, кажется, начинаю понимать. У меня была похожая ситуация.

Сообщения, вписанные в Javascript, стандартному переводу не подлежат - по крайней мере, у меня не получилось. Я в месте подключения скрипта проводила проверку на активный язык и в зависимости от него подключала версии скриптов с вшитым переводом на разные языки.

Как сделать это корректнее пока не придумала.

Здесь не переводится, наверное, потому, что в AJAX проверка на язык не включена. Можно тоже сделать проверку на язык прямо в файле.
« Последнее редактирование: 19.04.2016, 10:46:03 от Taatshi »
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Спасибо всем за помощь и советы.
Taatshi, у меня уже возникала подобная, но более брутальная идея - сделать три сборки модуля для трех языков )
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

b2z

  • Глобальный модератор
  • 6935
  • 753 / 0
  • Разраблю понемногу
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
А разве здесь Javascript? Вроде как PHP.

Код: php
$lang = JFactory::getLanguage();
$lang->load('mod_s5_mailchimp_signup', JPATH_BASE, null, false, true);

О, спасибо! Заработало. Я неправильно писал код из helper...
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Добрый вечер.

Прошу прощения за дилетантство в данном вопросе, но возникла ещё проблема с этим модулем из ряда "мистическая"...

Проблема в том, что значение констант берется только из английского ini файла.
Есть к примеру файл с переводом на немецкий, из отладки видно, что он подключен:
Код
**Geladen** : JROOT/language/de-DE/de-DE.mod_s5_mailchimp_signup.ini
Но на немецкой версии сайта выводится перевод на английском.

Сами языковые файлы проверил - там всё правильно (переводы есть).

Подскажите, пожалуйста, в чём может быть проблема?
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

b2z

  • Глобальный модератор
  • 6935
  • 753 / 0
  • Разраблю понемногу
Видимо по какой-то причине не подхватывает другой язык... Попробуйте так:
Код: php
$lang->load('mod_s5_mailchimp_signup', JPATH_BASE, $lang->getTag(), false, true);
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Видимо по какой-то причине не подхватывает другой язык... Попробуйте так:
Код: php
$lang->load('mod_s5_mailchimp_signup', JPATH_BASE, $lang->getTag(), false, true);

Не помогло... по-прежнему выводит только английский.
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
*

wd

  • Давно я тут
  • 524
  • 17 / 1
  • Просто юзер
Попробовал вот такое решение (получить текущий язык из url) - подглядел у соседей на forum.joomla.org:

Код
	
// load language string definitions in url
$app = JFactory::getApplication('site');
$app->initialise();
$lang = JFactory::getLanguage();
$url = getenv("HTTP_REFERER");
$choice_lg = strpos($url_lg, "/en/");
if ($choice_lg === false) $lg_tag = "de-DE";
else $lg_tag = "en-GB";
$extension = 'mod_s5_mailchimp_signup';
$base_dir = JPATH_SITE;
$lang->load($extension, $base_dir, $lg_tag, true);

Но в этом случаи наоборот - выдает всё время перевод из немецкого файла локализации (даже на английской версии).

Может можно как-то допилить этот код, чтобы он корректно работал для 3 языков (русский, немецкий, итальянский)?
Мощный KVM VDS на SSD от 5$: бесплатные 10$ для теста при регистрации.
Описание и руководство по Joomla 2.5 на портале Joomlauser.ru
Свежие новости, отличные переводы и документация в блоге Joomlablog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не могу добавить язык контента

Автор Delonix

Ответов: 2
Просмотров: 1187
Последний ответ 22.03.2017, 02:29:41
от Delonix
Мультиязычность или модуль в модуле

Автор ipugach

Ответов: 4
Просмотров: 319
Последний ответ 03.01.2017, 23:06:54
от ipugach
Как добавить свой файл ini?

Автор iakovfx

Ответов: 4
Просмотров: 702
Последний ответ 20.12.2015, 05:21:24
от iakovfx
Перенесено: Модуль/плагин перенаправление

Автор b2z

Ответов: 0
Просмотров: 518
Последний ответ 23.07.2015, 13:41:05
от b2z
Как перевести на русский язык модуль JoomlaXTC Deluxe News Pro?

Автор Vas80

Ответов: 4
Просмотров: 1597
Последний ответ 04.02.2015, 10:18:26
от Vas80