Ipython: Jupyter notebook 升级后变成 RTL

创建于 2018-01-14  ·  34评论  ·  资料来源: ipython/ipython

我在 miniconda 中创建了 python 3.6 环境。 Jupyter 笔记本现在可以从右到左工作。

不可能写出这样的代码。

我该如何解决它”

安装的软件包是:
ipykernel 4.7.0 py36_0 conda-forge ipython 6.2.1 py36_1 conda-forge ipython_genutils 0.2.0 py36_0 conda-forge jupyter_client 5.2.1 py36_0 conda-forge jupyter_core 4.4.0 py_0 conda-forge nbconvert 5.3.1 py_1 conda-forge nbformat 4.4.0 py36_0 conda-forge notebook 5.2.2 py36_1 conda-forge

笔记本元数据:
{ "celltoolbar": "Edit Metadata", "kernelspec": { "name": "python3", "display_name": "Python 3", "language": "python" }, "language_info": { "name": "python", "version": "3.6.4", "mimetype": "text/x-python", "codemirror_mode": { "name": "ipython", "version": 3 }, "pygments_lexer": "ipython3", "nbconvert_exporter": "python", "file_extension": ".py" } }

最有用的评论

按 Ctrl-Shift-F 调出命令面板。 搜索“rtl”并选择“toggle rtl layout”。 它应该切换。

如果您在浏览器中选择的第一种语言是阿拉伯语或希伯来语,则当前默认选择 RTL。 CCing @samarsultan以防需要改进。

所有34条评论

按 Ctrl-Shift-F 调出命令面板。 搜索“rtl”并选择“toggle rtl layout”。 它应该切换。

如果您在浏览器中选择的第一种语言是阿拉伯语或希伯来语,则当前默认选择 RTL。 CCing @samarsultan以防需要改进。

感谢@takluyver ,但这仅适用于当前会话。 任何新笔记本都将再次启用 RTL 选项。 此外,树页面(http://localhost:8888/tree)也在 RTL 中......

是否有一些全局标志可以完全关闭 RTL 选项?

编辑:好的,我将浏览器(Chrome)的默认语言从希伯来语更改为英语,现在一切正常。

据我所知,目前永久更改它的唯一方法是更改​​浏览器的默认语言。 如果有足够多的阿拉伯语/希伯来语语言环境用户仍然使用 LTR 布局,我们可能应该将其单独配置,也许通过使现有的切换成为永久。

@takluyver嘿,我的 chrome 浏览器设置为英文,但我仍然遇到 RTL 布局问题。
还有其他可能的解决方案吗?

打开浏览器的 Javascript 控制台并检查navigator.language - 这就是我们的代码用来决定 RTL 的内容。

@takluyver很好,它向我展示了“他-IL”
所以我需要改变它吗? 如何?

它应该在浏览器设置的某个地方。 如果有语言列表,它可能会使用列表中的前一种。

我改变了它,现在英语是设置中的第一语言。 但仍然 navigator.languages 显示“he-IL”。 :(
你知道该怎么做吗?

你有没有关闭浏览器并重新打开它? 也许语言设置只会在您下次启动时对其产生影响。 如果不是这样,不知道...

您可以尝试chrome://settings然后转到高级设置单击语言然后像这样删除阿拉伯语
untitled

@ibraheemkhazbak已经试过了,还是有问题:(

我有同样的问题,jupyter 总是用 rtl 切换打开,我每次都需要取消它。
我的默认浏览器语言是英语,有人知道我还能尝试解决什么吗?

你有什么版本的 notebook 包,在你的浏览器的 Javascript 控制台中navigator.language给你什么?

我最近自己也遇到了同样的问题。 最后,解决方案是卸载 Chrome(使用 iObit Uninstaller - 我没有尝试常规的 Windows 卸载),重新启动计算机(祝你好运),然后重新安装 Chrome。 完美运行。

@takluyver我的 navigator.language 是希伯来语,尽管我的默认语言设置为英语。
我现在明白问题来自浏览器而不是 Jupyter,所以我将使用 Efrat 方式修复它。
谢谢您的帮助

@Effrat
我试过这种方式,但仍然没有运气(包括重置)。
其他推荐? 任何人?

同样在这里 /:
有没有办法在笔记本或命令行中覆盖?

这对我有用:

  1. 从 Chrome 语言中删除了希伯来语(或阿拉伯语)(如前所述)
  2. 删除浏览器缓存文件

@takluyver ,谢谢! 虽然我认为这不是足够用户的问题。 笔记本的其余 UI 都是英文的,所以不管个人习惯,没有理由 RTL 布局。

对于任何使用@Effrat解决方案但它不起作用的人:
确保在登录 Google 帐户时不要同步设置。
同步设置将使 jupyter 再次进入 rtl

这对我有用:

  1. 从 Chrome 语言中删除了希伯来语(或阿拉伯语)(如前所述)
  2. 删除浏览器缓存文件

清除chrome的浏览数据并重新启动后,它对我有用。

@LiranDan的回答对我

编辑:在我的帐户中更多地使用语言设置后,它似乎已解决,并且我的 chrome 浏览器中不再存在 he-IL。

设法通过以下方式为我的 Windows 10 解决了这个问题。

Chrome 语言中唯一的语言是英语。
但是,无论我做什么,它都会在 RTL 中显示笔记本。
(您可以在 chrome 开发工具window.navigator.languages查看当前语言,它会选择第一个)

最终,我打开了 Windows 10 语言屏幕并重新排序了语言。
具体来说,我先有英语,然后是希伯来语,所以我先重新排序希伯来语,然后是英语,然后再次重新排序。

关闭浏览器并重新打开它终于奏效了。

是否有意图/支持更改默认行为?
英文的 RTL 是没用的,即使菜单是 RTL 语言,如果是英文,笔记本内容仍然会被破坏,99.9% 的笔记本都是英文。 所以 RTL 对几乎任何人都没有用。

我相信无论本地化如何,默认使用 LTR 会更好,并允许切换。

我一直怀疑我们切换到 RTL 的逻辑有点过于急切了。 但是由于我不阅读任何 RTL 语言,因此我对这个主题的想法并不多。

在问题跟踪器上采样意见很棘手,因为它强烈选择对当前行为有问题的人。 但是如果熟悉 RTL 语言的人想提交 PR 以默认离开接口 LTR,我倾向于合并它。

@m2-farzan 已针对笔记本打开了多个 PR,以改进 RTL 支持。 如果另一个熟悉 RTL 语言的人可以查看并检查它们是否有意义,那就太好了:

作为 RTL 人员(希伯来语),我可以确认在开发环境中使用 RTL 布局非常烦人。 我会更进一步说它_从不_有用,甚至不是一个非默认选项。

RTL 唯一有用的上下文是当您拥有 RTL 语言的完整段落时,或者当整个 UI 被翻译时(这在开发环境中不可能发生)。

我目前主要使用 Jupyter 来分析希伯来语文本。 我希望能够在这里和那里打印右对齐的文本示例,但这与整个 UI 无关。

这是一个屏幕截图 - 这里的希伯来语没有任何用处,但是您在句子的错误结尾处得到句点,并且路径颠倒了。
image

同样,在希伯来语中没有有用的信息, In [ ]符号在错误的一边,当它没有帮助时你会得到 RTL _only_。 如果有的话,我希望 שלום 这个词是右对齐的,但没有别的。
image

一些编辑器根据第一个字符自动确定段落的方向。 也许对每个细胞做类似的事情会有意义?

@haggaie Jupyter notebook 使用CodeMirror作为其文本编辑器库。 因此,基于每第一个字符自动改变方向的功能需要在CodeMirror中实现,目前这是一个开放的功能请求(https://github.com/codemirror/CodeMirror/issues/4006)。

请注意,在 Jupyter Notebook 版本 >= 6.1 中,您可以使用命令面板(在 chrome 中为 Ctrl+Shift+P)来更改单元格或整个笔记本的方向。 在那里您可以找到两个有用的命令: toggle current cell ltr/rtltoggle notebook ltr/rtl 。 我发现这些命令对于日常用途来说已经足够了。

聚苯乙烯

因此,如果您已经了解这些命令,但您确实需要自动更改每个单元格的方向,则可以开发一个扩展,它使用类似这样的要点来检测方向,然后动态设置单元格的direction元数据标签。 另一个(非推荐)解决方法是尝试我过去编写的 hacky 扩展(这里)。

谢谢@m2-farzan。 老实说,我对toggle rtl layout设置最满意,因为我通常在处理完全 LTR 笔记本时将 chrome 设置为 RTL 语言环境。 但我同意使用您提到的设置更改每个单元格可能会有所帮助。

“切换 rtl 布局”解决了这个问题,但这是关于合理的默认值:当前的默认值永远不会正确。
这种实施方式迫使每个新的希伯来语或阿拉伯语 jupyter 用户在找到此线程之前都会有糟糕的体验。

这是从 jupyter 6.1.0 开始修复的

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jwkvam picture jwkvam  ·  4评论

okomarov picture okomarov  ·  3评论

frenzymadness picture frenzymadness  ·  3评论

peter-ch picture peter-ch  ·  4评论

alvations picture alvations  ·  4评论