info navigation

phpbb-belk.ru

темы, связанные с форумом phpbb 3.0.x



Новая тема  [ 1 сообщение ]  Просмотры: 3277

Автор Сообщение
Не в сети
(Андрей)  
Администратор
Аватара пользователя

Стаж: 8 лет 6 месяцев 7 дней
Сообщения: 1223
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


Language Selection Mod

мод для выбора языка форума. по умолчанию язык выбирается пользователем в личном разделе (после регистрации). но если у вас форум - двуязычный или более? а основной язык не тот, что у пользователя? поймёт ли пользователь, что необходимо делать?

мод очень лёгкий. никаких закачек файлов на форум. только правка нескольких файлов. проверил в работе на последней версии phpbb 3.0. (14).

Итак, установка:

Открыть includes/functions.php
Найти

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

   // The following assigns all _common_ variables that may be used at any point in a template.
   $template->assign_vars(array(


Заменить найденное на

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

   // Begin Language Selection Mod
   $nlang = strtolower(request_var('nlang', ''));
   if (!empty($nlang))
   {
      $sql = 'SELECT lang_iso
         FROM ' . LANG_TABLE . "
         WHERE lang_iso = '" . $db->sql_escape($nlang) . "'";
      $result = $db->sql_query($sql);
      $row = $db->sql_fetchrow($result);
      $db->sql_freeresult($result);
      $nlang = file_exists($user->lang_path . basename($nlang . '/')) ? $nlang : '';
      if (!empty($nlang) && !empty($row))
      {
         if ($user->data['user_id'] == ANONYMOUS)
         {
            $cktime = time() + 5259488;
            $user->set_cookie('nlang', $nlang, $cktime);
            $config['default_lang'] = $nlang;
         }
         else
         {
            $sql_ary = array(
               'user_lang'            => $nlang,
            );
            $sql = 'UPDATE ' . USERS_TABLE . '
               SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
               WHERE user_id = ' . $user->data['user_id'];
            $db->sql_query($sql);
         }
      }
      $redircur = build_url('nlang');
      $redirect = redirect($redircur);
   }
   // END Language Selection Mod
   // The following assigns all _common_ variables that may be used at any point in a template.
   $template->assign_vars(array(
      // Begin Language Selection Mod
      'LANG_ACT'                  => build_url('nlang'),
      'S_LANG_OPTIONS'            => language_select($user->data['user_lang']),
      // END Language Selection Mod


Открыть includes/session.php
Найти

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

         $this->lang_name = basename($config['default_lang']);


Заменить найденное на

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

         // Begin Language Selection Mod
         $row = '';
         $req_lang = request_var($config['cookie_name'] . '_nlang', 'X', false, true);
         if ($req_lang != 'X')
         {
            $req_language = file_exists($this->lang_path . basename($req_lang) . '/') ? $req_lang : $config['default_lang'];
            $sql = 'SELECT lang_iso
               FROM ' . LANG_TABLE . "
               WHERE lang_iso = '" . $db->sql_escape($req_lang) . "'";
            $result = $db->sql_query($sql);
            $row = $db->sql_fetchrow($result);
            $db->sql_freeresult($result);
         }
         if (!empty($row))
         {
            $this->lang_name = $req_lang;
            $this->data['user_lang'] = $req_lang;
         }
         else
         {
            $this->lang_name = basename($config['default_lang']);
         }
         // END Language Selection Mod


языковые правки
английский:

Открыть language/en/common.php
Найти

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

$lang = array_merge($lang, array(


Вставить после найденного

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

   // Begin Language Selection Mod
   'SELECT_LANGUAGE'         => 'Select your language',
   // END Language Selection Mod


русский:

Открыть language/ru/common.php
Найти

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

$lang = array_merge($lang, array(


Вставить после найденного

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

   // Begin Language Selection Mod
   'SELECT_LANGUAGE'         => 'Выберите ваш язык',
   // END Language Selection Mod


для стилей на основе prosilver
Открыть styles/prosilver/template/overall_header.html
Найти

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

            <li class="icon-home"><a href="{U_INDEX}" accesskey="h">{L_INDEX}</a> <!-- BEGIN navlinks --> <strong>&#8249;</strong> <a href="{navlinks.U_VIEW_FORUM}">{navlinks.FORUM_NAME}</a><!-- END navlinks --></li>


Вставить после найденного

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

            <!-- IF not S_IS_BOT -->
            <li class="rightside">
               <form style="margin-left:5px; margin-top:-3.5px;" id="nlang" method="post" action="{LANG_ACT}">
                  <fieldset style="border:none;">
                     <label for="nlang">{L_SELECT_LANGUAGE}:</label>
                     <select onchange="this.form.submit();" name="nlang">{S_LANG_OPTIONS}</select>
                     <noscript><div><input type="submit" value="{L_GO}" /></div></noscript>
                  </fieldset>
               </form>
            </li>
            <!-- ENDIF -->


для стилей на основе subsilver2
Открыть styles/subsilver2/template/overall_header.html

Найти

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

   <div id="datebar">
      <table width="100%" cellspacing="0">
      <tr>
         <td class="gensmall"><!-- IF S_USER_LOGGED_IN -->{LAST_VISIT_DATE}<!-- ENDIF --></td>
         <td class="gensmall" align="{S_CONTENT_FLOW_END}">{CURRENT_TIME}<br /></td>
      </tr>
      </table>
   </div>


Вставить после найденного:

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

   <!-- IF not S_IS_BOT -->
   <div style="margin-right:25px;" align="{S_CONTENT_FLOW_END}">
      <form style="margin-top:10px;" id="nlang" method="post" action="{LANG_ACT}">
         <fieldset style="border:none;">
            <label for="nlang">{L_SELECT_LANGUAGE}:</label>
            <select onchange="this.form.submit();" name="nlang">{S_LANG_OPTIONS}</select>
            <noscript><div><input type="submit" value="{L_GO}" /></div></noscript>
         </fieldset>
      </form>
   </div>
   <!-- ENDIF -->


Всё. после всех правок очистить кэш и можно пользоваться.

Стандартный вывод мода покажет полоску выбора с выпадающим списком.

примерно так:

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

получилось так:

Вложение:
Комментарий к файлу: мой вариант в правом верхнем углу страницы
language.png
language.png [ 977 байт | Просмотров: 3277 ] language.png



для него не надо языковых правок и стилевая будет такая:

Открыть styles/ваш стиль/template/overall_header.html

Найти (показана только часть строки)



Вставить после найденного

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

<span style="position:fixed;top:20px;right:20px;"><a href="?nlang=en" title="{L_SELECT_LANGUAGE_EN}">EN </a> | <a href="?nlang=ru" title="{L_SELECT_LANGUAGE_HK}">RUS</a></span>


моя правка закрепляет выбор языка в правом верхнем углу.


оригинальная тема: https://phpbb.com/community/viewtopic.p ... &t=2010825


трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
Language Selection Mod,форум,язык
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ 1 сообщение ] 

Кто сейчас на сайте:

Всего посетителей: 0, из них зарегистрированных: 0, скрытых: 0 и гостей: 0 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (122) здесь было 19 дек 2023, 12:10

Сейчас этот раздел просматривают: нет зарегистрированных пользователей и гости: 0

Часовой пояс: UTC + 2 часа



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете защищать свои темы паролем

Найти:
Перейти:  





Текущее время: 29 мар 2024, 09:09

Создано на основе phpBB® Forum Software © phpBB Group
Яндекс.Метрика

Полная версия Мобильный вид