在Jupyter笔记本中支持多种人类语言

时间:2017-09-17 00:51:37

标签: jupyter-notebook

我想用西班牙语和英语写下我所有的降价单元格,如果选择它作为正在运行的系统主要语言,或者可能是顶部的语言切换,则只显示西班牙文单元格?是否有一个jupyter扩展可以实现这个?或者一些解决方法?我还没有找到任何东西。

2 个答案:

答案 0 :(得分:0)

据我所知,笔记本电脑的最新版本i8n impelemenation)中最近的国际化工作是5.1.0

有关详细信息,请参阅以下pull requestREADME

答案 1 :(得分:0)

您可以编写自己的扩展,适用于单元格标记。你可以使用标签工具栏(在View > Cell Toolbar > Tags下)用#english和西班牙文用#spanish标记英文单元格

这是一些代码的工作示例,它为您想要的不同语言添加了一个下拉菜单(在这种情况下,我只编写了英语和西班牙语,但它是可扩展的)并将操作注册到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文件,然后像任何前端扩展一样安装并启用它。