Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Binh Nguyen Thi
Apr 4, 2019
  1808
(4 votes)

Workaround for supporting multilingual promotion

Did you use to be bored with old marketing system? The performance when running the old promotion engine or customizing a promotion used to be a big problem. But since the new marketing system was launched, the hard time has been ended.

But one good day, you have a customer request that we need to show our promotion name/description in the front view by multiple different languages. For example: there are 2 available languages in our site are English and Sweden.

How to do that?

We are aware that we could not do that with OOTB's Episerver until now. Although discount data has already been based on IContent but it has some limitations compared to other Episerver content like pages, blocks or catalog contents.

So is there any way to workaround with this requirement?

The answer here is YES but it is not simple way. Here is my way:

1. Install package EPiServer.VisitorGroupsCriteriaPack. We will use SelectedLanguage criterion for filtering promotions based on the current language

2. Setup 2 visitor groups for English and Sweden

3. Create 2 different campaigns for these two languages and appropriated promotions in these campaigns

4. Modiy MarketContentLoader class in QuickSilver sample code a bit to see proper promotions based on the current language in the home page: Using CampaignVisitorGroupFilter to filter campaign based on visitor group

 private readonly CampaignVisitorGroupFilter _campaignVisitorGroupFilter;
public virtual IList<PromotionData> GetEvaluablePromotionsInPriorityOrderForMarket(IMarket market)
{
   var result = _campaignVisitorGroupFilter.Filter(
                new PromotionFilterContext(GetPromotions().Where(x => IsValid(x, market)),
                    RequestFulfillmentStatus.All));
   return result.IncludedPromotions.OrderBy(x => x.Priority).ToList();
}

5. Finally, let's see the result in the front view

  • In English

  • In Sweden

Apr 04, 2019

Comments

Please login to comment.
Latest blogs
TinyMCE 7 editor upgrade

Today we released a new version of the TinyMCE editor. The EPiServer.CMS.TinyMce 5.0.0 package includes integration with the latest version of the ...

Grzegorz Wiecheć | Apr 1, 2025

How to Reset or Complete a Stuck Optimizely DXP Integration Deployment using the Optimizely Deployment API

If you’ve deployed to Optimizely’s Integration environment without specifying the DirectDeploy parameter in your PowerShell command, your deploymen...

Johnny Mullaney | Mar 31, 2025 |

Transitioning to Application Insights Connection Strings: Essential Insights for Optimizely CMS

Transitioning to Application Insights Connection Strings: Essential Insights for Optimizely CMS As part of Microsoft's ongoing modernization effort...

Stefan Johansson | Mar 27, 2025

Save The Date - London 2025 Summer Meetup

Following last years very succesful meetup in London July 2024 https://world.optimizely.com/blogs/scott-reed/dates/2024/7/optimizely-london-dev-mee...

Scott Reed | Mar 25, 2025

Revalidate Page in Next.js after Publishing Content in Headless Optimizely PaaS CMS.

Headless CMS implementations are becoming increasingly popular. In this approach, the CMS and the front-end application are decoupled and can use...

Tomek Juranek | Mar 25, 2025

Getting 404 when expecting 401

A short story about the mysterious behavior of an API in headless architecture.

Damian Smutek | Mar 25, 2025 |