Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Mr 13

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

Recommended Posts

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

 

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

 

 

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

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

Спасибо.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
А если у меня 3 языка, то как тогда быть?

 

Быть с чем?

Share this post


Link to post
Share on other sites

У вас вообще 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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by That

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...