4

I followed this post and have an xml feed that is converting to items in Sitecore. I want to write to a different language than en. I set field map languages to en-US for items under /sitecore/system/Data Exchange/XML Provider CD Catalog Tenant/Data Access/Value Accessor Sets/Providers/Sitecore/CD Catalog Information Item. artist language field set to en-us

Then I added a step based on /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Select Languages Pipeline Step selecting en-US in the Languages field. This is the step pointed to by the cookbook for writing to multiple languages. I have moved this pipeline step around both pipelines from the post (Read CD Catalog Information from XML Data Pipeline and CD Catalog XML Data to CD Catalog Sitecore Item Sync Pipeline) but the items seem to always be created with en language versions rather than en-US.

select language pipeline step set to en-us

I am using Sitecore.NET 8.2 (rev. 170614) and DEF 1.4.1. Because of that, I recompiled the xml code to account for that which only involved removing generic class params for the xml pipeline step converter and xml endpoint converter. In the base case, before changing languages to try to target en-us the change seemed to have no effect and items were created in en with field set in en. After the changes to attempt to target importing to en-us items are still created in en but their fields are not mapped because that targets an item's field that does not exist and fails:

items created just in en

Is the /sitecore/templates/Data Exchange/Providers/Sitecore/Pipeline Steps/Select Languages Pipeline Step pipeline step not the one to use when trying to write to a language other than en? If it is how should it be used?

  • Is it only happening with en-us? Did you try to set something else in order to test? – Vlad Shpak Mar 20 '18 at 14:52
  • @VladShpak I did now and I still get the same issue. I took a look at the code being run and it seems that this is an important piece Guid guid = repository.Create(validItemName, settings.TemplateForNewItem, settings.ParentItemIdItem, null);. It's passing in null as the language parameter. – Teeknow Mar 20 '18 at 15:12
  • @VladShpak I threw in an answer overriding that piece I mentioned. If you have a better implementation/way to handle this I'd be happy to accept that. – Teeknow Mar 20 '18 at 15:32
4

As I understand from the answer and code example that Resolve Sitecore Item Pipeline Step is used. This resolver does not resolve languages unlike default language. It means it does not read language(s) from the plugin.

  1. Select Languages Pipeline Step assigns language(s) to SelectedLanguagesSettings plugin.
  2. Resolve Multilanguage Sitecore Item Dictionary Pipeline Step reads assigned languages from the plugin and resolve item by selected language.

Change the pipeline step from Resolve Sitecore Item Pipeline Step to Resolve Multilanguage Sitecore Item Dictionary Pipeline Step because the latter takes the language plugin into account.

| improve this answer | |
  • What do you think the resolver should be changed to? Would it need to be something custom or is there a resolver that exists as part of the base framework/Sitecore provider that can create a Sitecore item targeting a specific language? – Teeknow Mar 20 '18 at 16:31
  • It just wanted to say you should use resolver mentioned in point 2 – Vlad Shpak Mar 20 '18 at 17:19
  • Alright I get what you mean now. So yes this is part of a default resolver and that resolver is Resolve Multilanguage Sitecore Item Dictionary Pipeline Step. I went ahead and added that clarification into the answer. Hope that's alright. – Teeknow Mar 20 '18 at 17:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.