Persistence of multilingual fields

By default, multilingual items are persisted in split tables. Monolingual items are persisted in one database table. 

For items that are multilingual, the translations for the first 5 languages that you have added are persisted in the main table, while the translations for the rest of the languages are persisted in a separate table per language or language culture. This way, you avoid uncontrollable expansion of the main table that can, otherwise, reach the database limitation of maximum number of columns per table. The only exception is for the identifier of the type that is also a required field - for example, the Title. They are persisted in the main table for better performance. 

EXAMPLE: You have a multilingual site with 7 languages en, de, es, fr, pt, fin, and swe. The first 5 languages are automatically added in the main table. The last 2 are persisted is split tables. Only their identifier fields are added in the main table. When a product is persisted in the database, the following fields are generated in three different database tables: 
  • sf_products
    • id
    • Title_ - translation for English (the default system language)
    • Description_ - translation for English (the default system language)
    • Title_de  - translation for German
    • Description_de - translation for German
    • Title_es - translation for Spanish
    • Description_es - translation for Spanish
    • Title_fr - translation for French
    • Description_fr - translation for French
    • Title_pt - translation for Portuguese
    • Description_pt - translation for Portuguese
    • Title_fin - translation for Finnish
    • Title_swe - translation for Swedish
  • sf_products_fin - translation for Finnish
    • id
    • Description_fin
  • sf_products_swe - translations for Swedish
    • id
    • Description_swe
EXAMPLE: For items that do not have translations, only one table is generated - sf_products with the following fields:
  • id
  • Title_
  • Description_

Control which languages are persisted in split tables

In addition to the first 5 languages and cultures that are automatically added in the main table and are not persisted in split tables, you can persist more languages in the main table.

To do this, perform the following:

  1. In Sitefinity CMS backend, navigate to Administration » Settings » Advanced.
  2. In the left pane, select Data » Database mapping options.
  3. In Languages and cultures not persisted in split tables field, enter in a comma-separated list of the languages or language cultures that you do not want to be persisted in split tables.
  4. Save your changes.

IMPORTANT: Do not delete any of the automatically added languages or cultures. These are the first 5 languages that you have added to the website.

RECOMMENDATION: For performance considerations, we do not recommend persisting more than 10 languages in the main table.

Increase your Sitefinity skills by signing up for our free trainings. Get Sitefinity-certified at Progress Education Community to boost your credentials.

Web Security for Sitefinity Administrators

The free standalone Web Security lesson teaches administrators how to protect your websites and Sitefinity instance from external threats. Learn to configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.

Foundations of Sitefinity ASP.NET Core Development

The free on-demand video course teaches developers how to use Sitefinity .NET Core and leverage its decoupled architecture and new way of coding against the platform.

Was this article helpful?