Multilingual markets¶
Voyado Elevate offers native support for markets with multiple locales. This makes it possible to easily provide a similar user experiences 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, variants must be identical across all locales within a market. The structure within the data feed must also be the same between the locales, e.g. 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 | supress_duplicates |
Product | color_override , color_default , release_date , rating , style_with |
Images | type_default , type_override , width , tags , urls (the combination and order of all url attributes) |
Variant | cost , list_price , selling_price , stock_number |
Custom prices | id , list_price , selling_price |
Stores | key , stock_number |
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 with the same market key. The maximum number of locales per market is 5.
There is special support for 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 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
.
Multilingual market file syntax example
<?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.
Attribute modification example with two locales
<?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.
Cross-locale attribute modification example
<?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>