Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Перезапись языковых констант (Language Override) Тема решена

У вас есть идея для расширения функциональности phpBB? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Dutch
phpBB 1.4.2
Сообщения: 67
Стаж: 15 лет 4 месяца
Откуда: Kiev
Благодарил (а): 3 раза
Поблагодарили: 2 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Dutch »

Anvar писал(а):А если из админки иметь возможность изменить текст?

Переписал расширение выше, после установки смотреть в "Настройки конференции"//
Введённое значение параметра «Произвольный текст» слишком длинное. Максимальная допустимая длина — 255.

Запостил:

Код: Выделить всё

TERMS_OF_USE_CONTENT:Заходя на конференцию «%1$s» (в дальнейшем «мы», «наш», «%1$s», «%2$s»), вы подтверждаете своё согласие со следующими условиями. Если вы не согласны с ними, пожалуйста, не заходите и не пользуйтесь форумами «%1$s». Мы оставляем за собой право изменять эти правила в любое время и сделаем всё возможное, чтобы уведомить вас об этом, однако с вашей стороны было бы разумным регулярно просматривать этот текст на предмет изменений, так как использование конференции «%1$s» после обновления/исправления условий означает ваше согласие с ними.<br />
	<br />
	Наши форумы работают под управлением программного обеспечения для создания конференций phpBB (в дальнейшем «они», «программное обеспечение phpBB», «www.phpbb.com», «phpBB Limited», «phpBB Teams»), выпущенного по лицензии «<a href="http://opensource.org/licenses/gpl-2.0.php">GNU General Public License  v2</a>» (в дальнейшем «GPL»). Скачать его можно по адресу <a href="https://www.phpbb.com/">www.phpbb.com</a>. Ограничения лицензии GPL для программного обеспечения phpBB строго связаны с организацией и поддержкой интернет-конференций, и phpBB Limited не несёт ответственности за то, что администрация конференций определяет в качестве допустимого содержания и/или поведения в них. За дополнительной информацией о phpBB обращайтесь по адресу <a href="https://www.phpbb.com/">https://www.phpbb.com/</a>.<br />
	<br />
	Вы соглашаетесь не размещать оскорбительных, угрожающих, клеветнических сообщений, порнографических сообщений, призывов к национальной розни и прочих сообщений, которые могут нарушить законы вашей страны, страны, которая предоставляет услуги хостинга для форумов «%1$s» или международное право. Попытки размещения таких сообщений могут привести к вашему немедленному отключению от конференции, при этом ваш провайдер будет поставлен в известность, если мы сочтём это нужным. IP-адреса всех сообщений сохраняются для возможности проведения такой политики. Вы соглашаетесь с тем, что администраторы форумов «%1$s» имеют право удалить, отредактировать, перенести или закрыть любую тему в любое время по своему усмотрению. Как пользователь вы согласны с тем, что введённая вами информация будет храниться в базе данных. Хотя эта информация не будет открыта третьим лицам без вашего разрешения, ни администрация конференции «%1$s», ни phpBB Limited не может быть ответственна за действия хакеров, которые могут привести к несанкционированному доступу к ней.
Немного сократив текст сохранил, но текст не переписался!

Отправлено спустя 7 минут 50 секунд:
LavIgor писал(а): Сделал расширение.
Как использовать:
  • в event/listener.php можно подключать свои языковые файлы и добавлять/модифицировать переменные шаблона;
  • в language/XX/custom.php, где XX - код ISO языкового пакета, можно задавать свои языковые переменные для общих случаев;
  • в language/XX/info_XXX_custom.php, где XXX - acp, mcp или ucp, можно задавать свои языковые переменные для администраторского, модераторского и личного разделов соответственно (требуется для модификации пунктов меню). Если переменные используются не только в меню, потребуется также модификация в файле для общих случаев. Модификация пунктов меню других расширений не гарантируется (зависит от последовательности загрузки языковых файлов движком).
Возможно, не все переменные можно будет отредактировать с помощью расширения, но большинство из них точно можно.
Попробовал заменить правила TERMS_OF_USE_CONTENT (правил в info_ucp_custom.php и в custom.php) ничего не изменилось (кеш так же очистил)!
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 80 раз
Поблагодарили: 292 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Alecto »

возьми расширения LavIgor и посмотри инструкции - все прекрасно получается.
Аватара пользователя
Dutch
phpBB 1.4.2
Сообщения: 67
Стаж: 15 лет 4 месяца
Откуда: Kiev
Благодарил (а): 3 раза
Поблагодарили: 2 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Dutch »

Alecto писал(а): возьми расширения LavIgor и посмотри инструкции - все прекрасно получается.
Разобрался!
Спасибо за прекрасное решение!!!
Аватара пользователя
Dutch
phpBB 1.4.2
Сообщения: 67
Стаж: 15 лет 4 месяца
Откуда: Kiev
Благодарил (а): 3 раза
Поблагодарили: 2 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Dutch »

У меня еще один немного крэйзи-вопрос :)
Я озвучивал его в отдельной теме, но он будет очень близок к переписыванию языковых файлов.

В языке есть так же файлы .txt, например topic_notify.txt

Можно ли его переписать через расширение LavIgor и помимо ссылки на новый ответ дать сам ответ в теле письма?

Что-то в таком духе:

Код: Выделить всё

Subject: Ответ в теме: «{TOPIC_TITLE}»

Здравствуйте, {USERNAME}!

Вы получили это сообщение потому, что следите за темой «{TOPIC_TITLE}» на конференции «{SITENAME}». В этой теме со времени вашего последнего посещения появилось новое сообщение<!-- IF AUTHOR_NAME !== '' -->, оставленное пользователем {AUTHOR_NAME}<!-- ENDIF -->. Новые уведомления не будут приходить, пока вы не просмотрите тему.

Содержание ответа показано ниже:
[ТУТ СООТВЕТСТВЕННО ТЕКСТ СООБЩЕНИЯ]

Если вы хотите просмотреть самое новое сообщение с момента вашего последнего посещения, перейдите по следующей ссылке:
{U_NEWEST_POST}

Если вы хотите просмотреть всю тему, перейдите по следующей ссылке:
{U_TOPIC}

Если вы хотите просмотреть форум, перейдите по следующей ссылке:
{U_FORUM}

Если вы больше не хотите следить за темой, то либо щёлкните по находящейся в ней ссылке «Отписаться от темы», либо перейдите по следующей ссылке:
{U_STOP_WATCHING_TOPIC}

{EMAIL_SIG}
Большое спасибо за помощь!
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Перезапись языковых констант (Language Override)

Сообщение LavIgor »

Dutch писал(а): Можно ли его переписать через расширение LavIgor и помимо ссылки на новый ответ дать сам ответ в теле письма?
Для этого потребуется отдельное расширение.
Сделать его не так сложно.
Если нужных событий в движке нет, то придётся немного подождать.
Аватара пользователя
Dutch
phpBB 1.4.2
Сообщения: 67
Стаж: 15 лет 4 месяца
Откуда: Kiev
Благодарил (а): 3 раза
Поблагодарили: 2 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Dutch »

LavIgor писал(а):
Dutch писал(а): Можно ли его переписать через расширение LavIgor и помимо ссылки на новый ответ дать сам ответ в теле письма?
Для этого потребуется отдельное расширение.
Сделать его не так сложно.
Если нужных событий в движке нет, то придётся немного подождать.
А можно к вам обратиться в личку с этим вопросом?
Я не очень вникал во внутренности новой версии 3.1.х., и не совсем понимаю, что и как :(
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Перезапись языковых констант (Language Override)

Сообщение LavIgor »

Dutch, если я буду делать расширение, то сразу для всех.
Пока что у меня небольшой перерыв в моей работе над ними (и всё равно что-то сделал вчера).
Плюс у нас не принято цитировать полные тексты сообщений. Особенно это касается последних сообщений в темах.
Аватара пользователя
Dutch
phpBB 1.4.2
Сообщения: 67
Стаж: 15 лет 4 месяца
Откуда: Kiev
Благодарил (а): 3 раза
Поблагодарили: 2 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Dutch »

LavIgor писал(а): Dutch, если я буду делать расширение, то сразу для всех.
Пока что у меня небольшой перерыв в моей работе над ними (и всё равно что-то сделал вчера).
Буду вам очень признателен, да и не только я, за такое расширение.
Я ранее создал тему Развернутое уведомление по почте можно там продолжить, дабы не создавать в данной теме уже флуд.
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 14 лет 3 месяца
Откуда: Украина! Харьков
Благодарил (а): 80 раз
Поблагодарили: 292 раза
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Alecto »

LavIgor, такой вопрос, хотелось бы услышать твое мнение...
NW who was here кушает слишком много ресурсов сервера, возникла такая идея: если изменить переменную КТО СЕЙЧАС НА КОНФЕРЕНЦИИ на ПОЛЬЗОВАТЕЛИ ЗА 24 ЧАС и поменять временной интервал с 10мин на 24час, получится очень близкое к расширению NW who was here, только стандартными средствами форума.
или увеличение интервала затянут большее время для создания страницы и я получу тот же вариант по нагрузке, что и с расширением NW who was here?
также можно поставить экст Шредера, который отделяет ботов от пользователей (надо проверить нагрузку) для полного счастья.
информацией об онлайне при таком подходе можно пренебречь.
что скажешь? если идея рабочая, можно пример, как этим экстом модифицировать переменную WHO_IS_ONLINE?
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Перезапись языковых констант (Language Override)

Сообщение LavIgor »

Alecto писал(а): как этим экстом модифицировать переменную WHO_IS_ONLINE?
Поиск говорит, что эта переменная также используется в заголовке страницы "Кто сейчас на конференции".
Т.е. для модификации ссылок достаточно обычного подхода, для заголовка придётся добавить в слушатель расширения новую функцию (пока придумал только такое решение) и свойство.

Код: Выделить всё

    protected $page_title;
    /* ... */
    static public function getSubscribedEvents()
    {
        return array(
            'core.page_header'        => 'get_page_title',
            'core.page_footer_after'    => 'change_language_variables',
            'core.adm_page_footer'        => 'change_language_variables',
        );
    }

    public function get_page_title($event)
    {
        $this->page_title = $event['page_title'];
    }

    public function change_language_variables($event)
    {
        $old_online_text = $this->user->lang['WHO_IS_ONLINE'];

        /* Add custom language file. */
        $this->user->add_lang_ext('lavigor/customlanguage', 'custom');

        /* Change template variables. */
        $this->template->assign_vars(array(
            /* Your variables go here. */
            'EXT_CUSTOM_LANGUAGE'    => true,
        ));

        if ($this->page_title == $old_online_text)
        {
            $this->template->assign_var('PAGE_TITLE', $this->user->lang['WHO_IS_ONLINE']);
        }
    } 
Решение муторное и ресурсоёмкое.
Но я пока не знаю, возможно ли из объекта шаблона доставать переменные в php (добавлять-то можно, а вот метод обратного получения мною не был найден).

Я видел это сообщение раньше, прошу прощения за задержку ответа.
Anvar
Former team member
Сообщения: 1965
Стаж: 14 лет
Благодарил (а): 67 раз
Поблагодарили: 799 раз
Контактная информация:

Re: Перезапись языковых констант (Language Override)

Сообщение Anvar »

LavIgor писал(а): возможно ли из объекта шаблона доставать переменные в php
Можно посмотреть что доступно:

Код: Выделить всё

$context = $phpbb_container->get('template_context');
$tpldata = $context->get_data_ref();

var_dump($tpldata['.'][0]);
И в случае необходимости отредактировать и заменить или добавить:

Код: Выделить всё

$tpldata['.'][0]['L_WHO_IS_ONLINE'] = 'Новый текст';
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Перезапись языковых констант (Language Override)

Сообщение LavIgor »

Anvar писал(а): Можно посмотреть что доступно
Ок, спасибо.
Но это не отменяет проверки title, поэтому предыдущее решение также имеет место быть.
Семиотик
phpBB 1.4.0
Сообщения: 39
Стаж: 12 лет 8 месяцев
Благодарил (а): 7 раз
Поблагодарили: 2 раза

Re: Перезапись языковых констант (Language Override)

Сообщение Семиотик »

LavIgor писал(а): 03.09.2015 20:07Сделал расширение
Для версии 3.2.x оно подходит?
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 9 лет 11 месяцев
Благодарил (а): 41 раз
Поблагодарили: 932 раза

Re: Перезапись языковых констант (Language Override)

Сообщение LavIgor »

Семиотик, это всё равно заготовка, которую нужно править под свои нужды. Подходит.
Ответить

Вернуться в «Запросы расширений для phpBB»