hexojs / hexo

A fast, simple & powerful blog framework, powered by Node.js.
https://hexo.io
MIT License
39.47k stars 4.86k forks source link

Is there a way to control the order in which generators are called? I18n generator causes trouble when called in the wrong order. #3643

Closed twatzl closed 5 years ago

twatzl commented 5 years ago

Hello,

sorry it is me again, but it seems there are quite a few points not covered by the documentation so I am getting stuck again and again.

I recently had this problem debugging, now I managed to debug the Issue and it seems that the cause of my issues is the generator https://github.com/Jamling/hexo-generator-i18n which I am using. It seems that the generator needs to be invoked as the last generator.

I have attached you two logs from yesterday where I tried generating my webpage. The first one failed, the second one which was run just seconds later succeeded. The main difference seems to be the order in which the generators were invoked.

Now my question is: Is there anyway to control the order in which the generators are called? It seems to be random.

Or is there a better i18n generator which I could use?

/data/blog $ hexo generate --debug
23:55:49.572 DEBUG Writing database to /data/blog/db.json
23:55:49.601 DEBUG Hexo version: 3.9.0
23:55:49.601 DEBUG Working directory: /data/blog/
23:55:49.687 DEBUG Config loaded: /data/blog/_config.yml
23:55:49.765 DEBUG Plugin loaded: hexo-admin
23:55:49.766 DEBUG Plugin loaded: hexo-deployer-git
23:55:49.768 DEBUG Plugin loaded: hexo-generator-archive
23:55:49.851 DEBUG Plugin loaded: hexo-cookieconsent
23:55:49.853 DEBUG Plugin loaded: hexo-generator-category
23:55:49.855 DEBUG Plugin loaded: hexo-generator-index
23:55:49.859 DEBUG Plugin loaded: hexo-renderer-ejs
registering i18n
23:55:49.862 DEBUG Plugin loaded: hexo-generator-i18n
23:55:49.875 DEBUG Plugin loaded: hexo-renderer-marked
23:55:49.877 DEBUG Plugin loaded: hexo-renderer-stylus
23:55:49.913 DEBUG Plugin loaded: hexo-server
23:55:49.915 DEBUG Plugin loaded: hexo-generator-tag
INFO  =======================================
 ██╗ ██████╗ █████╗ ██████╗ ██╗   ██╗███████╗
 ██║██╔════╝██╔══██╗██╔══██╗██║   ██║██╔════╝
 ██║██║     ███████║██████╔╝██║   ██║███████╗
 ██║██║     ██╔══██║██╔══██╗██║   ██║╚════██║
 ██║╚██████╗██║  ██║██║  ██║╚██████╔╝███████║
 ╚═╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚══════╝
=============================================
INFO  Checking dependencies
INFO  Validating the configuration file
23:55:49.988 DEBUG Script loaded: themes/icarus/scripts/index.js
23:55:49.990 DEBUG Loading database.
23:55:50.080 INFO  Start processing
23:55:50.177 DEBUG Processed: _data/languages.yml
23:55:50.177 DEBUG Processed: _posts/Endlich-Online.md
23:55:50.177 DEBUG Processed: _posts/Finally-Online.md
23:55:50.177 DEBUG Processed: about/index.md
23:55:50.228 DEBUG Processed: _posts/de-AT/Hello-World.md
23:55:50.228 DEBUG Processed: _posts/en/Hello-World.md
23:55:50.228 DEBUG Processed: de-AT/about/index.md
23:55:50.257 DEBUG Theme config loaded.
23:55:50.263 DEBUG Processed: _config.yml
23:55:50.263 DEBUG Processed: source/images/avatar.png
23:55:50.264 DEBUG Processed: source/images/blog-logo.png
23:55:50.265 DEBUG Processed: source/images/favicon.svg
23:55:50.265 DEBUG Processed: source/images/logo.svg
23:55:50.266 DEBUG Processed: source/images/og_image.png
23:55:50.266 DEBUG Processed: source/images/thumbnail.svg
23:55:50.266 DEBUG Processed: source/css/back-to-top.css
23:55:50.266 DEBUG Processed: source/css/insight.css
23:55:50.267 DEBUG Processed: source/css/progressbar.css
23:55:50.267 DEBUG Processed: source/css/search.css
23:55:50.267 DEBUG Processed: source/css/style.styl
23:55:50.268 DEBUG Processed: source/js/animation.js
23:55:50.269 DEBUG Processed: source/js/back-to-top.js
23:55:50.269 DEBUG Processed: source/js/clipboard.js
23:55:50.269 DEBUG Processed: source/js/gallery.js
23:55:50.270 DEBUG Processed: source/js/insight.js
23:55:50.270 DEBUG Processed: source/js/main.js
23:55:50.305 DEBUG Processed: layout/archive.ejs
23:55:50.305 DEBUG Processed: layout/categories.ejs
23:55:50.306 DEBUG Processed: layout/category.ejs
23:55:50.306 DEBUG Processed: layout/index.ejs
23:55:50.306 DEBUG Processed: layout/layout.ejs
23:55:50.306 DEBUG Processed: layout/page.ejs
23:55:50.313 DEBUG Processed: languages/de-AT.yml
23:55:50.313 DEBUG Processed: languages/fr.yml
23:55:50.313 DEBUG Processed: languages/es.yml
23:55:50.314 DEBUG Processed: languages/en.yml
23:55:50.314 DEBUG Processed: languages/id.yml
23:55:50.315 DEBUG Processed: languages/ja.yml
23:55:50.315 DEBUG Processed: languages/ko.yml
23:55:50.315 DEBUG Processed: languages/pt-BR.yml
23:55:50.316 DEBUG Processed: languages/ru.yml
23:55:50.316 DEBUG Processed: languages/zh-CN.yml
23:55:50.316 DEBUG Processed: languages/tr.yml
23:55:50.316 DEBUG Processed: languages/vn.yml
23:55:50.317 DEBUG Processed: languages/zh-TW.yml
23:55:50.335 DEBUG Processed: layout/post.ejs
23:55:50.336 DEBUG Processed: layout/tag.ejs
23:55:50.336 DEBUG Processed: layout/tags.ejs
23:55:50.362 DEBUG Processed: layout/comment/changyan.ejs
23:55:50.363 DEBUG Processed: layout/comment/disqus.ejs
23:55:50.363 DEBUG Processed: layout/comment/facebook.ejs
23:55:50.363 DEBUG Processed: layout/comment/gitalk.ejs
23:55:50.363 DEBUG Processed: layout/comment/livere.ejs
23:55:50.363 DEBUG Processed: layout/comment/isso.ejs
23:55:50.363 DEBUG Processed: layout/comment/gitment.ejs
23:55:50.363 DEBUG Processed: layout/comment/valine.ejs
23:55:50.364 DEBUG Processed: layout/common/head.ejs
23:55:50.364 DEBUG Processed: layout/common/footer.ejs
23:55:50.364 DEBUG Processed: layout/common/article.ejs
23:55:50.365 DEBUG Processed: layout/common/navbar.ejs
23:55:50.365 DEBUG Processed: layout/common/widget.ejs
23:55:50.365 DEBUG Processed: layout/common/paginator.ejs
23:55:50.365 DEBUG Processed: layout/common/scripts.ejs
23:55:50.365 DEBUG Processed: layout/donate/alipay.ejs
23:55:50.365 DEBUG Processed: layout/donate/paypal.ejs
23:55:50.366 DEBUG Processed: layout/donate/patreon.ejs
23:55:50.366 DEBUG Processed: layout/donate/wechat.ejs
23:55:50.366 DEBUG Processed: layout/plugin/baidu-analytics.ejs
23:55:50.366 DEBUG Processed: layout/plugin/animejs.ejs
23:55:50.366 DEBUG Processed: layout/plugin/back-to-top.ejs
23:55:50.366 DEBUG Processed: layout/plugin/busuanzi.ejs
23:55:50.384 DEBUG Processed: layout/plugin/clipboard.ejs
23:55:50.384 DEBUG Processed: layout/plugin/mathjax.ejs
23:55:50.384 DEBUG Processed: layout/plugin/progressbar.ejs
23:55:50.384 DEBUG Processed: layout/plugin/outdated-browser.ejs
23:55:50.385 DEBUG Processed: layout/plugin/hotjar.ejs
23:55:50.385 DEBUG Processed: layout/search/baidu.ejs
23:55:50.385 DEBUG Processed: layout/search/google-cse.ejs
23:55:50.385 DEBUG Processed: layout/search/insight.ejs
23:55:50.385 DEBUG Processed: layout/share/addthis.ejs
23:55:50.385 DEBUG Processed: layout/share/sharejs.ejs
23:55:50.385 DEBUG Processed: layout/share/bdshare.ejs
23:55:50.385 DEBUG Processed: layout/share/sharethis.ejs
23:55:50.385 DEBUG Processed: layout/share/addtoany.ejs
23:55:50.385 DEBUG Processed: layout/widget/links.ejs
23:55:50.385 DEBUG Processed: layout/widget/archive.ejs
23:55:50.386 DEBUG Processed: layout/widget/profile.ejs
23:55:50.386 DEBUG Processed: layout/widget/category.ejs
23:55:50.386 DEBUG Processed: layout/widget/tag.ejs
23:55:50.386 DEBUG Processed: layout/widget/recent_posts.ejs
23:55:50.386 DEBUG Processed: layout/widget/tagcloud.ejs
23:55:50.386 DEBUG Processed: layout/widget/toc.ejs
23:55:50.386 DEBUG Processed: layout/plugin/google-analytics.ejs
23:55:50.386 DEBUG Processed: layout/plugin/gallery.ejs
23:55:50.535 DEBUG Generator: page
23:55:50.535 DEBUG Generator: post
23:55:50.535 DEBUG Generator: archive
23:55:50.535 DEBUG Generator: category
23:55:50.535 DEBUG Generator: index
23:55:50.535 DEBUG Generator: page-i18n
23:55:50.536 DEBUG Generator: post-i18n
23:55:50.536 DEBUG i18n for generator: index
23:55:50.536 DEBUG i18n for generator: archive
23:55:50.536 DEBUG i18n for generator: category
23:55:50.536 DEBUG i18n for generator: categories
23:55:50.536 DEBUG Generator: other-i18n
23:55:50.536 DEBUG Generator: tag
23:55:50.536 DEBUG Generator: categories
23:55:50.537 DEBUG Generator: tags
23:55:50.537 DEBUG Generator: insight
Unhandled rejection TypeError: expecting an array or an iterable object but got [object Null]
    at apiRejection (/data/blog/node_modules/bluebird/js/release/promise.js:10:27)                    
    at ReductionPromiseArray.init (/data/blog/node_modules/bluebird/js/release/promise_array.js:63:19)
    at Promise._settlePromise (/data/blog/node_modules/bluebird/js/release/promise.js:571:21)         
    at Promise._settlePromise0 (/data/blog/node_modules/bluebird/js/release/promise.js:619:10)        
    at Promise._settlePromises (/data/blog/node_modules/bluebird/js/release/promise.js:699:18)        
    at _drainQueueStep (/data/blog/node_modules/bluebird/js/release/async.js:138:12)                  
    at _drainQueue (/data/blog/node_modules/bluebird/js/release/async.js:131:9)                       
    at Async._drainQueues (/data/blog/node_modules/bluebird/js/release/async.js:147:5)                
    at Immediate.Async.drainQueues [as _onImmediate] (/data/blog/node_modules/bluebird/js/release/async.js:17:14)                                                                                           
    at processImmediate (internal/timers.js:439:21)                                                   

23:55:50.544 DEBUG Generator: asset
23:55:50.561 DEBUG Rendering HTML page: about/index.html
23:55:50.582 DEBUG Rendering HTML page: de-AT/about/index.html
23:55:50.585 DEBUG Rendering HTML post: de-AT/2019/07/28/Endlich-Online/index.html
23:55:50.605 DEBUG Rendering HTML post: en/2019/07/28/Finally-Online/index.html
23:55:50.614 DEBUG Rendering HTML post: de-AT/2019/07/19/Hello-World/index.html
23:55:50.619 DEBUG Rendering HTML post: en/2019/07/19/Hello-World/index.html
23:55:50.621 DEBUG Rendering HTML archive: archives/index.html
23:55:50.623 DEBUG Rendering HTML archive: archives/2019/index.html
23:55:50.624 DEBUG Rendering HTML archive: archives/2019/07/index.html
23:55:50.625 DEBUG Rendering HTML index: index.html
23:55:50.628 DEBUG Rendering HTML index: de-AT/index.html
23:55:50.633 DEBUG Rendering HTML archive: de-AT/archives/index.html
23:55:50.634 DEBUG Rendering HTML archive: de-AT/archives/2019/index.html
23:55:50.635 DEBUG Rendering HTML archive: de-AT/archives/2019/07/index.html
23:55:50.636 DEBUG Rendering HTML categories: categories/index.html
23:55:50.638 DEBUG Rendering HTML tags: tags/index.html
23:55:51.694 INFO  Files loaded in 1.7 s
23:55:51.733 INFO  0 files generated in 39 ms
23:55:51.740 DEBUG Database saved
/data/blog $ hexo generate --debug
23:56:11.932 DEBUG Writing database to /data/blog/db.json
23:56:11.969 DEBUG Hexo version: 3.9.0
23:56:11.970 DEBUG Working directory: /data/blog/
23:56:12.034 DEBUG Config loaded: /data/blog/_config.yml
23:56:12.116 DEBUG Plugin loaded: hexo-admin
23:56:12.215 DEBUG Plugin loaded: hexo-cookieconsent
23:56:12.216 DEBUG Plugin loaded: hexo-deployer-git
23:56:12.218 DEBUG Plugin loaded: hexo-generator-archive
23:56:12.219 DEBUG Plugin loaded: hexo-generator-category
23:56:12.220 DEBUG Plugin loaded: hexo-generator-index
23:56:12.222 DEBUG Plugin loaded: hexo-generator-tag
registering i18n
23:56:12.224 DEBUG Plugin loaded: hexo-generator-i18n
23:56:12.230 DEBUG Plugin loaded: hexo-renderer-ejs
23:56:12.239 DEBUG Plugin loaded: hexo-renderer-marked
23:56:12.240 DEBUG Plugin loaded: hexo-renderer-stylus
23:56:12.280 DEBUG Plugin loaded: hexo-server
INFO  =======================================
 ██╗ ██████╗ █████╗ ██████╗ ██╗   ██╗███████╗
 ██║██╔════╝██╔══██╗██╔══██╗██║   ██║██╔════╝
 ██║██║     ███████║██████╔╝██║   ██║███████╗
 ██║██║     ██╔══██║██╔══██╗██║   ██║╚════██║
 ██║╚██████╗██║  ██║██║  ██║╚██████╔╝███████║
 ╚═╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝ ╚══════╝
=============================================
INFO  Checking dependencies
INFO  Validating the configuration file
23:56:12.341 DEBUG Script loaded: themes/icarus/scripts/index.js
23:56:12.342 DEBUG Loading database.
23:56:12.488 INFO  Start processing
23:56:12.575 DEBUG Processed: _data/languages.yml
23:56:12.575 DEBUG Processed: _posts/Endlich-Online.md
23:56:12.575 DEBUG Processed: _posts/Finally-Online.md
23:56:12.576 DEBUG Processed: about/index.md
23:56:12.651 DEBUG Processed: _posts/en/Hello-World.md
23:56:12.651 DEBUG Processed: _posts/de-AT/Hello-World.md
23:56:12.651 DEBUG Processed: de-AT/about/index.md
23:56:12.665 DEBUG Theme config loaded.
23:56:12.673 DEBUG Processed: _config.yml
23:56:12.673 DEBUG Processed: source/css/back-to-top.css
23:56:12.673 DEBUG Processed: source/css/progressbar.css
23:56:12.674 DEBUG Processed: source/css/insight.css
23:56:12.674 DEBUG Processed: source/css/search.css
23:56:12.674 DEBUG Processed: source/images/avatar.png
23:56:12.675 DEBUG Processed: source/images/blog-logo.png
23:56:12.675 DEBUG Processed: source/images/favicon.svg
23:56:12.675 DEBUG Processed: source/images/logo.svg
23:56:12.675 DEBUG Processed: source/images/thumbnail.svg
23:56:12.676 DEBUG Processed: source/images/og_image.png
23:56:12.676 DEBUG Processed: source/js/animation.js
23:56:12.677 DEBUG Processed: source/js/back-to-top.js
23:56:12.677 DEBUG Processed: source/js/gallery.js
23:56:12.678 DEBUG Processed: source/js/clipboard.js
23:56:12.678 DEBUG Processed: source/js/insight.js
23:56:12.678 DEBUG Processed: source/js/main.js
23:56:12.679 DEBUG Processed: source/css/style.styl
23:56:12.705 DEBUG Processed: layout/archive.ejs
23:56:12.707 DEBUG Processed: layout/category.ejs
23:56:12.707 DEBUG Processed: layout/index.ejs
23:56:12.707 DEBUG Processed: layout/layout.ejs
23:56:12.708 DEBUG Processed: layout/categories.ejs
23:56:12.708 DEBUG Processed: layout/page.ejs
23:56:12.708 DEBUG Processed: layout/post.ejs
23:56:12.735 DEBUG Processed: languages/de-AT.yml
23:56:12.736 DEBUG Processed: languages/en.yml
23:56:12.736 DEBUG Processed: languages/es.yml
23:56:12.736 DEBUG Processed: languages/fr.yml
23:56:12.736 DEBUG Processed: languages/ja.yml
23:56:12.737 DEBUG Processed: languages/id.yml
23:56:12.737 DEBUG Processed: languages/pt-BR.yml
23:56:12.737 DEBUG Processed: languages/vn.yml
23:56:12.737 DEBUG Processed: languages/tr.yml
23:56:12.737 DEBUG Processed: languages/ko.yml
23:56:12.738 DEBUG Processed: languages/ru.yml
23:56:12.738 DEBUG Processed: languages/zh-CN.yml
23:56:12.738 DEBUG Processed: languages/zh-TW.yml
23:56:12.753 DEBUG Processed: layout/tag.ejs
23:56:12.753 DEBUG Processed: layout/tags.ejs
23:56:12.768 DEBUG Processed: layout/common/article.ejs
23:56:12.769 DEBUG Processed: layout/common/footer.ejs
23:56:12.769 DEBUG Processed: layout/common/head.ejs
23:56:12.769 DEBUG Processed: layout/common/navbar.ejs
23:56:12.769 DEBUG Processed: layout/common/scripts.ejs
23:56:12.770 DEBUG Processed: layout/common/paginator.ejs
23:56:12.770 DEBUG Processed: layout/comment/changyan.ejs
23:56:12.770 DEBUG Processed: layout/common/widget.ejs
23:56:12.770 DEBUG Processed: layout/comment/gitalk.ejs
23:56:12.770 DEBUG Processed: layout/comment/disqus.ejs
23:56:12.770 DEBUG Processed: layout/comment/gitment.ejs
23:56:12.771 DEBUG Processed: layout/comment/facebook.ejs
23:56:12.771 DEBUG Processed: layout/comment/isso.ejs
23:56:12.771 DEBUG Processed: layout/comment/livere.ejs
23:56:12.771 DEBUG Processed: layout/comment/valine.ejs
23:56:12.771 DEBUG Processed: layout/donate/patreon.ejs
23:56:12.771 DEBUG Processed: layout/donate/paypal.ejs
23:56:12.771 DEBUG Processed: layout/donate/wechat.ejs
23:56:12.771 DEBUG Processed: layout/donate/alipay.ejs
23:56:12.772 DEBUG Processed: layout/plugin/animejs.ejs
23:56:12.772 DEBUG Processed: layout/plugin/back-to-top.ejs
23:56:12.772 DEBUG Processed: layout/plugin/baidu-analytics.ejs
23:56:12.782 DEBUG Processed: layout/plugin/google-analytics.ejs
23:56:12.782 DEBUG Processed: layout/plugin/busuanzi.ejs
23:56:12.782 DEBUG Processed: layout/plugin/hotjar.ejs
23:56:12.782 DEBUG Processed: layout/plugin/outdated-browser.ejs
23:56:12.782 DEBUG Processed: layout/plugin/progressbar.ejs
23:56:12.783 DEBUG Processed: layout/search/baidu.ejs
23:56:12.783 DEBUG Processed: layout/plugin/clipboard.ejs
23:56:12.783 DEBUG Processed: layout/search/google-cse.ejs
23:56:12.783 DEBUG Processed: layout/search/insight.ejs
23:56:12.783 DEBUG Processed: layout/share/addtoany.ejs
23:56:12.783 DEBUG Processed: layout/share/addthis.ejs
23:56:12.783 DEBUG Processed: layout/share/bdshare.ejs
23:56:12.783 DEBUG Processed: layout/share/sharethis.ejs
23:56:12.783 DEBUG Processed: layout/share/sharejs.ejs
23:56:12.783 DEBUG Processed: layout/widget/links.ejs
23:56:12.783 DEBUG Processed: layout/widget/category.ejs
23:56:12.783 DEBUG Processed: layout/widget/archive.ejs
23:56:12.783 DEBUG Processed: layout/widget/profile.ejs
23:56:12.784 DEBUG Processed: layout/widget/tag.ejs
23:56:12.784 DEBUG Processed: layout/widget/recent_posts.ejs
23:56:12.784 DEBUG Processed: layout/widget/tagcloud.ejs
23:56:12.784 DEBUG Processed: layout/plugin/mathjax.ejs
23:56:12.784 DEBUG Processed: layout/widget/toc.ejs
23:56:12.784 DEBUG Processed: layout/plugin/gallery.ejs
23:56:12.921 DEBUG Generator: page
23:56:12.922 DEBUG Generator: post
23:56:12.922 DEBUG Generator: archive
23:56:12.922 DEBUG Generator: category
23:56:12.922 DEBUG Generator: index
23:56:12.922 DEBUG Generator: tag
23:56:12.922 DEBUG Generator: page-i18n
23:56:12.922 DEBUG Generator: post-i18n
23:56:12.922 DEBUG i18n for generator: index
23:56:12.922 DEBUG i18n for generator: archive
23:56:12.922 DEBUG i18n for generator: category
23:56:12.922 DEBUG i18n for generator: tag
23:56:12.923 DEBUG Generator: other-i18n
23:56:12.923 DEBUG Generator: categories
23:56:12.923 DEBUG Generator: tags
23:56:12.923 DEBUG Generator: insight
23:56:12.924 DEBUG Generator: asset
23:56:12.930 DEBUG Rendering HTML page: about/index.html
23:56:12.944 DEBUG Rendering HTML page: de-AT/about/index.html
23:56:12.950 DEBUG Rendering HTML post: de-AT/2019/07/28/Endlich-Online/index.html
23:56:12.966 DEBUG Rendering HTML post: en/2019/07/28/Finally-Online/index.html
23:56:12.973 DEBUG Rendering HTML post: de-AT/2019/07/19/Hello-World/index.html
23:56:12.976 DEBUG Rendering HTML post: en/2019/07/19/Hello-World/index.html
23:56:12.979 DEBUG Rendering HTML archive: archives/index.html
23:56:12.980 DEBUG Rendering HTML archive: archives/2019/index.html
23:56:12.981 DEBUG Rendering HTML archive: archives/2019/07/index.html
23:56:12.982 DEBUG Rendering HTML index: index.html
23:56:12.988 DEBUG Rendering HTML index: de-AT/index.html
23:56:12.991 DEBUG Rendering HTML archive: de-AT/archives/index.html
23:56:12.992 DEBUG Rendering HTML archive: de-AT/archives/2019/index.html
23:56:12.993 DEBUG Rendering HTML archive: de-AT/archives/2019/07/index.html
23:56:12.994 DEBUG Rendering HTML categories: categories/index.html
23:56:12.995 DEBUG Rendering HTML tags: tags/index.html
23:56:13.904 INFO  Files loaded in 1.56 s
23:56:13.937 INFO  0 files generated in 33 ms
23:56:13.944 DEBUG Database saved
seaoak commented 5 years ago

Only to "fix" the order of calling of "generators", add .sort() into lib/hexo/index.js of hexo.

diff --git a/lib/hexo/index.js b/lib/hexo/index.js
index b181db1..d941c6a 100644
--- a/lib/hexo/index.js
+++ b/lib/hexo/index.js
@@ -326,7 +326,7 @@ Hexo.prototype._runGenerators = function() {
   const { log } = this;

   // Run generators
-  return Promise.map(Object.keys(generators), key => {
+  return Promise.map(Object.keys(generators).sort(), key => {
     const generator = generators[key];

     return Reflect.apply(generator, this, [siteLocals]).then(data => {

Of course, this is quite HACKY!

By specification of JavaScript, the order of the return value of Object.keys() is unpredictable. So it might seem random.

Basically, I think that any "generator" should not depend on the order of calling. So I think this hack will not be promoted to a Pull Request.

@twatzl Could you try to debug your generator with this hack?

twatzl commented 5 years ago

Sorry. I migrated my blog to the hugo software since opening this issue, since it has native support for multi language blogs.

I have not written that generator, but from what I remember it relied on all other content being generated first and then would create multiple versions of the blog for each language by replacing some placeholders.