Upgrade custom multilingual code

Overview

Sitefinity CMS 13.1 has introduced changes to its Native API for working with multilingual content. The previous multilingual APIs are deprecated and no longer work, starting with Sitefinity CMS 13.1.

In this article, you learn how to migrate your existing code to the new APIs.

APIs for working with current context language for Sitefinity CMS sites

You can use the following APIs starting with Sitefinity 13.1:

  • To change the current language for a specific part of your code, use the CultureRegion class, as shown below.
  • To get or set the current language for the current request, use the SystemManager.CurrentContext.Culture property.
    The value set or returned is valid only for the current request.
  • An exception is thrown if your code attempt to use a language that does not exist in the basic settings (to access them, navigate to Administration » Settings » Languages).

Sample

The following code shows how to use the new CultureRegion code to set a specific culture/language for a part of your code.

Create News Item

All languages and default language APIs: Sitefinity 13.0 and below

IMPORTANT: The following are breaking changes starting with Sitefinity 13.1:

  • Setting the CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture, Thread.CurrentUICulture, or Thread.CurrentCulture no longer changes the current Sitefinity language.
    For example, the following code does not work:
    Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

The following APIs are deprecated, starting with Sitefinity 13.1. If you used them in your solution based on Sitefinity CMS version older than 13.1, substitute their usage with the new APIs described below:

Get all languages

To get all languages and default language for the current site, use one of the following: 

  • SystemManager.CurrentContext.AppSettings with the following properties
    • DefinedFrontendLanguages
    • DefaultFrontendLanguage
    • Multilingual
  • SystemManager.CurrentContext.CurrentSite with the following properties:
    • PublicContentCultures
    • DefaultCulture

Retrieve language information

To retrieve information for languages in Administration » Settings » Languages, use AppSettings.CurrentSettings with the following properties:

  • DefinedFrontendLanguages
  • DefaultFrontendLanguage 
  • Multilingual

All languages and default language API: Sitefinity 13.1 and above

The following APIs are available starting with Sitefinity CMS 13.1 and above and are the new alternatives to the above-described deprecated API. When upgrading to Sitefinity CMS version 13.1 and above, you need to rewrite your code to use the new API.

The SystemManager class is the single API entry point for getting information for the cultures and languages in Sitefinity CMS.

Get all languages

To get all languages and default language for the current site, use SystemManager.CurrentContext.CurrentSite with the following methods:

  • Cultures
    Lists all cultures and languages for the current Sitefinity site
  • DefaultCulture
    Lists the default cultures and language for the current Sitefinity site

Retrieve language information

To retrieve information for languages in Administration » Settings » Languages, use SystemManager.CurrentContext with the following methods:

  • SystemCultures
    Lists all available languages and cultures available in the whole system
  • DefaultSystemCulture

Check for multiple languages

To see if the current site has more than one language, use the following code: SystemManager.CurrentContext.CurrentSite.Cultures.Count() > 1

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?