Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Установка английского языка на IBR [3.2.2] и защищенный языковой пакет

Опубликовано:

Моя версия IPB: 3.2.2 (IBR)

 

Приветствую. Хватило дурости пользоваться IPB от IBR, а не IPS, и теперь возникает следующий вопрос:

 

 

В базовой поставке IPB от IPS есть защищённый языковой пакет - "English (USA)". В комплекте от IBR есть только "Русский" язык.

 

Вопрос состоит в следующем:

 

Можно ли как-то восстановить исходный языковой пакет, или заново установить английский язык так, чтобы он корректно обновлялся в будущем при установке обновлений от IPS?

 

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

 

Заранее извиняюсь за возможную сумбурность изложения.

Рекомендованные сообщения

Опубликовано:
  • Автор

Спасибо, почти помогло. Странно, пользовался поиском перед созданием темы, но по запросу "Английский язык" ничего не нашлось, а тема, которую Вы указали, именно так и называется о_О

 

Ещё вопрос: имена приложений (вкладки "Форум", "Пользователи") и.т.п. всё-равно отображаются на русском. Есть ли возможность менять их значения в зависимости от языка?

 

Спасибо.

Опубликовано:

Проверьте лэнги у ключей discussion, tb_mlist

Можете еще попробовать добавить для них пользовательское (новое) значение.

Опубликовано:

Ещё вопрос: имена приложений (вкладки "Форум", "Пользователи") и.т.п. всё-равно отображаются на русском. Есть ли возможность менять их значения в зависимости от языка?

Угу. Опять же автор решения - Ritsuka

 

 


Названия компонентов берутся из настроек модулей. И там поле только одно. Решить проблему в принципе можно - достаточно кое-что заменить в этом блоке в АЦ (шаблон globalTemplate):

                        <if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])">
                           <foreach loop="applications:$header_items['applications'] as $data">
                               <if test="showingapp:|:$data['app_show']">
                                   {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"}
                                   <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"> <a href='{parse url="{$data['app_link']}" seotitle="false" base="public"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], $data['app_title'] )"}'>{$data['app_title']}</a> </li>
                               </if>
                           </foreach>
                       </if>

 

Как видите, тут напрямую выводится {$data['app_title']} - значение, которое указано в настройках модулей. А оно для каждого модуля только одно, и от языка не зависит. ID текущего языка можно получить из {$this->lang->lang_id}. Т.к. в ленг-строках названия приложений если и есть, то никак не систематизированы, то нам не остается ничего иного, кроме как собрать подобную вещь:

 

<php>$app_trans = array("Блоги" => "Blogs", "Галерея" => "Gallery", "Файлы" => "Downloads");</php>
                       <if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])">
                           <foreach loop="applications:$header_items['applications'] as $data">
                               <if test="showingapp:|:$data['app_show']">
                                   {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"}
                                   <php>$appTitle = ($this->lang->lang_id == 2) ? $app_trans[$data['app_title']] : $data['app_title'];</php>                        
                                   <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"> <a href='{parse url="{$data['app_link']}" seotitle="false" base="public"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], $data['app_title'] )"}'>{$appTitle}</a> </li>
                               </if>
                           </foreach>
                       </if>

 

При условии, что 1-й язык - русский, а 2-й - английский. {$app_trans} составьте сами в соответствии с вашими пунктами меню.

  • 2 месяца спустя...
Опубликовано:

А если у меня 3 языка, то как тогда быть?

Опубликовано:
А если у меня 3 языка, то как тогда быть?

 

Быть с чем?

Опубликовано:

У вас вообще 3.3. Там все во многом по-другому.

 

						<if test="hasCustomPrimaryNavigation:|:!empty($header_items['primary_navigation_menu'])">
						{$header_items['primary_navigation_menu']}
					<else />
						<if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])">
							<foreach loop="applications:$header_items['applications'] as $data">
								<if test="showingapp:|:$data['app_show']">
									{parse variable="appActive" default="" oncondition="$data['app_active']" value="active"}
									<li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"><a href='{parse url="{$data['app_link']}" seotitle="{$data['app_seotitle']}" template="{$data['app_template']}" base="{$data['app_base']}"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], IPSLib::getAppTitle($data['app_dir']) )"}'>{IPSLib::getAppTitle($data['app_dir'])}</a></li>
								</if>
							</foreach>
						</if>
					</if>

 

Если не купите IP.Content и не будете использовать конструктор меню из него, то можно заменить "{IPSLib::getAppTitle($data['app_dir'])}" на "{$this->lang->words['app_title_'.$data['app_dir']]}" и добавить во все языковые пакеты в основную группу строки 'app_title_forums', 'app_title_gallery'... с соответствующими переводами.

Опубликовано:

Угу. Опять же автор решения - Ritsuka

 

Спасибо огромное!

  • 4 месяца спустя...
Опубликовано:

Угу. Опять же автор решения - Ritsuka


Названия компонентов берутся из настроек модулей. И там поле только одно. Решить проблему в принципе можно - достаточно кое-что заменить в этом блоке в АЦ (шаблон globalTemplate):
                        <if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])">                            <foreach loop="applications:$header_items['applications'] as $data">                                <if test="showingapp:|:$data['app_show']">                                    {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"}                                    <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"> <a href='{parse url="{$data['app_link']}" seotitle="false" base="public"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], $data['app_title'] )"}'>{$data['app_title']}</a> </li>                                </if>                            </foreach>                        </if>

Как видите, тут напрямую выводится {$data['app_title']} - значение, которое указано в настройках модулей. А оно для каждого модуля только одно, и от языка не зависит. ID текущего языка можно получить из {$this->lang->lang_id}. Т.к. в ленг-строках названия приложений если и есть, то никак не систематизированы, то нам не остается ничего иного, кроме как собрать подобную вещь:

<php>$app_trans = array("Блоги" => "Blogs", "Галерея" => "Gallery", "Файлы" => "Downloads");</php>                        <if test="applicationsloop:|:is_array($header_items['applications']) AND count($header_items['applications'])">                            <foreach loop="applications:$header_items['applications'] as $data">                                <if test="showingapp:|:$data['app_show']">                                    {parse variable="appActive" default="" oncondition="$data['app_active']" value="active"}                                    <php>$appTitle = ($this->lang->lang_id == 2) ? $app_trans[$data['app_title']] : $data['app_title'];</php>                                                            <li id='nav_app_{$data['app_dir']}' class="left {parse variable="appActive"}"> <a href='{parse url="{$data['app_link']}" seotitle="false" base="public"}' title='{parse expression="sprintf( $this->lang->words['go_to_prefix'], $data['app_title'] )"}'>{$appTitle}</a> </li>                                </if>                            </foreach>                        </if>

При условии, что 1-й язык - русский, а 2-й - английский. {$app_trans} составьте сами в соответствии с вашими пунктами меню.

 

Добрый день. Играюсь на виртуалке.

 

1) Изначально стоит русский пакет локализации

2) Потом по инструкции, сделал копию языка, выполнил запрос, всё изменилось. Кроме Форумы - Календарь - Пользователи.

 

Инструкция Выше не помогает, или я что-то неправильно делаю.

Русс ID=1

ENG ID-2

Изменено пользователем Атаман

Опубликовано:

Разобрался, спасибо. Языковые строки добавил.

  • 6 лет спустя...
Опубликовано:

Странно. Сделал всё согласно этому посту. Версия форума 3.4.9 + Content . Названия как брались из названия странички, так и берутся. Кеши чистил, проверил на 3х браузерах. Может в 3.4.9 какой-то подвох?

Опубликовано:

Там вообще речь о названия приложений - application title, а у вас название страницы в ип.контент.

Опубликовано:

Так а в контенте со страницами это реально сделать? В поиске по форуму ничего не нахожу подобного.

Изменено пользователем That

Опубликовано:

Наверное возможно. Только я не совсем понимаю что вы хотите сделать? Мултиязычность название страницы?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.