APIs

Show:
  1. /**
  2. Create language selector comp
  3. @class LanguageSelectorView
  4. @constructor
  5. @return {Object} instantiated LanguageSelectorView
  6. **/
  7. define(['jquery', 'backbone', 'simplestorage', 'bootbox', 'localizer'], function ($, Backbone, simplestorage, bootbox, localizer) {
  8.  
  9. var LanguageSelectorView = BB.View.extend({
  10.  
  11. /**
  12. Init the ChannelList component and enable sortable channels UI via drag and drop operations.
  13. @method initialize
  14. **/
  15. initialize: function () {
  16. var self = this;
  17. self.m_simpleStorage = simplestorage;
  18. self.$el = $(Elements.TEMPLATE_LANGUAGE_SELECTOR).clone();
  19. self.el = self.$el[0];
  20. $(self.options.appendTo).append(self.el).fadeIn();
  21. self.$el.show();
  22. var currID = self.$el.attr('id');
  23. self.$el.attr('id', _.uniqueId(currID));
  24. self._render();
  25. self._loadLang();
  26. },
  27.  
  28. /**
  29. Render the DOM within instance view for language selection
  30. @method _render
  31. **/
  32. _render: function () {
  33. var self = this;
  34. $("dt a", self.$el).click(function () {
  35. $("dd ul", self.$el).toggle();
  36. });
  37.  
  38. $("dd ul li a", self.$el).click(function () {
  39. var text = $(this).html();
  40. $("dt a span", self.$el).html(text);
  41. $("dd ul", self.$el).hide();
  42. var language = self.$el.find("dt a span.value").html();
  43. self.setLanguage(language);
  44. });
  45. },
  46.  
  47. /**
  48. Load language
  49. @method _loadLang
  50. **/
  51. _loadLang: function(){
  52. var self = this;
  53. var lang = self.getLanguage();
  54. if (lang)
  55. self.setLanguage(lang);
  56. },
  57.  
  58. /**
  59. Set specified language and reload the application to apply selection
  60. @method setLanguage
  61. @param {String} i_language
  62. **/
  63. setLanguage: function (i_language) {
  64. var self = this;
  65. i_language = self._cleanTags(i_language);
  66. self.m_simpleStorage.set('languageSelected', i_language);
  67. var opts = { language: i_language, pathPrefix: "./_lang" };
  68. $("[data-localize]").localize("local", opts);
  69. },
  70.  
  71. /**
  72. Clean up non compliant language characters
  73. @method _cleanTags
  74. @param {String} i_language
  75. @return {String} language code
  76. **/
  77. _cleanTags: function(i_language){
  78. if (_.isUndefined(i_language))
  79. return 'en';
  80. // workaround for IE 10
  81. try {
  82. i_language = i_language.replace(/<font>/gi,'');
  83. i_language = i_language.replace(/<\/font>/gi,'');
  84. if (i_language == 'in')
  85. return 'en';
  86. return i_language;
  87. } catch (e){
  88. return 'en';
  89. }
  90. },
  91.  
  92. /**
  93. Get the currently selected language
  94. @method getLanguage
  95. @return {Object} return 2 letter language selection
  96. **/
  97. getLanguage: function () {
  98. var self = this;
  99. var lang = self.m_simpleStorage.get('languageSelected');
  100. return self._cleanTags(lang);
  101. }
  102. });
  103.  
  104. return LanguageSelectorView;
  105.  
  106. });