1

是否可以更改 Apache DirectoryListing 的默认语言(德语)?

我试过这个:

DefaultLanguage de
AddLanguage de .de
LanguagePriority de en
ForceLanguagePriority Fallback

表格标题仍然是“名称”、“上次修改时间”和“大小”。

4

2 回答 2

3

从 httpd 2.4.10 开始,仅使用 httpd.conf 是不可能的,因为列标题在 modules/generators/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>
于 2016-01-27T14:22:13.117 回答
0

这只是对@toomas答案的补充。

您可以将他的 hack 与Options +multiviews. 请参阅 https://httpd.apache.org/docs/2.4/content-negotiation.html

然后只需添加您的文件README.html.deREADME.html.et……然后每个文件都可以执行所需的翻译。

作为旁注,ReadmeName "/README.html"意味着您仅使用整个站点的根文件夹中的一个文件(此处为一组)-除非对某些位置/目录另有说明-,而ReadmeName "README.html"意味着您在每个自动索引文件夹中使用不同的文件。

于 2019-05-11T10:10:54.187 回答