我想调整我的多语言 DocPad 博客,以便以 *.ru.md 结尾的页面进入/ru/目录,以 *.en.md 结尾的页面进入/en/目录。
假设这是初始结构
src/
pages/
page1.ru.md
page1.en.md
page2.ru.md
这就是我想要的:
./
en/
page1.html
ru/
page1.html
page2.html
./
因为我要主持 gh-pages
。帖子也是一样。我想将它们存储在
src/
posts/
post-about-docpad.ru.md
post-about-docpad.en.md
并得到
./
en/
posts/
post-about-docpad.html
ru/
posts/
post-about-docpad.html
我应该如何配置 docpad?
最佳答案
第一步是重命名您的文档以使用像这样的语言的破折号: page1-en.html
和 page1-ru.html
,而不是 page1.en.html
和 page1.ru.tml
- 否则正如@kizu 正确指出的那样,它会导致 DocPad 从扩展到扩展呈现问题。
完成后,您可以将以下内容添加到 docpad 配置文件中:
collections:
# Fetch documents in different languages
translate: (database) ->
languageRegex = /^(.+?)-(en|ru)$/
#docpadOutPath = @getConfig().outPath
@getCollection('documents').findAllLive({basename: languageRegex}).on 'add', (document) ->
# Prepare
a = document.attributes
parts = a.basename.match(languageRegex)
basename = parts[1]
language = parts[2]
relativeOutPath = "#{language}/#{a.relativeOutDirPath}/#{basename}.#{a.outExtension}"
#outPath = "#{docpadOutPath}/#{relativeOutPath}"
urls = ["/#{relativeOutPath}"]
# Apply
document
.setMetaDefaults({
#outPath
url: urls[0]
})
.addUrl(urls)
这将使 URL 以您想要的方式工作。
然后在安装了 cleanurls 插件的静态环境中运行 DocPad,将文档写入所需的位置。
docpad install cleanurls
docpad generate --env static
关于docpad - 为不同的语言生成不同的 docpad 集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23700995/