File structure and routing for multlilingual site

I am hoping to set up a multilingual site in Hugo and I’m looking for advice on how to best manage the files. I’ve done my best to study the docs, but I think I may need some help. I have two problems I’m trying to solve:

  1. I have some pages that need to exist in all locales (with translated content). Each has its own layout. For example, I might have and, which look identical apart from the text.

I believe the standard way to handle this would be like this?


and then I include url: "es/hola" in the frontmatter of I would rather be able to specify a slug of “hola” and have the “es/” part of the URL be inferred – is there any way to do that? Or is there a better way to handle this?

  1. I have some pages – let’s call them posts – that all use the same layout. Each locale will have its own posts (they won’t be translations of each other). The routes should look like and I can get this to work by putting everything in content/posts with either the or extension, but then my Spanish posts are called posts instead of entradas. What’s more, my posts will become very hard to manage if I have to put them all in the same folder – I’d really like to have them in separate folders per locale without messing up the routing. Is there any Hugo functionality that can help me with this, or do I just have to put my English posts in content/posts and my Spanish posts in content/es/posts and forget about translating “posts”?

Regarding point 1, if the filename before the language tag (or folder name in the case of a bundle), is the same, Hugo treats it as being linked.

I’m doing a site now, where Japanese is the main language, and English the secondary. I have:


… and it works. I did not have to specify url: in the frontmatter of any of these, nor even the slug.

I have a config.toml specifying defaultContentLanguage:

baseURL = ""
defaultContentLanguage = "ja"
languageCode = "ja-jp"
enableGitInfo = "true"
enableemoji = "false"

  post = "/:year/:month/:day/:slug/"
  page = "/:filename/"

    sitedescription = "blahblah"
    keywords = "blahblah"
    # various defaults …

  tag = "tags"

languageName = "日本語"
title = "XYZ部会"
weight = 1
author = "XYZ部会 事務局"

languageName = "English"
title = "XYZ Committee"
weight = 2
author = "XYZ Committee Office"

Yeah, I tried this method as well. I have many locales and many pages, so I’d prefer to group each page in its own folder if possible. I just wish that I could specify a slug for files. I was hoping there might be some other way to handle that…