我想调整我的多语言 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.htmlpage1-ru.html ,而不是 page1.en.htmlpage1.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/

10-10 21:58