Данный опус не тянет на статью, поэтому пойдёт в рамках программы "Ликбез"

Здесь в окололитературной форме описаны мои изыскания по поводу "Как сделать, чтобы при переключении языка заголовки и тексты в модулях vBadvanced тоже менялись"
Люблю vBa...

Очень простая, очень удобная
Позволяет насоздавать страниц "в пару кликов", готовая оболочка, не нужно морочить голову ни с шаблонами, ни с файлами
Аналогично - содержимое страниц, выводи что хочешь, раскидывай по странице, как хочешь.
Особенно мне нравится возможность наклепать своих модулей. И среди предлагаемых по дефолту типов модулей бесспорный лидер, несомненно, [BB код модуль]: легче вообще ничего быть не может! Хочешь пихнуть на главную какую-то новость - раз-два, написал текст и вставил модуль на страницу. Если про эту новость есть ещё и тема на форуме - добавил ссылку, тексты модуля и первого поста - немного разные, никакого тебе "дублирования контента"
Пользуюсь как правило нЕ русифицированной vBa, потому что перевод в админке мне даром не нужен, а модули всё равно именуются отдельно, при создании.
В общем, всё шикарно, всё безоблачно... было. До недавних пор...
А недавно владелец одного из форумов вдруг захотел двуязычность: русский и украинский
ну и... всё, вставай, приехали
Как вы понимаете, залить украинский - минутное дело, спасибо Стопчанському, перевод для тройки по-прежнему в свободном доступе.
Но вБА!!!

Мне не нужен перевод вБА, она у меня англицкая и меня это устраивает
Мне нужно, чтобы при переключении языка менялись заголовки
и содержимое текстовых модулей
Казалось бы, ну что тут сложного: создай фразы, загони названия/тексты модулей во фразы, и - вперёд...
Думаю, многие, кто использует вБА, пробовали ставить фразы в заголовки модулей... и все прекрасно знают: там фразы нЕ обрабатываются. Внутри столь обожаемого мною [BB код модуля] фразы тоже не обрабатываются
Забавно...
Прикол ситуации ещё и в том, что техподдержка того форума - уже давно хобби (то есть, всё держится на голом энтузиазме, денег нет и не предвидится)
Соответственно, найти бы простое готовое решение, поставить и забыть
Но с готовыми решениями - ай, как не густо
Значит, надо сказать хозяину: этого сделать
нельзя. Точка.
Но вопрос меня зацепил...
А мы, блондинки, ежели нам чего в башку втемяшится...

Прошерстила тут раздел
vBadvanced CMPS - есть вопросы, нет ответов
Пошла шерстить офсайт
Есть решение:
http://www.vbadvanced.com/forum/show...138#post222138
Если кому нужно - могу выложить, даже слегка перевести
Лично меня это решение не вдохновило: во-первых, правка файлов; во-вторых, перевод только названия модуля мою проблему не решает
В теме по ссылке в посте #8 - доработка
Quote:
Originally Posted by Selya
чтобы можно было переводить не только модули, но и страницы
|
и вопрос про модуль навигации, со скрином. Смотрю скрин - камрад, русская вБА!
конечно, я нашла упоминание об этой доработке тут, на саппорте, именно этот пост и процитирован
@Selya, а почему Вы не выложили эту доработку здесь?
===
Литературное вступление закончилось.
Резюме: нормального готового решения я не нашла.
ОК, будем ваять...
Собственно, что надо? - надо, чтобы в текстовых модулях обрабатывались фразы.
[BB код модуль] с фразами не работает.
Ну и ладно...
берём [Шаблон модуль]
О! внутри шаблон-модуля прекрасно парсятся фразы, то есть, вопрос с содержимым модуля можно считать решённым.
Остаётся вопрос с заголовком модуля... если ставить галочку "Использовать шаблон оболочки модуля", то... то заголовок не перевести

Если не ставить "Использовать шаблон оболочки модуля" - то получается просто некрасиво
Хорошо, зачем нам штатная оболочка? у нас же [Template Module], то есть, весь ХТМЛ в нашем распоряжении! Я же могу к каждому своему
бывшему [BB код модулю] склепать отдельный шаблон
да-да, бешеной собаке сто километров - не крюк
Смотрим, что там у нас вообще в штатном adv_portal_module_wrapper?
HTML Code:
$mods[formcode]
<div style="padding-bottom:$vba_style[portal_vspace]px">
<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<thead>
<tr>
<td class="tcat" colspan="$mods[colspan]">
<if condition="$vba_style['portal_collapsemods']">
<a href="#top" onclick="return toggle_collapse('module_$mods[collapse]')" style="float:$stylevar[right]"><img alt="" border="0" id="collapseimg_module_$mods[collapse]" src="$stylevar[imgdir_button]/collapse_tcat$modimgcollapse.gif" /></a>
</if>
<span class="smallfont"><strong>$vba_style[portal_blockbullet] <if condition="$mods['link']"><a href="$mods[link]">$mods[title]</a><else />$mods[title]</if></strong></span></td>
</tr>
</thead>
<tbody id="collapseobj_module_$mods[collapse]" style="$modcollapse">
<if condition="$show['tablerow']">
<tr>
<td class="$bgclass">
$modulehtml
</td>
</tr>
<else />
$modulehtml
</if>
</tbody>
</table>
</div>
<if condition="$show['endform']"></form></if>
тю... ерунда какая, текста мало, ломать - не строить, лишнее - фтопку, нужное меняем
я нЕ использую модули с формами (поиск, например), поэтому всё про форму - выкидываем (первая и последняя строка)
мне нужно ставить фразу в титл модуля - вот это место
Code:
<strong>$vba_style[portal_blockbullet] <if condition="$mods['link']"><a href="$mods[link]">$mods[title]</a><else />$mods[title]</if></strong>
выкидываем лишнее, вместо переменной $mods[title] ставим фразу, получаем:
Code:
<strong>$vba_style[portal_blockbullet] $vbphrase[mod_title]</strong>
мне нужно ставить фразу вместо подключаемого содержимого модуля, вот это место:
Code:
<tbody id="collapseobj_module_$mods[collapse]" style="$modcollapse">
<if condition="$show['tablerow']">
<tr>
<td class="$bgclass">
$modulehtml
</td>
</tr>
<else />
$modulehtml
</if>
</tbody>
оставляем только необходимое, вместо переменной $modulehtml ставим фразу:
Code:
<tbody id="collapseobj_module_$mods[collapse]" style="$modcollapse">
<tr>
<td class="$bgclass">
$vbphrase[mod_text]
</td>
</tr>
</tbody>
Собственно, это всё... в результате получаем вот такую заготовку:
HTML Code:
<div style="padding-bottom:$vba_style[portal_vspace]px">
<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<thead>
<tr>
<td class="tcat" colspan="$mods[colspan]">
<if condition="$vba_style['portal_collapsemods']">
<a href="#top" onclick="return toggle_collapse('module_$mods[collapse]')" style="float:$stylevar[right]"><img alt="" border="0" id="collapseimg_module_$mods[collapse]" src="$stylevar[imgdir_button]/collapse_tcat$modimgcollapse.gif" /></a>
</if>
<span class="smallfont"><strong>$vba_style[portal_blockbullet] $vbphrase[mod_title]</strong></span></td>
</tr>
</thead>
<tbody id="collapseobj_module_$mods[collapse]" style="$modcollapse">
<tr>
<td class="$bgclass">
$vbphrase[mod_text]
</td>
</tr>
</tbody>
</table>
</div>
Теперь останется только понаклепать фраз и не забывать менять в шаблоне $vbphrase[mod_title] и $vbphrase[mod_text]
После такого глобального открытия велосипеда проблема модуля "Навигация" отпала сама собой - делается точно так же
Оффтоп
вообще я не знаю, зачем я об этом говорю... тут-то, на саппорте, модуль "Гурушник" уж несколько лет, как так сделан... ну, чисто "чтобы было в одном месте"
На радость владельца того проекта предложила модуль навигации украсить цветочками-листочками ? ? ? ? ? ? (да здравствует утф! никаких заморочек, просто скопировать/вставить) - восторг был полный...
Остался открытым вопрос с названиями страниц, но я собираюсь просто придумать им титлы, которые пишутся одинаково на русском и украинском... в крайнем случае, напишу по-англицки
что ещё...
скрины:
При желании, естественно, тут вообще есть где разгуляться

например, переменная $vba_style[portal_blockbullet] - это символ », который выводится перед заголовком модуля, этот символ меняется глобально для всех модулей в настройках вБА
и вместо $vba_style[portal_blockbullet] для каждого модуля можно ставить индивидуальную "украшалку"
Нужна ли подробная, пошаговая инструкция о создании шаблона и [Шаблон модуля]?