2017-09-17 35 views
0

我想用西班牙语和英语编写所有的降价单元格,并且只有西班牙语单元格才会显示出来,如果选择这种单元格作为运行系统主要语言,或者可能是语言在顶部切换?有没有一个jupyter扩展可以启用它?或者有些工作?我还没有找到任何东西。在Jupyter笔记本中支持多种人类语言

回答

0

你可以编写自己的扩展,对细胞的标记工作。你可以使用标签工具条(#View > Cell Toolbar > Tags)用#spanish标记英文单元格(View > Cell Toolbar > Tags

下面是一些代码的工作示例,它为您想要的不同语言添加下拉菜单(在这种情况下,我只是编码英文和西班牙文,但它是可扩展的),并将操作注册到Jupyter命令面板。这隐藏了所有标签没有特定语言标签的单元格,因此您可能需要根据自己的需求进行优化。或者,离开它,因为如果是它的好:)

define([ 
    'base/js/namespace' 
], function(
    Jupyter 
) { 
    console.log("Language switcher working!"); 
    var show_selected_language = function(language) { 
     language = String.toLowerCase(language); 
     console.log("switching languages..."); 
     // Find all cells with specific language 
     var cells = Jupyter.notebook.get_cells(); 

     cells.forEach(function(cell) { 
      if(cell.hasOwnProperty("metadata") && cell.metadata.hasOwnProperty("tags") && cell.metadata.tags.indexOf(language) !== -1) { 
       cell.element.show('slow'); 
      } else if (cell.hasOwnProperty("metadata") && cell.metadata.hasOwnProperty("tags") && cell.metadata.tags.indexOf(language) === -1) { 
       cell.element.hide('slow'); 
      } 
     }); 
    }; 

    var load_ipython_extension = function() {   
     var lang_dropdown = $("<div/>").addClass("dropdown btn-group").attr("id","lang-menu"); 
     var lang_button = $("<button/>") 
         .addClass("btn btn-default dropdown-toggle") 
         .attr("type","button") 
         .attr("data-toggle","dropdown") 
         .attr("title", "Switch Language") 
         .text("Lang"); 
     var lang_caret = $("<span>").addClass("caret"); 
     lang_button.append(lang_caret); 

     var lang_dropdown_ul = $("<ul/>") 
      .attr("id","lang_menu") 
      .addClass("dropdown-menu"); 

     lang_dropdown.append(lang_button).append(lang_dropdown_ul); 

     $(Jupyter.toolbar.selector).append(lang_dropdown); 

     function add_new_item(menu, display_text, id) { 
      menu.append($("<li/>").attr("id",id) 
               .append($("<a/>") 
                 .attr("href","#") 
                 .text(display_text)) 
                 .click(function() { show_selected_language(display_text);})); 
     } 
     add_new_item(lang_dropdown_ul, "English", "switch-lang-english"); 
     add_new_item(lang_dropdown_ul, "Spanish", "switch-lang-spanish"); 


     var english_action = { 
      help: "Switch language to English", 
      help_index: "a", 
      icon: "fa-language", 
      handler : function() { show_selected_language("english");}, 
     }; 

     var english_prefix = "language_switcher"; 
     var english_action_name = "switch-lang-english"; 

     Jupyter.actions.register(english_action, english_action_name, english_prefix); 

     var spanish_action = { 
      help: "Switch language to Spanish", 
      help_index: "a", 
      icon: "fa-language", 
      handler : function() { show_selected_language("spanish");}, 
     }; 

     var spanish_prefix = "language_switcher"; 
     var spanish_action_name = "switch-lang-spanish"; 


     Jupyter.actions.register(spanish_action, spanish_action_name, spanish_prefix); 
    }; 

    return { 
     load_ipython_extension : load_ipython_extension 
    }; 
}); 

保存它作为一个JavaScript文件,然后安装并启用它像任何前端延伸。