How to add culture picker in Orchard v.1.8.0.0+(MultiLanguage support)?

Install Localization-Version 1.6 and Culture Picker - Version 1.6.0.0
following features are enabled Localization,culture picker,culture picker main menu filtering,
culture picker content filtering, culture picker home page auto redirect.

If Orchard.CulturePicker project not load references like Orchard.Alias,Orchard.Core etc, modify
target framework.

Add Orchard.Content picker reference to Orchard.CulturePicker.

Modify LocalizableMainMenuNavigationFilter class it is placed under Orchard.CulturePicker\Services\ LocalizableMainMenuNavigationFilter.cs then replace this class with below code.


using System.Collections.Generic;
using JetBrains.Annotations;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Aspects;
using Orchard.Core.Navigation.Models;
using Orchard.Environment.Extensions;
using Orchard.Localization.Services;
using Orchard.UI.Navigation;
using Orchard.ContentPicker.Models;
namespace Orchard.CulturePicker.Services {
    [UsedImplicitly]
    [OrchardFeature("Orchard.CulturePicker.MainMenu")]
    public class LocalizableMainMenuNavigationFilter : INavigationFilter {
        private readonly ICultureManager _cultureManager;
        private readonly IWorkContextAccessor _workContextAccessor;

        public LocalizableMainMenuNavigationFilter(ICultureManager cultureManager, IWorkContextAccessor workContextAccessor) {
            _cultureManager = cultureManager;
            _workContextAccessor = workContextAccessor;
        }

        #region INavigationFilter Members

        public IEnumerable<MenuItem> Filter(IEnumerable<MenuItem> menuItems) {
            string currentCulture = _cultureManager.GetCurrentCulture(_workContextAccessor.GetContext().HttpContext);
            foreach (MenuItem menuItem in menuItems) {
                ILocalizableAspect localizationPart = menuItem.Content.Is<ContentMenuItemPart>()
                                                          ? menuItem.Content.As<ContentMenuItemPart>().Content.As<ILocalizableAspect>()
                                                          : menuItem.Content.As<ILocalizableAspect>();
                if (localizationPart == null
                    || localizationPart.Culture == null
                    || localizationPart.Culture == currentCulture)
                    yield return menuItem;
            }
        }

        #endregion
    }
}

Add culture picker widget through Widgets from admin panel.

Comments

  1. it does not works in 1.10 :( I will try to see if I can make it work.

    ReplyDelete
    Replies
    1. Dear Gabriel,

      Did you got it working? Maybe we could work it out together?

      Please let me know. Cheers.

      Delete
  2. Dear Gabriel,

    Did you got it working? Maybe we could work it out together?

    Please let me know. Cheers.

    ReplyDelete

Post a Comment

Popular posts from this blog

Setup and implement simple angular.js program in MVC

Cross browsers detect print events using javascript

HTML5 drag and drop