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

wd

  • Давно я тут
  • 539
  • 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
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Включите отладку языков и посмотрите, он подгружается для этого модуля?
*

wd

  • Давно я тут
  • 539
  • 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 »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 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

  • Давно я тут
  • 539
  • 17 / 1
  • Просто юзер
А вот helper.php отсутствует в директории модуля - его в этом случаи нужно подключить? Если да - это сложное дело? :)
*

Taatshi

  • Глобальный модератор
  • 5259
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
языковой файл в кодировке utf-8 без bom?
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

wd

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

Так точно.

Может у кого-то есть возможность поставить этот модуль и попробовать подключить к нему языковой файл?
Сам модуль бесплатный, скачать можно тут.
*

wd

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

Helper.php вообще нужен внутри папки модуля и что значит, если его нет?
Или он по-умолчанию подгружается для всех модулей, даже если внутри такого файла нет?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
wd, helper.php не обязателен.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

wd

  • Давно я тут
  • 539
  • 17 / 1
  • Просто юзер
А может быть из-за того, что всё это подгружается через AJAX?
*

wd

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

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

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

Ещё заметил, что там кавычки разные (кавычки в которых выводится текст статуса отправки) - где-то двойные, а где-то одиночные... тоже не знаю имеет ли это значение :)
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Ну и причём тут модуль? Всё находится в отдельном файле... Подгрузите язык, как это делает helper модуля.
*

wd

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

Так этот файл внутри директории модуля mod_s5_mailchimp_signup/files/store-address.php - это получается не связанный с модулем файл?
helper.php в этом модуле отсутствует... или как можно посмотреть, как это делает helper?
*

Taatshi

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

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

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

Здесь не переводится, наверное, потому, что в AJAX проверка на язык не включена. Можно тоже сделать проверку на язык прямо в файле.
« Последнее редактирование: 19.04.2016, 10:46:03 от Taatshi »
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

wd

  • Давно я тут
  • 539
  • 17 / 1
  • Просто юзер
Спасибо всем за помощь и советы.
Taatshi, у меня уже возникала подобная, но более брутальная идея - сделать три сборки модуля для трех языков )
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
А разве здесь Javascript? Вроде как PHP.

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

wd

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

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

О, спасибо! Заработало. Я неправильно писал код из helper...
*

wd

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

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

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

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

Подскажите, пожалуйста, в чём может быть проблема?
*

b2z

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

wd

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

Не помогло... по-прежнему выводит только английский.
*

wd

  • Давно я тут
  • 539
  • 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 языков (русский, немецкий, итальянский)?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Частично не переводится модуль

Автор fireman

Ответов: 33
Просмотров: 7724
Последний ответ 04.04.2021, 10:37:59
от Akeksandr
Как установить/добавить язык, если его нет в списке Joomla?

Автор rafaello9

Ответов: 5
Просмотров: 11293
Последний ответ 15.05.2020, 13:35:06
от Ilhom666
Какой использовать модуль для меню с картинками?

Автор Евгений1980

Ответов: 7
Просмотров: 3558
Последний ответ 30.03.2020, 18:09:40
от Евгений1980
Отключение многоязычности?

Автор ant

Ответов: 2
Просмотров: 6645
Последний ответ 16.07.2019, 14:51:15
от dron
Как добавить язык если его нет в стандартных?

Автор Dolphin4ik_1

Ответов: 0
Просмотров: 1139
Последний ответ 29.01.2019, 23:14:21
от Dolphin4ik_1