Jump to content
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?

 

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

 

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

Featured Replies

  • Author

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

 

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

 

Спасибо.

Проверьте лэнги у ключей 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 months later...

А если у меня 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 months later...

Угу. Опять же автор решения - 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

Edited by Атаман

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

  • 6 years later...

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

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

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

Edited by That

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

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

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.