- /**
- Create language selector comp
- @class LanguageSelectorView
- @constructor
- @return {Object} instantiated LanguageSelectorView
- **/
- define(['jquery', 'backbone', 'simplestorage', 'bootbox', 'localizer'], function ($, Backbone, simplestorage, bootbox, localizer) {
-
- var LanguageSelectorView = BB.View.extend({
-
- /**
- Init the ChannelList component and enable sortable channels UI via drag and drop operations.
- @method initialize
- **/
- initialize: function () {
- var self = this;
- self.m_simpleStorage = simplestorage;
- self.$el = $(Elements.TEMPLATE_LANGUAGE_SELECTOR).clone();
- self.el = self.$el[0];
- $(self.options.appendTo).append(self.el).fadeIn();
- self.$el.show();
- var currID = self.$el.attr('id');
- self.$el.attr('id', _.uniqueId(currID));
- self._render();
- self._loadLang();
- },
-
- /**
- Render the DOM within instance view for language selection
- @method _render
- **/
- _render: function () {
- var self = this;
- $("dt a", self.$el).click(function () {
- $("dd ul", self.$el).toggle();
- });
-
- $("dd ul li a", self.$el).click(function () {
- var text = $(this).html();
- $("dt a span", self.$el).html(text);
- $("dd ul", self.$el).hide();
- var language = self.$el.find("dt a span.value").html();
- self.setLanguage(language);
- });
- },
-
- /**
- Load language
- @method _loadLang
- **/
- _loadLang: function(){
- var self = this;
- var lang = self.getLanguage();
- if (lang)
- self.setLanguage(lang);
- },
-
- /**
- Set specified language and reload the application to apply selection
- @method setLanguage
- @param {String} i_language
- **/
- setLanguage: function (i_language) {
- var self = this;
- i_language = self._cleanTags(i_language);
- self.m_simpleStorage.set('languageSelected', i_language);
- var opts = { language: i_language, pathPrefix: "./_lang" };
- $("[data-localize]").localize("local", opts);
- },
-
- /**
- Clean up non compliant language characters
- @method _cleanTags
- @param {String} i_language
- @return {String} language code
- **/
- _cleanTags: function(i_language){
- if (_.isUndefined(i_language))
- return 'en';
- // workaround for IE 10
- try {
- i_language = i_language.replace(/<font>/gi,'');
- i_language = i_language.replace(/<\/font>/gi,'');
- if (i_language == 'in')
- return 'en';
- return i_language;
- } catch (e){
- return 'en';
- }
- },
-
- /**
- Get the currently selected language
- @method getLanguage
- @return {Object} return 2 letter language selection
- **/
- getLanguage: function () {
- var self = this;
- var lang = self.m_simpleStorage.get('languageSelected');
- return self._cleanTags(lang);
- }
- });
-
- return LanguageSelectorView;
-
- });
-