Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Mr 13

Установка английского языка на 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} составьте сами в соответствии с вашими пунктами меню.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

А если у меня 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'... с соответствующими переводами.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение
09/28/12 11:53 (изменено)

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

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение
03/06/19 20:51 (изменено)

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

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

Поделиться сообщением


Ссылка на сообщение

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

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...