我可以更改mod_autoindex / Apache目录列表的语言

时间:2014-11-19 13:41:51

标签: apache localization server directory-listing mod-autoindex

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

我试过了:

DefaultLanguage de
AddLanguage de .de
LanguagePriority de en
ForceLanguagePriority Fallback

表格标题仍然是"名称","最后修改" "尺寸"。

2 个答案:

答案 0 :(得分:2)

从httpd 2.4.10开始,仅使用httpd.conf是不可能的 因为列标题是硬编码的 模块/发电机/ mod_autoindex.c。

我使用httpd.conf和JavaScript更改了标题。这不是一个完整的解决方案,因为它仅适用于一种语言。我无法弄清楚如何为多种语言做同样的事情。遗憾的是,不可能使用' document.documentElement.lang'检测适当的语言是因为mod_autoindex.c没有提供' lang'属性。

以下是我的httpd.conf中的相关行(除了HTMLTable,你可以省略IndexOptions中的所有内容):

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>

答案 1 :(得分:0)

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

您可以将他的骇客与Options +multiviews结合使用。看到 https://httpd.apache.org/docs/2.4/content-negotiation.html

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

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