Skip to content
Multi-languages generator for hexo.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib fixed child root solution Jan 22, 2017
.gitignore Initial commit May 25, 2016
.npmignore init commit May 27, 2016
.travis.yml Update .travis.yml Sep 6, 2016
LICENSE Initial commit May 25, 2016 Update Mar 14, 2019 update readme Sep 7, 2016
index.js add default config Aug 25, 2016
package.json Revert version to 0.0.6 Jan 22, 2017


Build Status node npm downloads npm version GitHub release

Multi-languages pages generator for Hexo. Here is a demo


$ npm install hexo-generator-i18n --save



# hexo default is empty, change to exact languages, and add xx.yml under your theme languages dir.
language: [zh,en]
# config hexo-generator-i18n option (optional, this is default option)
  type: [page, post]
  generator: [index, archive, category, tag]
  • type: What type of model to be i18n generated
  • page: All page model under source
  • post: All post model under source/_post
  • generator: Which generator to be i18n generated, it's array of your installed generator names.
  • index: Generate i18n index page
  • archive: Generate i18n archive page
  • category: Generate i18n category page
  • tag: Generate i18n tag page

And add xx.yml (such as zh.yml, en.yml) under your themes languages directory

Set language display name in source/_data/languages.yml (Optional)

zh: 简体中文
en: English


Make sure this plugin after other generators in dependencies of package.json


You may need to replace url_for() to url_for_lang() to output link under current language. Usually, in post/archive/tag/category pages.



Return array of config languages, exclude default language


Return default language, it's the first element of get_langs


Return the absolute url under lang

window.location = {{ switch_lang('en')}}


Return url for path with language

  ret += '<ul class="list-group">';{
    ret += '<li class="list-group-item"><a href="' + _self.url_for_lang(item.path) + '">' + + '</a></li>';
  ret += '</ul>';



You can’t perform that action at this time.