# Mirroring menus, modules, footer and templates

Translated articles alone do not make a multilingual website: without its own menu items the target language cannot be navigated, language-bound modules are missing on the translated pages, and YOOtheme footers and templates only know the source language. The mirroring closes these gaps: each pass with a free preview, each repeatable, each skipping what already fits.

<div class="callout info" id="bkmrk-you-do-not-have-to-s">**You do not have to start them one by one.** The mirroring is part of **step 7**: the run first translates the articles and then appends the passes on its own, in the right order. Twins are only created for targets whose translation already exists — before that they would find nothing. This page describes what happens in each of them.

Where one part needs another pass later without repeating the whole run, the four sections are available individually under *Redo a single part* in step 7. All of them translate texts and therefore stand behind the same profile approval as the articles.

</div>## Menu mirroring

Creates menu twins per target language — for every menu item whose target (article or category) is already translated:

- Title and alias of the twin come from the translated content; for category menu items with their own menu title, that title gets translated.
- The twins are sorted into the source language's structure — the navigation of both languages looks the same.
- The home pages are put straight: the real home page becomes home per language, the stand-in home pages created during setup are retired.
- Mirrored source menu items set to language "All" switch to the source language.
- Menu items **without** a translatable target — sign-in, the member area, external links — also get a twin as of 0.17.0: same link, same type, translated title. Before that they stayed on "All" and therefore carried the same title in every language. Alias items whose target has no twin are the exception.
- On YOOtheme sites the customizer's menu settings (such as dropdown widths) are transferred to the twins.
- Finally the **link repair** runs: internal links in the translated articles are rewired to the translations, and meta addresses (JSitemap) are moved to the now-real routes.

## Menus per language

Distributes the menu items across **one menu per language** and creates a menu module for each. This is the structure Joomla itself demonstrates and the one YOOtheme Pro explicitly asks for on multilingual sites.

- One menu becomes several: `mainmenu-de-de`, `mainmenu-en-gb` and so on. The items are *moved*, not copied — associations, addresses and settings are kept.
- For every language and place of display, a menu module is created that shows exactly that language's menu.
- Only once **every** new module stands is the previous display switched off. If something fails before that, the old navigation stays in service.
- On YOOtheme sites the menu setting of the customizer position is detached — from then on the modules do the rendering. The customizer's previous state is backed up to a file in the log folder first.
- A menu that **no** module and no template position displays is left alone and named in the log.

**Order:** This pass belongs *after* the menu mirroring. It distributes the twins created there — run earlier, it would find nothing.

Nothing changes for visitors: the navigation looks the same in every language as before. What is gained is that each language's menu can now be shaped on its own.

## Module mirroring

Modules set to language "All" appear in every language anyway and stay untouched. Modules pinned to the source language would be missing on the translated pages — the analysis lists them, and the mirroring creates a translated twin per target language: title and content translated, position and visibility taken over, the page assignment switched to the menu twins. Module settings are copied unchanged.

The mirroring only creates; later changes to the source module do not travel into the twin automatically.

## Footer mirroring (YOOtheme only)

YOOtheme's footer builder knows no language variants. The way YOOtheme itself documents is builder modules in the `bottom` position, one per language — exactly what this step builds: the footer layout from the customizer is turned into one module per language, the texts translated, internal links rewired. Only once all modules stand is the customizer footer emptied; the old state is saved to a file beforehand.

## Template mirroring (YOOtheme only)

YOOtheme renders article detail pages through templates with assignment conditions — and those name the source language's categories. Translated articles therefore fell back to the plain default view. This step creates a copy of each template per target language: categories switched to the translated twins, labels translated, links rewired. Templates whose categories have no translation are skipped.

Without YOOtheme, footer and template mirroring simply report that there is nothing to do.

[Deutsche Fassung](https://docs.graup-it.de/link/273)