[dev] Quick Language
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение

-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
[dev] Quick Language
Расширение для 3.1 позволяет быстро изменить язык конференции:
В шапку форума ( файл overall_header.html ) добавляется блок с иконками флагов для всех установленных на конференции языков - Нажатие на иконку флага меняет язык конференции. Для зарегистрированного пользователя новое значение сохраняется в таблице юзеров ( аналогично изменению настроек через личный раздел), для гостя значение сохраняется в куках конференции
- в панели администратора можно задать отображение иконок гостям и отображение иконки английского языка. Для форумов, в которых не участвуют англоязычные посетители ( например, для российско-украинских), рекомендуется отключать появление флага иконки переклюения на английский
- в панели администратора можно включить опцию перевода отдельных постов. На странице настроек расширения есть ссылка Получить 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
В шапку форума ( файл overall_header.html ) добавляется блок с иконками флагов для всех установленных на конференции языков - Нажатие на иконку флага меняет язык конференции. Для зарегистрированного пользователя новое значение сохраняется в таблице юзеров ( аналогично изменению настроек через личный раздел), для гостя значение сохраняется в куках конференции
- в панели администратора можно задать отображение иконок гостям и отображение иконки английского языка. Для форумов, в которых не участвуют англоязычные посетители ( например, для российско-украинских), рекомендуется отключать появление флага иконки переклюения на английский
- в панели администратора можно включить опцию перевода отдельных постов. На странице настроек расширения есть ссылка Получить 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
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
Во-первых, это пока подозреваемый экст, а не виновный
Во-вторых, попробуйте добавить папку uk в profileSideSwitcher/styles/prosilver/theme. Там находятся папки с картинками для русского и английского языков. Скопируйте любую и измените название на uk
В третьих, если это поможет, то экст profileSideSwitcher потребует некоторой доработки
да, названия и описания их можно менять
здесь все работает самым обычным образом. Что такое по-вашему .lang:active ?
есть класс, называется .lang_selected, в него и добавьте Ваш стиль
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Всегда делаю папки en ru uk сразу в папке /ext/../../language для каждого расширения, а вот дал маху в стиле тоже ведь есть папки языковые, завтра попробую спасибо.
Не знаю я не программист и не кодер, нашел в инете так вроде для активированной ссылки параметры задаются. А код попробую еще раз спасибо.
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
ключевое слово - для ссылки. А Вы пытались применть к классу
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Еще раз спасибо, css поменял теперь все красиво, папку uk для profileSideSwitcher/styles/prosilver/theme тоже добавил пока полет нормальный.
Отправлено спустя 8 минут 28 секунд: теперь видно какой активный, правда я иконки 32х32 сделал, на маленьких не особо заметно
Отправлено спустя 6 минут 30 секунд:
По пристаю еще немного, вот эту часть можно также будет менять, есть планы для ее реализации?
Отправлено спустя 8 минут 28 секунд: теперь видно какой активный, правда я иконки 32х32 сделал, на маленьких не особо заметно
Отправлено спустя 6 минут 30 секунд:
По пристаю еще немного, вот эту часть можно также будет менять, есть планы для ее реализации?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
Пока не было, но, если добавлять названия групп, то почему бы заодно и не 
В планах у меня стоит добавить ссылку "перевести" под каждым постом, как например в ю-тубе в комментариях

В планах у меня стоит добавить ссылку "перевести" под каждым постом, как например в ю-тубе в комментариях
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
rogala, а где конкретно вас интересуют названия групп? Имхо, только внизу страницы, там где "кто онлайн", но там и так берутся из языковых переменных, в остальных случаях это чисто служебная информация
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Стандартные меняются без проблем, а созданные самостоятельно нет, они сразу пишутся в базу как есть, на ru или uk кто как пишет.
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
так мой вопрос был: где, на каком экране, в каком, конкретно, месте вы хотите видеть переведённые названия кастомных групп?
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Да в любом месте, в списке пользователей в списке команды в профиле, это надо менять глобально.
-
- Former team member
- Сообщения: 933
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
к сожалению тут менять можно только локально, для глобальной замены нужен механизм хранения в БД, а это лишняя нагрузка на форум
эти страницы просматриваются весьма редко, не думаю, что следует заниматься переводами групп( а рядом ещё и звания, их тоже попросят)... короче, в ближайшее время я этим заниматься не буду, только в большой перспективе при наличии свободного времени, а вот перевод названия и описание конференции и сайта - это да, нужно
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Буду ждать Ваших обновлений расширения, уж Бог с ними с группами, пока потерпит и так.
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Что то не работает у меня описание если FORUM_NAME_15 то и FORUM_DESC_15 тот же номер имеет или я туплю?
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Сделал 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
- Стаж: 12 лет 8 месяцев
- Откуда: Израиль
- Благодарил (а): 72 раза
- Поблагодарили: 248 раз
Re: [DEV] Quick Language
спасибо, я похоже описания ни разу не проверяла
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
А ты проявляй интеллигентность, постарайся убеждать...
Т. Шаов
-
- phpBB 1.4.2
- Сообщения: 69
- Стаж: 10 лет 1 месяц
- Откуда: Украина. Черкассы
- Благодарил (а): 8 раз
- Поблагодарили: 3 раза
Re: [DEV] Quick Language
Нашел сайт с иконками флагов 66 серий иконок, а это более 16800 иллюстраций с наилучшим качеством, полупрозрачностью, в трех разрешениях в формате PNG, все представленные иконки бесплатны для личного использования, по 1 можно качать бесплатно.
Вариации 1 страны размеры каждого варианта 64 px, 256 px, 640 px
Поменял себе на 32х37 (делал с 256 px) и убавил прозрачность до 0,3, вроде так ничего, свежо.
Вариации 1 страны размеры каждого варианта 64 px, 256 px, 640 px
Поменял себе на 32х37 (делал с 256 px) и убавил прозрачность до 0,3, вроде так ничего, свежо.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:48 модератором LavIgor