Могу ли я изменить язык списка каталогов mod_autoindex/Apache?

Можно ли изменить язык по умолчанию (немецкий) списка каталогов Apache?

Я пробовал это:

DefaultLanguage de
AddLanguage de .de
LanguagePriority de en
ForceLanguagePriority Fallback

Заголовки таблиц по-прежнему «Имя», «Последнее изменение» и «Размер».


person StefanSL    schedule 19.11.2014    source источник
comment
Тоже интересно, если это возможно.   -  person oschloebe    schedule 07.08.2015


Ответы (2)


Начиная с httpd 2.4.10, это невозможно, используя только httpd.conf, поскольку заголовки столбцов жестко запрограммированы в модулях/генераторах/mod_autoindex.c.

Я изменил заголовки с помощью httpd.conf и JavaScript. Это не полное решение, потому что оно работает только для одного языка. Я не смог понять, как сделать то же самое для нескольких языков. К сожалению, невозможно использовать «document.documentElement.lang» для определения соответствующего языка, поскольку mod_autoindex.c не предоставляет атрибут «lang».

Вот соответствующие строки из моего httpd.conf (вы можете опустить все из IndexOptions, кроме HTMLTable):

LoadModule autoindex_module /usr/lib/httpd/modules/mod_autoindex.so
IndexOptions HTMLTable Charset=UTF-8 SuppressDescription
IndexStyleSheet "/DirectoryIndex.css"
ReadmeName "/DirectoryIndexFooter.html"

Обратите внимание, что вы не можете пропустить директиву IndexStyleSheet, даже если вам не нужна таблица стилей. Файл таблицы стилей не обязательно должен существовать.

А это мой /DirectoryIndexFooter.html:

<script>
  document.title = document.title.replace ('Index of', 'Sisukord:');
  var elem = document.getElementById ('indextitle');
  elem.innerHTML = elem.innerHTML.replace ('Index of', 'Sisukord:');
  elem = document.getElementsByClassName ('indexcolname') [0];
  elem.innerHTML = elem.innerHTML.replace ('Name', 'Nimi:');
  elem = document.getElementsByClassName ('indexcollastmod') [0];
  elem.innerHTML = elem.innerHTML.replace ('Last modified', 'Viimane muutmine:');
  elem = document.getElementsByClassName ('indexcolsize') [0];
  elem.innerHTML = elem.innerHTML.replace ('Size', 'Suurus:');
</script>
person toomas    schedule 27.01.2016

Это просто дополнение к ответу @toomas.

Вы можете комбинировать его взлом с Options +multiviews. См. https://httpd.apache.org/docs/2.4/content-negotiation.html.

Затем просто добавьте свои файлы README.html.de, README.html.et каждый из которых потом сможет выполнить нужный перевод.

В качестве примечания, ReadmeName "/README.html" означает, что вы используете здесь только один файл из корневой папки для всего сайта, если не указано иное для некоторых местоположений/каталогов, а ReadmeName "README.html" означает, что вы используете разные файлы в каждой автоматически индексируемой папке.

person ondelettes    schedule 11.05.2019