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

[dev] Quick Language

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

[dev] Quick Language

Сообщение Алг »

Расширение для 3.1 позволяет быстро изменить язык конференции:
В шапку форума ( файл overall_header.html ) добавляется блок с иконками флагов для всех установленных на конференции языков
screen_quicklanguage.png
- Нажатие на иконку флага меняет язык конференции. Для зарегистрированного пользователя новое значение сохраняется в таблице юзеров ( аналогично изменению настроек через личный раздел), для гостя значение сохраняется в куках конференции
- в панели администратора можно задать отображение иконок гостям и отображение иконки английского языка. Для форумов, в которых не участвуют англоязычные посетители ( например, для российско-украинских), рекомендуется отключать появление флага иконки переклюения на английский
- в панели администратора можно включить опцию перевода отдельных постов. На странице настроек расширения есть ссылка Получить API-ключ. Полученный ключ нужно ввести в текстовое поле для получени возможности перевода отдельных постов или выделенного в отдельном текста в посте на выбранный вами язык

Скрытые возможности ("пасхальное яйцо") расширения

Админ, для тех названий категорий/форумов, которые он хочет видеть на разных языках, добавляет в свой языковой файл строки по принципу

FORUM_NAME_N, где N - айди форума/категории FORUM_DESC_N, где N - айди форума/категории Следующие строки переопределяют некоторые обшие текстовые значения конференции SITENAME_NAME - SITENAME
SITE_DESCRIPTION_NAME - SITE_DESCRIPTION
SITE_HOME_NAME- SITE_HOME
INDEXPAGE_NAME_NAME - INDEXPAGE

Расширение проверит, есть ли соответствующая языковая переменная, если есть, то выведет её в качестве названия, если нет, название останется стандартным, как было записано в базе( то же самое относится и к описанию форума/категории)

Репозиторий: https://github.com/alg5/quicklanguage
Инсталляция:
Скопируйте всё содержимое репозитория в папку ext/alg/quicklanguage/
Перейдите в Панель администратора: АСР-> Персонализация-> Управление расширениями
Включите расширение "Quick Language"
П.с. Иконки флагов должны быть картинками 16Х16 пикселей типа ".png" и располагаться в папке /ext/alg/quicklanguage/styles/all/theme/images/flags
полный список всех флагов можно скачать с сайта http://www.gosquared.com/download/pixels/flags.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Алг 28.02.2022 13:45, всего редактировалось 2 раза.
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

rogala писал(а): попробую Ваше расширение без profileSideSwitcher. Что делать мне надо это расширение?
Во-первых, это пока подозреваемый экст, а не виновный
Во-вторых, попробуйте добавить папку uk в profileSideSwitcher/styles/prosilver/theme. Там находятся папки с картинками для русского и английского языков. Скопируйте любую и измените название на uk
В третьих, если это поможет, то экст profileSideSwitcher потребует некоторой доработки
rogala писал(а): что сейчас можно менять хаком название Категории и Форум?
да, названия и описания их можно менять
rogala писал(а): Для обычной ссылки это было бы так
КОД: ВЫДЕЛИТЬ ВСЁ
.lang:active
{
    opacity:1.0;
    filter:alpha(opacity=100);
}
но здесь это не работает.
здесь все работает самым обычным образом. Что такое по-вашему .lang:active ?
есть класс, называется .lang_selected, в него и добавьте Ваш стиль
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Алг писал(а): Во-вторых, попробуйте добавить папку uk в profileSideSwitcher/styles/prosilver/theme. Там находятся папки с картинками для русского и английского языков. Скопируйте любую и измените название на uk
Всегда делаю папки en ru uk сразу в папке /ext/../../language для каждого расширения, а вот дал маху в стиле тоже ведь есть папки языковые, завтра попробую спасибо.
Алг писал(а): Что такое по-вашему .lang:active ?
Не знаю я не программист и не кодер, нашел в инете так вроде для активированной ссылки параметры задаются. А код попробую еще раз спасибо.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

rogala писал(а): так вроде для активированной ссылки параметры задаются
ключевое слово - для ссылки. А Вы пытались применть к классу
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Еще раз спасибо, css поменял теперь все красиво, папку uk для profileSideSwitcher/styles/prosilver/theme тоже добавил пока полет нормальный.

Отправлено спустя 8 минут 28 секунд:
Снимок.PNG
теперь видно какой активный, правда я иконки 32х32 сделал, на маленьких не особо заметно

Отправлено спустя 6 минут 30 секунд:
По пристаю еще немного, вот эту часть можно также будет менять, есть планы для ее реализации?
1.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

Пока не было, но, если добавлять названия групп, то почему бы заодно и не :)
В планах у меня стоит добавить ссылку "перевести" под каждым постом, как например в ю-тубе в комментариях
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

rogala, а где конкретно вас интересуют названия групп? Имхо, только внизу страницы, там где "кто онлайн", но там и так берутся из языковых переменных, в остальных случаях это чисто служебная информация
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Стандартные меняются без проблем, а созданные самостоятельно нет, они сразу пишутся в базу как есть, на ru или uk кто как пишет.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

так мой вопрос был: где, на каком экране, в каком, конкретно, месте вы хотите видеть переведённые названия кастомных групп?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Да в любом месте, в списке пользователей в списке команды в профиле, это надо менять глобально.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

rogala писал(а): это надо менять глобально.
к сожалению тут менять можно только локально, для глобальной замены нужен механизм хранения в БД, а это лишняя нагрузка на форум
rogala писал(а): в списке пользователей в списке команды в профиле,
эти страницы просматриваются весьма редко, не думаю, что следует заниматься переводами групп( а рядом ещё и звания, их тоже попросят)... короче, в ближайшее время я этим заниматься не буду, только в большой перспективе при наличии свободного времени, а вот перевод названия и описание конференции и сайта - это да, нужно
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Буду ждать Ваших обновлений расширения, уж Бог с ними с группами, пока потерпит и так.
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Что то не работает у меня описание если FORUM_NAME_15 то и FORUM_DESC_15 тот же номер имеет или я туплю?
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Сделал 5 изменений в файле listener.php строки 217, 219, 232, 234, 249 и тогда заработало, под спойлером мой вариант
listener.php 

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

<?php

/**
*
* @package quicklanguage
* @copyright (c) 2014 Alg
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

namespace alg\quicklanguage\event;

/**
 * @ignore
 */
//if (!defined('IN_PHPBB'))
//{
//	exit;
//}

use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class listener implements EventSubscriberInterface
{

	const OK= 0;
	const QUICK_LANG_NO = 1;
	const QUICK_LANG_EN_DISABLE = 2;

	/** @var \phpbb\config\config */
	protected $config;

	/** @var \phpbb\db\driver\driver_interface */
	protected $db;

	/** @var \phpbb\request\request_interface */
	protected $request;

	/** @var \phpbb\template\template */
	protected $template;

	/** @var \phpbb\user */
	protected $user;

	/** @var string phpBB root path */
	protected $root_path;

	/** @var string PHP extension */
	protected $php_ext;

	protected $allow_guests;
	protected $is_english_show;
	protected $error;

	public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\request\request_interface $request, \phpbb\template\template $template, \phpbb\user $user, $root_path, $php_ext)
	{
		$this->config = $config;
		$this->db = $db;
		$this->request = $request;
		$this->template = $template;
		$this->user = $user;
		$this->root_path = $root_path;
		$this->php_ext = $php_ext;

		//Setup the common settings
		$this->allow_guests = isset($config['quicklanguage_allow_guests']) ? (bool) $config['quicklanguage_allow_guests'] : true;
		$this->is_english_show = isset($config['quicklanguage_is_english_show']) ? (bool) $config['quicklanguage_is_english_show'] : true;
		$this->error = listener::OK;
	}

	static public function getSubscribedEvents()
	{
		return array(
			'core.user_setup'			=> 'user_setup',
			'core.page_header_after'=> 'page_header_after',
			'core.display_forums_modify_template_vars'		=> 'display_forums_modify_template_vars',
			'core.display_forums_modify_category_template_vars'		=> 'display_forums_modify_category_template_vars',
			'core.viewforum_get_topic_data'=> 'viewforum_get_topic_data',
		);
	}

	public function user_setup($event)
	{
		$this->quick_language_enable = false;

		//get all installed languages
		$sql = "SELECT * FROM " . LANG_TABLE;
		$result = $this->db->sql_query($sql);
		$counter = 0;
		$this->lang_info = array();
		while ($row = $this->db->sql_fetchrow($result))
		{
				$this->lang_info[] = $row;
				if (!($row['lang_iso'] == 'en' && !$this->is_english_show))
				{
					$counter++;
				}
		}
		$this->db->sql_freeresult($result);

		if ($counter < 2 || $event['user_data']['is_bot'] || ( $event['user_data']['user_id'] == ANONYMOUS && !$this->allow_guests))
		{
			//do nothing
			$this->quick_language_enable = false;
			return;
		}
		$this->quick_language_enable = true;
		$this->current_lang = $event['user_data']['is_registered'] ?  $event['user_lang_name'] :  $this->request_cookie('quicklang', $this->config['default_lang'] );
		$submit = (isset($_POST['h_lang'])) ? true : false;
		if (!$submit)
		{
			if ($event['user_data']['is_registered'])
			{
				return;
			}
			else	 //user is guest
			{
				if ($this->current_lang != $this->config['default_lang'])
				{
					$event['user_lang_name'] = $this->current_lang;
				}
				return;
			}

		}
		$new_lang = basename($this->request->variable('h_lang', $this->current_lang ));
		//validate user data
		$res = $this->get_iso($new_lang);
		$this->new_lang = $new_lang;
		if ($res == '')
		{
			$this->error = listener::QUICK_LANG_NO;
			return;
		}
		if ($res == 'en' && !$this->is_english_show)
		{
			$this->error = listener::QUICK_LANG_EN_DISABLE;
			return;
		}

		//registered user
		if ( $event['user_data']['is_registered'])
		{
			if ($new_lang != $event['user_data']['user_lang'])
			{
				//change user lang preference
				$sql = "UPDATE "  . USERS_TABLE . " SET user_lang = '" . $new_lang . "' WHERE user_id=" . (int) $event['user_data']['user_id'];
				$this->db->sql_query($sql);
				$event['user_lang_name'] = $new_lang;
				$this->current_lang = $new_lang;
				return;
			}
		}
		// guest (not bot)
		if ( $event['user_data']['user_id'] == ANONYMOUS)
		{
			if ($new_lang != $this->current_lang)
			{
				//change guest lang preference
				$this->user->set_cookie('quicklang', $new_lang, 0);
				$event['user_lang_name'] = $new_lang;
				$this->current_lang = $new_lang;
			}
		}
	}

	public function page_header_after($event)
	{
		if (!$this->quick_language_enable)
		{
			return;
		}
		$this->user->add_lang_ext('alg/quicklanguage', 'quicklanguage');
		$url_back = build_url();

		$this->template->assign_vars(array(
			'U_QUICK_LANG_ACTION'	=>  $url_back,
			'S_QUICK_LANGUAGE_ENABLE'	=> (bool) $this->quick_language_enable,
			'S_CURRENT_LANG'	=>	$this->current_lang,
			));

		foreach ($this->lang_info as $row)
		{
			if (!($row['lang_iso'] == 'en' && !$this->is_english_show))
			{
				$this->template->assign_block_vars('langs', array (
				'LANG_ID'		=> $row['lang_id'],
				'LANG_ISO'		=> $row['lang_iso'],
				'LANG_LOCAL_NAME'		=> censor_text($row['lang_local_name']),
				'S_SELECTED_LANG'	=>	$this->current_lang == $row['lang_iso'],
				));
			}
		}
		//todo
		$redirect = append_sid("{$this->root_path}" . $url_back, "");

		if ($this->error == listener::QUICK_LANG_NO)
		{
			meta_refresh (5, $url_back);
			trigger_error(sprintf($this->user->lang['QUICK_LANG_NO'], $this->new_lang) . '<br /><br /><a href="'. $redirect .  '">' .  $this->user->lang['BACK_TO_PREV'] . '</a>');
		}
		if ($this->error == listener::QUICK_LANG_EN_DISABLE)
		{
			meta_refresh (5, $url_back);
		}

	}

	public function display_forums_modify_template_vars($event)
	{
		$this->user->add_lang_ext('alg/quicklanguage', 'quicklanguage');
		$forum_row = $event['forum_row'];
		if (isset($this->user->lang['FORUM_NAME_' . $forum_row['FORUM_ID']]))
		{
			$forum_row['FORUM_NAME'] = $this->user->lang['FORUM_NAME_' . $forum_row['FORUM_ID']];
		}
		if (isset($this->user->lang['FORUM_DESC_' . $forum_row['FORUM_ID']]))
		{
			$forum_row['FORUM_DESC'] = $this->user->lang['FORUM_DESC_' . $forum_row['FORUM_ID']];
		}
		$event['forum_row'] = $forum_row;
	}

	public function display_forums_modify_category_template_vars($event)
	{
		$this->user->add_lang_ext('alg/quicklanguage', 'quicklanguage');
		$cat_row = $event['cat_row'];
		if (isset($this->user->lang['FORUM_NAME_' . $cat_row['FORUM_ID']]))
		{
			$cat_row['FORUM_NAME'] = $this->user->lang['FORUM_NAME_' . $cat_row['FORUM_ID']];
		}
		if (isset($this->user->lang['FORUM_DESC_' . $cat_row['FORUM_ID']]))
		{
			$cat_row['FORUM_DESC'] = $this->user->lang['FORUM_DESC_' . $cat_row['FORUM_ID']];
		}
		$event['cat_row'] = $cat_row;
}

	public function viewforum_get_topic_data($event)
	{
		$forum_data = $event['forum_data'];
		$forum_name = $forum_data['forum_name'];
		$forum_desc = $forum_data['forum_desc'];
		$forum_id = $forum_data['forum_id'];
		if (isset($this->user->lang['FORUM_NAME_' .  $forum_data['forum_id']]))
		{
			$forum_name = $this->user->lang['FORUM_NAME_' . $forum_id];
		}
		if (isset($this->user->lang['FORUM_DESC_' . $forum_id]))
		{
			$forum_desc = $this->user->lang['FORUM_DESC_' .$forum_id];
		}
		$this->template->assign_vars(array(
					'FORUM_NAME'	=> $forum_name,
					'FORUM_DESC'	=> $forum_desc,
				));
	}

	public function request_cookie($name, $default = null)
	{
		$name = $this->config['cookie_name'] . '_' . $name;
		return $this->request->variable($name, $default, false, 3);
	}

	private function get_iso($l)
	{
		foreach ($this->lang_info as $lang)
		{
			if ($lang['lang_iso'] == $l)
			{
				return $lang['lang_iso'];
			}
		}
			return '';
	}
}
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 8 месяцев
Откуда: Израиль
Благодарил (а): 73 раза
Поблагодарили: 248 раз

Re: [DEV] Quick Language

Сообщение Алг »

спасибо, я похоже описания ни разу не проверяла
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
rogala
phpBB 1.4.2
Сообщения: 69
Стаж: 9 лет
Откуда: Украина. Черкассы
Благодарил (а): 8 раз
Поблагодарили: 4 раза

Re: [DEV] Quick Language

Сообщение rogala »

Нашел сайт с иконками флагов 66 серий иконок, а это более 16800 иллюстраций с наилучшим качеством, полупрозрачностью, в трех разрешениях в формате PNG, все представленные иконки бесплатны для личного использования, по 1 можно качать бесплатно.

Вариации 1 страны размеры каждого варианта 64 px, 256 px, 640 px

Поменял себе на 32х37 (делал с 256 px) и убавил прозрачность до 0,3, вроде так ничего, свежо.
123.PNG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:48 модератором LavIgor

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