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.