November Happy Hour will be moved to Thursday December 5th.

Mari Jørgensen
Jun 15, 2010
  7645
(1 votes)

Changes to the Advanced Language Manipulation Tool

Ever had trouble with SearchDataSource on a migrated site where you have changed the master language? Well, you're not the only one.

Changing master language using a tool like Advanced Language Manipulation Tool will not affect the fkLanguangeBranchID in the tblKeyword table. That is why you might get "Object reference not set to an instance of an object" when trying to search using the SearchDataSource control (due to the page security check in the public TextSearchResults SearchPages(), the page will be null and an unhandled exception is thrown). 

A colleague of mine, Øyvind, found a tool for rebuilding the keyword index ("hidden" as an FAQ).

epilangmodule
To save all of you some trouble, I've extended the Advanced Language Tool to include rebuild index support.

The tool is easy to install, just download the .epimodule file and install it using EPiServer Deployment Center.

For source code, module download and more please visit
https://www.coderesort.com/p/epicode/wiki/LanguageTools

The language manipulation tool was originally created by Adam Najmanowicz.

Jun 15, 2010

Comments

Sep 21, 2010 10:33 AM

Hi Mari,

We have used this tool in some projects. One funny thing about it is that it will change language correctly but all dynamic properties will be cleared from the websites. The editor cannot see that any dynamic property is set. This has happened twice. Do you have any clues what?

Best Regards
Anders

/ Anders Brangefält

Frederik Vig
Frederik Vig Sep 21, 2010 10:33 AM

I believe this is a bug with EPiServer CMS.. Have you checked the bug list?

Sep 21, 2010 10:33 AM

@Anders: I've heard about this issue, but I thought it was related to migration and not the language tool? Anyway, you should check the bug list, and report the issue if it's not in the list.
/ Mari Jørgensen

Oct 26, 2010 05:39 PM

I encountered the same issue whilst using this tool, essentially 'en-GB' was the original master language - languageID = 1

The problem occurs when changing a dymanic property that was not language specific, it updates the [fkLanguageBranchID] value for the dynamic property on table [tblProperty] from 1 to the new master language id ( in my case this was 18 ' )

What i did notice however, was when after changing a branches master language to another language, when saving a non-language specific dynamic property, the value in [fkLanguageBranchID] field was always 1 ( the original master language branch ).

Running the following script essentially set back all the non-language-specific dynamic property values to their original master language branch, which in the editor makes their values populated again:

*** NB please use at own risk, this worked for me, but make sure YOU understand the consequences of running this script **

UPDATE [tblProperty]
SET [fkLanguageBranchID] = 1 -- ** NB this value must be your original language branch
WHERE fkPageDefinitionID IN
(
SELECT pkID
FROM tblPageDefinition
WHERE (fkPageTypeID IS NULL) AND (LanguageSpecific = 0)
)


Hope it helps someone out there.
Cheers
Dane

Andrey Kozhyn
Andrey Kozhyn Mar 31, 2011 02:00 PM

Does this tool allows to copy content, not switch languages?

Dec 6, 2011 05:27 PM

I've used the tool on EPiServer 6 R2 with partial success, after converting one page from the root node, and re-indexing, I got the result when search through the Online Center Search Page Object reference not set to an instance of an object, and this error in the error logs:


2011-12-06 16:21:32,589 ERROR [29] EPiServer.Shell.UI.Controllers.SearchController.Search - Search provider EPiServer.Cms.Shell.Search.PageSearchProviderthrew an exception when searching for "test"
2011-12-06 16:21:32,591 ERROR [29] EPiServer.Shell.UI.Controllers.SearchController.Search - System.NullReferenceException: Object reference not set to an instance of an object.
at EPiServer.DataAccess.PageTextIndexDB.<>c__DisplayClass8.b__7()
at EPiServer.DataAccess.DataAccessBase.<>c__DisplayClass1`1.b__0()
at EPiServer.DataAccess.DatabaseFactory.Execute[TResult](Action`1 method)
at EPiServer.Cms.Shell.Search.PageSearchProvider.Search(Query query)
at EPiServer.Shell.UI.Controllers.SearchController.Search(String id, String epiSearchQuery)
2011-12-06 16:21:37,273 DEBUG [34] EPiServer.Events.Remote.RemoteEventsManager.EventSequenceCheckTimer_Elasped - Event Sequence Check Timer Elapsed


Can you give any further assistance on resolving?

Thanks

Please login to comment.
Latest blogs
Optimizely SaaS CMS + Coveo Search Page

Short on time but need a listing feature with filters, pagination, and sorting? Create a fully functional Coveo-powered search page driven by data...

Damian Smutek | Nov 21, 2024 | Syndicated blog

Optimizely SaaS CMS DAM Picker (Interim)

Simplify your Optimizely SaaS CMS workflow with the Interim DAM Picker Chrome extension. Seamlessly integrate your DAM system, streamlining asset...

Andy Blyth | Nov 21, 2024 | Syndicated blog

Optimizely CMS Roadmap

Explore Optimizely CMS's latest roadmap, packed with developer-focused updates. From SaaS speed to Visual Builder enhancements, developer tooling...

Andy Blyth | Nov 21, 2024 | Syndicated blog

Set Default Culture in Optimizely CMS 12

Take control over culture-specific operations like date and time formatting.

Tomas Hensrud Gulla | Nov 15, 2024 | Syndicated blog

I'm running Optimizely CMS on .NET 9!

It works 🎉

Tomas Hensrud Gulla | Nov 12, 2024 | Syndicated blog

Recraft's image generation with AI-Assistant for Optimizely

Recraft V3 model is outperforming all other models in the image generation space and we are happy to share: Recraft's new model is now available fo...

Luc Gosso (MVP) | Nov 8, 2024 | Syndicated blog