> ## Documentation Index
> Fetch the complete documentation index at: https://product-discovery.developer.voyado.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Multilingual markets

> Information on how to model and implement a market with multiple languages in Voyado Elevate.

Voyado Elevate offers native support for markets with multiple locales. This makes it possible to easily provide a similar user experience to all the visitors on the market, regardless of locale preference. When connecting several locales to a market, the site will use the same behavioral data regardless of the selected language of the visitor. This also allows for easier merchandising for retailers.

## Requirements

Each market corresponds to a specific set of SKUs made available for e-commerce. Multiple locales can be used to provide translations of SKU properties on a market. The exact same inventory must exist for all translations, meaning that the set of keys for product groups, products, and variants must be identical across all locales within a market. The structure within the [data feed](/docs/integration/data-feed/xml-format-specification) must also be the same between the locales, for example a product must belong to the same product group in all locales, and a variant must belong to the same product in all locales.

Content keys may differ for different locales in the same market. If there are 10 content items in one locale, there could be a different number of content items in another locale, in the same market. However, if you use the same content key, you must have the same content type.

In addition to the structural requirements, the following attributes (if used) must be equal in all locales:

| Element                                                                             | Attributes                                                                                                 |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [Product group](/docs/integration/data-feed/xml-format-specification#product-group) | `suppress_duplicates`                                                                                      |
| [Product](/docs/integration/data-feed/xml-format-specification#product)             | `color_override`, `color_default`, `release_date`, `rating`, `style_with`                                  |
| [Images](/docs/integration/data-feed/xml-format-specification#images)               | `type_default`, `type_override`, `width`, `tags`, `urls` (the combination and order of all url attributes) |
| [Variant](/docs/integration/data-feed/xml-format-specification#variant)             | `cost`, `list_price`, `selling_price`, `stock_number`                                                      |
| [Custom prices](/docs/integration/data-feed/xml-format-specification#custom-prices) | `id`, `list_price`, `selling_price`                                                                        |
| [Stores](/docs/integration/data-feed/xml-format-specification#stores)               | `key`, `stock_number`                                                                                      |
| [Content](/docs/integration/data-feed/xml-format-specification#content)             | `type`                                                                                                     |

Note that the `id` attributes for custom prices and the `key` attributes for stores must be the same for all locales.

Locales must be consistent at all times. If a new locale is to be added to a market, all products must be present in the import that introduces the new locale. In order to specify multiple locales in the same import, use multiple [modify tags](/docs/integration/data-feed/xml-format-specification#modify) with the same market key. The maximum number of locales per market is 5.

There is special support for [cross-locale attribute modifications](/docs/integration/data-feed/xml-format-specification#cross-locale-attribute-modifications), which update values for all locales in a market. They may only contain price, cost, and stock modifications on markets with multiple locales. The exact allowed attributes are `selling_price`, `list_price`, `cost`, and `stock_number`. This includes adding and changing those attributes for stores and custom prices.

Ordinary attribute modifications, where locale is specified, may contain any attribute. Please ensure that ordinary attribute modifications that include stock or price are repeated for each locale in the market, or the import will be rejected.

## Import example

The following example will add items to a site with the market set to `FI` and the locales set to `sv-SE` and `fi-FI`.

```xml title="Multilingual market file syntax example" icon="code" expandable theme={null}
<?xml version="1.0" encoding="UTF-8" ?>
<data_import type="full">
    <modify market="FI" locale="sv-SE">
        <product_groups>
            <add_or_replace>
                <product_group key="1001">
                    <brand>Gazelle</brand>
                    <department>Män</department>
                    <products>
                        <product key="1001-100">
                            <title>T-shirt i linne</title>
                            <url>/products/1001-100</url>
                            <release_date>2019-10-27T00:00:00Z</release_date>
                            <description>Randig T-shirt med lös passform med lite lägre halsringning.</description>
                            <images>
                                <image>
                                    <urls>
                                        <url>//cdn.example.com/images/1001-100_model.jpg?preset=200x200</url>
                                        <url>//cdn.example.com/images/1001-100_model.jpg?preset=600x600</url>
                                    </urls>
                                </image>
                                <image>
                                    <urls>
                                        <url>//cdn.example.com/images/1001-100_cutout.jpg?preset=200x200</url>
                                        <url>//cdn.example.com/images/1001-100_cutout.jpg?preset=600x600</url>
                                    </urls>
                                </image>
                            </images>
                            <custom_attributes>
                                <season>Sommar</season>
                                <style>Casual</style>
                                <category>T-Shirts</category>
                            </custom_attributes>
                            <variants>
                                <variant key="1001-100-1">
                                    <stock_number>12</stock_number>
                                    <selling_price>9.99</selling_price>
                                    <list_price>12.99</list_price>
                                    <cost>8.00</cost>
                                    <url>/products/sv/1001-100?size=liten</url>
                                    <sizes>
                                        <size>liten</size>
                                    </sizes>
                                </variant>
                                <variant key="1001-100-2">
                                    <stock_number>0</stock_number>
                                    <selling_price>9.99</selling_price>
                                    <list_price>12.99</list_price>
                                    <cost>8.00</cost>
                                    <url>/products/sv/1001-100?size=stor</url>
                                    <sizes>
                                        <size>stor</size>
                                    </sizes>
                                </variant>
                            </variants>
                        </product>
                    </products>
                </product_group>
            </add_or_replace>
        </product_groups>
        <content_items>
            <add_or_replace>
                <content key="871">
                    <type>link</type>
                    <title>Frakt</title>
                    <link>/fi/kundtjänst/frakt</link>
                </content>
                <content key="872">
                    <type>link</type>
                    <title>Kontakt</title>
                    <link>/fi/kontakt</link>
                </content>
            </add_or_replace>
        </content_items>
    </modify>
    <modify market="FI" locale="fi-FI">
        <product_groups>
            <add_or_replace>
                <product_group key="1001">
                    <brand>Gazelle</brand>
                    <department>Miehet</department>
                    <products>
                        <product key="1001-100">
                            <title>T-paita pellavaa</title>
                            <url>/products/1001-100</url>
                            <release_date>2019-10-27T00:00:00Z</release_date>
                            <description>Raidallinen T-paita löysällä mallilla, jossa hieman matalampi pääntie.</description>
                            <images>
                                <image>
                                    <urls>
                                        <url>//cdn.example.com/images/1001-100_model.jpg?preset=200x200</url>
                                        <url>//cdn.example.com/images/1001-100_model.jpg?preset=600x600</url>
                                    </urls>
                                </image>
                                <image>
                                    <urls>
                                        <url>//cdn.example.com/images/1001-100_cutout.jpg?preset=200x200</url>
                                        <url>//cdn.example.com/images/1001-100_cutout.jpg?preset=600x600</url>
                                    </urls>
                                </image>
                            </images>
                            <custom_attributes>
                                <season>Kesä</season>
                                <style>Casual</style>
                                <category>T-Shirts</category>
                            </custom_attributes>
                            <variants>
                                <variant key="1001-100-1">
                                    <stock_number>12</stock_number>
                                    <selling_price>9.99</selling_price>
                                    <list_price>12.99</list_price>
                                    <cost>8.00</cost>
                                    <url>/products/fi/1001-100?size=pieni</url>
                                    <sizes>
                                        <size>pieni</size>
                                    </sizes>
                                </variant>
                                <variant key="1001-100-2">
                                    <stock_number>0</stock_number>
                                    <selling_price>9.99</selling_price>
                                    <list_price>12.99</list_price>
                                    <cost>8.00</cost>
                                    <url>/products/fi/1001-100?size=lso</url>
                                    <sizes>
                                        <size>lso</size>
                                    </sizes>
                                </variant>
                            </variants>
                        </product>
                    </products>
                </product_group>
            </add_or_replace>
        </product_groups>
        <content_items>
            <add_or_replace>
                <content key="871">
                    <type>link</type>
                    <title>Laivaus</title>
                    <link>/fi/asiakaspalvelu/laivaus</link>
                </content>
                <content key="872">
                    <type>link</type>
                    <title>Yhteydenotot</title>
                    <link>/fi/yhteydenotot</link>
                </content>
            </add_or_replace>
        </content_items>
    </modify>
</data_import>
```

The following example attribute modification will lower the stock of the `1001-100-1` variant to 11.

```xml title="Attribute modification example with two locales" icon="code" expandable theme={null}
<?xml version="1.0" encoding="utf-8" ?>
<attribute_modification>
    <modify_attributes market="FI" locale="sv-SE">
        <variants>
            <variant key="1001-100-1">
                <stock_number>11</stock_number>
            </variant>
        </variants>
    </modify_attributes>
    <modify_attributes market="FI" locale="fi-FI">
        <variants>
            <variant key="1001-100-1">
                <stock_number>11</stock_number>
            </variant>
        </variants>
    </modify_attributes>
</attribute_modification>
```

The update above can also be expressed as a cross-locale attribute modification.

```xml title="Cross-locale attribute modification example" icon="code" theme={null}
<?xml version="1.0" encoding="utf-8" ?>
<attribute_modification>
    <modify_attributes market="FI">
        <variants>
            <variant key="1001-100-1">
                <stock_number>11</stock_number>
            </variant>
        </variants>
    </modify_attributes>
</attribute_modification>
```
