Интерфейс JSPUI, имевшийся в DSpace изначально, недавно был переписан на Bootstrap. Теперь, в версиях DSPACE 4.x/5.x он выглядит посвежее, имеет нормальную мобильную версию и фасеты в нём более не кажутся чем-то чуждым, приколоченным сбоку под новостями. Но, надо отдать разработчикам должное, они сохраняют преемственность, что с одной стороны позволяет переносить пользователям некоторые собственные наработки из более ранних версий, а с другой, тянет некоторые «косяки» из версии в версию.
Например, для того чтобы переключить язык интерфейса, в DSpace/JSPUi нужно непременно перейти на главную страницу и нажать на соответствующую ссылку, что не очень удобно. Ниже я опишу один из выходов из данной ситуации. Всё, описанное ниже основывается на том, что у нас уже есть нормально сконфигурированный DSpace, способный штатными средствами переключать языки интерфейса.
И так, сразу хочется сказать, что мопед не мой, а честно угнанный тут. Суть метода в том, что имеется некий яваскрипт, который при вызове с параметром (значением языка) перегружает текущий путь с новым языковым значением.
Модификация для Dspace 1.8.x/3.x:
В файле jspui/home.jsp коментируем данный кусок:
{
%>
<form method="get" name="repost" action="">
<input type ="hidden" name ="locale"/>
</form>
<%
for (int i = supportedLocales.length-1; i >= 0; i--)
{
%>
<a class ="langChangeOn"
onclick="javascript:document.repost.locale.value='<%=supportedLocales[i].toString()%>';
document.repost.submit();">
<%= supportedLocales[i].getDisplayLanguage(supportedLocales[i])%>
</a>
<%
}
}
%>
В файле jspui/layout/header-default.jsp ГДЕ-НИБУДЬ правее LOGO картинки добавляем следующий код:
Говорю где-нибудь, т.к. там таблица и каждый сам решит как там изменить «раскладку» данной таблицы. У меня в ней уже три ячейки и переключатель в самой правой, к тому же безликие RU и EN заменены на картинки. Пример тут.
Так же, сразу под тегом body в том же файле нужно добавить следующий код:
<script type="text/javascript">
function changeLangTo(locale) {
var s = document.location.toString();
if (s.indexOf("?") == -1) {
document.location = document.location + '?locale=' + locale;
} else {
if (s.indexOf("locale") == -1) {
document.location = document.location + '&locale=' + locale;
} else if (s.indexOf("?locale") == -1) {
document.location = s.substring(0, s.indexOf("&locale"))
+ s.substring(s.indexOf("&locale") + 10)
+ '&locale=' + locale;
} else {
document.location = s.substring(0, s.indexOf("?"))
+ '?locale=' + locale
+ s.substring(s.indexOf("?") + 10);
}
}
}
</script>
<!-- End of Script -->
Модификация для Dspace 4.x/5.x:
В файле jspui/home.jsp коментируем данный кусок:
onclick="javascript:document.repost.locale.value='<%=supportedLocales[i].toString()%>';
document.repost.submit();">
<%= supportedLocales[i].getDisplayLanguage(supportedLocales[i])%>
</a>
он у меня почему-то меньше чем для 3.х версии, но видимо работало только так.
А в файле jspui/layout/navbar-default.jsp делаем следующее — сразу под кодом сичбокса вставляем данную строку:
В самом конце, но ПЕРЕД закрывающим тегом вставляем код скрипта:
<script type="text/javascript">
function changeLangTo(locale) {
var s = document.location.toString();
if (s.indexOf("?") == -1) {
document.location = document.location + '?locale=' + locale;
} else {
if (s.indexOf("locale") == -1) {
document.location = document.location + '&locale=' + locale;
} else if (s.indexOf("?locale") == -1) {
document.location = s.substring(0, s.indexOf("&locale"))
+ s.substring(s.indexOf("&locale") + 10)
+ '&locale=' + locale;
} else {
document.location = s.substring(0, s.indexOf("?"))
+ '?locale=' + locale
+ s.substring(s.indexOf("?") + 10);
}
}
}
</script>
<!-- End of Script -->
Выглядит это так.Версия обновилась.
P.S.
Я предпочёл простым текстовым меткам RU/EN, более заметные флажки. Код с картинками тривиален, но мало ли:
Здравствуйте. Можно ли как-то получить русский перевод с рекомендациями? На http://irbis.gpntb.ru модератор никак не подтвердит запрос на регистрацию аккаунта…
https://ideafix.name/?p=505 тут что-то было но к сожалению я более не обновляю публичный перевод. Этос вязано с тем, что начиная с 4-й версии и выше сильно приросла админка, а её мы не переводили от слова совсем, так же, в связи с локальными кастомизациями, наш перевод стал иметь некоторые несовместимости с «обычным» dspace.
А какая версия Dspace у вас стоит ?
У нас это где? Но в основном мы используем 5.10.
Описывалась же ситуация в JSPUI на Dspace 3.x о чем сказано в тексте —
Модификация для Dspace 1.8.x/3.x:
вы прикрепили пример того как вы сделали «переключалку» на русский язык
репозиторий УРФУ, мне надо сделать тоже самое на Dspace 5.10 , но , по вашему мануалу нет такого кода который надо закомментировать, вот и спрашиваю
В DSPace 5.10 нет нужды использовать данный код. Он решал проблему смены страницы в 3.х, т.е. раньше, при смене языка, пользователя переводило на главную, а теперь такой проблемы нет.
Сейчас на elar.urfu.ru используется штатный «переключатель» языков, который конфигурируется через dspace.cfg.
а вы тему какую-то применили чтобы изменить внешний вил ? или в ручную верстали ? если тему ,то подскажите пожалуйста откуда ее скачать
Это стандартный внешний вид (JSPUI)
я так понимаю эта оболочка запускается через jspui
Да, но языки для XMLUI конфигурируются плюс-минус так же и там же.
и как переключиться с xmlui на jspui ?
подменить сервлет в /tomcat/webapps, но… не стоит этого делать без анализа ситуации. XMLUI и JSPUI генерируют чуть разный набор списков и замена одного сервлета на другой может вызвать «непонимание» у google.
В комментариях не очень удобно такие вещи обсуждать. Напишите мне здесь — https://vk.com/alex_yefimov