# Configuring model level localization

**URL:** <https://community.omni.co/t/configuring-model-level-localization/345>\
**Category:** Patterns\
**Created:** [June 19, 2025, 3:24pm UTC](https://community.omni.co/t/configuring-model-level-localization/345 "2025-06-19T15:24:50Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jack](https://yyz2.discourse-cdn.com/flex004/user_avatar/community.omni.co/jack/32/14_2.png) [@jack](https://community.omni.co/u/jack)\
**Post date:** [June 19, 2025, 3:24pm UTC](https://community.omni.co/t/configuring-model-level-localization/345/1 "2025-06-19T15:24:50Z")

</div>

# Model Level Localization

There are many components to localization in Omni, but a core component is localizing the field labels, descriptions, and other parameters that exist in your database to be more UI friendly for those who aren’t as familiar with the language your database is stored in. These same tactics can be used to generalize this out to any model concept, such as [topic](https://docs.omni.co/docs/modeling/topics/parameters) or [view](https://docs.omni.co/docs/modeling/views) parameters as well.

This guide will show how we can use extension models to localize in this way, allowing your users a better building and consuming experience in Omni.

You can learn more about extension models [here](https://community.omni.co/t/embedding-custom-fields-eav-key-value-json-custom-fields-per-customer/339) in an article from Russ on a similar use case.

## Video Overview

https://www.loom.com/embed/df4e458431cd44d1bcdf5cf4c115b266?sid=6fe5f4f0-e664-4fae-9770-ad19429f94a3

## Step by Step flow

1. We’ll need to create a user attribute in your Omni environment, which you can do by going to Settings \> Attributes \> New Attribute. This piece of metadata for each user that logs in to Omni allows for the system to knows which language we should translate to. In the recording, this was the `language` attribute.

 ![Screenshot 2025-06-19 at 8.34.36 AM](https://canada1.discourse-cdn.com/flex004/uploads/omni/original/1X/762ee88df769770629432baba6c7d4862d1bc6d3.png)

1. We’ll need to add the below snippet of code to your shared model’s model file, and update the mappings with the languages you want to include

 ![Screenshot 2025-06-19 at 8.35.28 AM](https://canada1.discourse-cdn.com/flex004/uploads/omni/original/1X/4f35a3d11791139c553098cfa4cf7a25331046fc.png)

**Example code in Model file**

```auto
dynamic_shared_extensions:
  - user_attribute: language
     mappings:
       Spanish: # Needs to match the name of the Shared extension created in step 3
         values_for_model: [es] # Needs to match the value passed to Omni as a user attribute during the embed URL generation
       French: # Needs to match the name of the Shared extension created in step 3
         values_for_model: [fr, french] # Needs to match the value passed to Omni as a user attribute during the embed URL generation

```

**Note: The `values_for_model` will be the user attribute values that the system will search for when a user logs in, so these will need to match exactly**

1. From the shared model under the `model` menu bar, we’ll want to select `New shared extension...`

- You’ll need one of these for each language. This is where I created Spanish and French in my recording. FYI that it is case sensitive
- The value you put in here will need to match whatever you put for the languages under `mappings`

 ![Screenshot 2025-06-19 at 8.37.01 AM](https://canada1.discourse-cdn.com/flex004/uploads/omni/original/1X/2fe632b12f97d484a58ada2f08596be6d289b60a.png)

- These extensions can later be accessed under the `Develop` menu accessible from the homepage under the `Extensions` drop down.  
 ![Screenshot 2025-06-19 at 8.37.35 AM](https://canada1.discourse-cdn.com/flex004/uploads/omni/original/1X/9000b9820d30327cd76e271eaadbe1faff19376b.png)

1. In each shared model extension, you will now be able to adjust the values of the `label` parameter to adjust to the given language’s translation on each field you want to have localized. You can also add translated `description` parameters as well for a more complete experience.

 ![Screenshot 2025-06-19 at 8.39.26 AM](https://canada1.discourse-cdn.com/flex004/uploads/omni/original/1X/2937783cd97ad673735ed79bd672c0d7e3b0ac41.png)

If you have users who are building in the workbook, you can also localize for any [dimension](https://docs.omni.co/docs/modeling/dimensions) or [measure](https://docs.omni.co/docs/modeling/measures) parameters such as `group_label`. The same applies to other model parameters beyond views as well.

---

<div class="post-metadata">

**Author:** ![leonardobossi](https://avatars.discourse-cdn.com/v4/letter/l/0ea827/32.png) [@leonardobossi](https://community.omni.co/u/leonardobossi)\
**Post date:** [September 17, 2025, 7:32pm UTC](https://community.omni.co/t/configuring-model-level-localization/345/2 "2025-09-17T19:32:33Z")

</div>

@jack very helpful, however the “New shared extension” option isn’t showing up for me. Anything specific that has to be enabled in our instance?

---

<div class="post-metadata">

**Author:** ![cade](https://avatars.discourse-cdn.com/v4/letter/c/fbc32d/32.png) [@cade](https://community.omni.co/u/cade)\
**Post date:** [September 17, 2025, 7:36pm UTC](https://community.omni.co/t/configuring-model-level-localization/345/3 "2025-09-17T19:36:19Z")

</div>

Hey @leonardobossi this feature is behind a feature flag, to use this we would have to flip that on 🙂
