Multi-Language Sites

The recommended method is to have your default language at the top level and make separate branches for your alternate languages like this:

/about
/services
/contact
/es/about
/es/services
/es/contact
/fr/about
/fr/services
/fr/contact

You can then use the nav_sub tag and either the start_from or exclude_status parameters. When using exclude_status you can assign statuses by language to control the output.

Example nav_sub code:


		{if segment_1  'es' OR segment_1  'fr'}
			{!-- START FROM SEGMENT 2 IF NOT DEFAULT LANGUAGE --}
			{exp:structure:nav_sub start_from='/{segment_1}/{segment_2}'}
		{if:else}
			{!-- START FROM SEGMENT 1 IF DEFAULT LANGUAGE --}
			{exp:structure:nav_sub start_from='/{segment_1}'}
		{/if}
		

This method does not require different custom fields per language as they’re all separate pages powered by the same code and quite often the same templates.