Ipython: Ноутбук Jupyter стал RTL после обновления

Созданный на 14 янв. 2018  ·  34Комментарии  ·  Источник: ipython/ipython

Я создал среду python 3.6 в miniconda. Блокнот 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 ,
Есть ли другое возможное решение?

Откройте консоль Javascript вашего браузера и отметьте navigator.language - это то, на что смотрит наш код, чтобы выбрать RTL.

@takluyver хорошо, это показывает мне "он-Ил"
так что мне нужно это изменить? как?

Это должно быть где-то в настройках браузера. Если есть список языков, он, вероятно, использует верхний в списке.

Поменял, теперь в настройках первым языком является английский. но все равно навигатор. язык отображает "он-ил". :(
Вы знаете, что делать?

Вы закрыли браузер и снова его открыли? Возможно, языковые настройки повлияют на него только при следующем запуске. Если это не так, без понятия ...

Вы можете попробовать chrome: // settings, затем перейти к расширенным настройкам, щелкнуть languges, затем удалить арабский язык, как это
untitled

@ibraheemkhazbak Уже пробовал, все еще проблемы :(

У меня та же проблема, jupyter всегда открывается с переключателем rtl, и мне нужно каждый раз его отменять.
мой язык браузера по умолчанию - английский, есть ли у кого-нибудь идеи, что еще я могу попробовать решить?

Какая у вас версия записной книжки и что дает navigator.language в консоли Javascript вашего браузера?

Я сам недавно столкнулся с той же проблемой. Наконец, решение заключалось в том, чтобы удалить Chrome (с помощью iObit Uninstaller - я не пробовал выполнять обычную деинсталляцию Windows), перезагрузить компьютер (на удачу) и затем переустановить Chrome. Прекрасно работает.

@takluyver Мой язык навигатора - иврит, хотя по умолчанию я использую английский.
Теперь я понимаю, что проблема исходит от браузера, а не от Jupyter, поэтому я исправлю ее, используя способ Efrat.
Спасибо за помощь

@Effrat
Я пробовал этот способ и все равно не повезло (включая сброс).
Другие рекомендации? кто угодно?

То же самое /:
Есть ли способ переопределить в записной книжке или в командной строке?

Это сработало для меня:

  1. удален иврит (или арабский) из языков Chrome (как упоминалось ранее)
  2. удаленные файлы из кеша браузера

@takluyver , спасибо! Хотя не думаю, что дело в достаточном количестве пользователей. Остальная часть пользовательского интерфейса ноутбука на английском языке, поэтому нет причин для RTL-макета, независимо от личных привычек.

Для тех, кто использует решение @Effrat, и оно не работает:
Убедитесь, что при входе в свою учетную запись Google не синхронизируйте настройки.
Синхронизация настроек заставит jupyter снова перейти на RTL

Это сработало для меня:

  1. удален иврит (или арабский) из языков Chrome (как упоминалось ранее)
  2. удаленные файлы из кеша браузера

Это сработало для меня после очистки данных просмотра Chrome и его перезапуска.

Ответ @LiranDan сработал для меня, однако нашел ли кто-нибудь способ синхронизировать учетную запись без Jupyter в Chrome, распознающего navigator.language как HE? Когда я пробовал использовать другой браузер, такой как FireFox, он работает, просто найдите, а языком по умолчанию является En. Должен быть способ изменить язык по умолчанию в учетной записи Google (я уже удалил иврит из языков учетной записи Google, но все еще бесполезно).

РЕДАКТИРОВАТЬ: после того, как я немного поигрался с языковыми настройками в моей учетной записи, похоже, он решен, и он больше не существует в моем браузере Chrome.

Решить эту проблему для моей Windows 10 удалось следующим образом.

Единственным языком в языках Chrome был английский.
Однако он продолжал показывать ноутбук в RTL, что бы я ни делал.
(Вы можете увидеть текущие языки в chrome dev tools 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 или когда переводится весь пользовательский интерфейс (что невозможно в средах разработки).

В настоящее время я использую Jupyter в основном для анализа текста на иврите. Я хотел бы иметь возможность печатать примеры текста с выравниванием по правому краю здесь и там, но это не имеет ничего общего со всем пользовательским интерфейсом.

Вот скриншот - здесь нет ничего полезного на иврите, но точка стоит не в том конце предложения, и путь меняется на противоположный.
image

Опять же, никакой полезной информации на иврите, маркеры In [ ] не на той стороне, и вы получаете RTL _ только_, когда это бесполезно. Во всяком случае, я бы хотел, чтобы слово שלום было выровнено по правому краю, но ничего больше.
image

Некоторые редакторы автоматически определяют направление абзаца на основе первых символов. Может, есть смысл сделать что-то подобное для каждой ячейки?

Блокнот @haggaie Jupyter использует CodeMirror в качестве библиотеки текстового редактора. Следовательно, функция автоматического изменения направления каждой строки на основе ее первого символа должна быть реализована в CodeMirror, который в настоящее время является открытым запросом функции (https://github.com/codemirror/CodeMirror/issues/4006).

Обратите внимание, что в версии Jupyter notebook> = 6.1 вы можете использовать палитру команд (Ctrl + Shift + P в хроме), чтобы изменить направление ячейки или всей записной книжки. Там вы найдете две полезные команды: toggle current cell ltr/rtl и toggle notebook ltr/rtl . Я обнаружил, что этих команд достаточно для повседневных целей.

PS

Итак, если вы уже знаете об этих командах, но вам действительно нужно автоматическое изменение направления каждой ячейки, можно разработать расширение, которое использует что-то вроде этой сущности для определения направления, а затем динамически устанавливает тег метаданных direction ячеек. Другой (не рекомендуемый) обходной путь - попробовать взломанное расширение, которое я написал в прошлом ( здесь ).

Спасибо @ m2-farzan. Честно говоря, меня больше всего устраивает настройка toggle rtl layout , поскольку я обычно работаю с хромом, настроенным на локаль RTL, когда работаю с полностью LTR-ноутбуками. Но я согласен, что изменение каждой ячейки с указанными вами настройками может быть полезным.

«Toggle rtl layout» решает проблему, но речь идет о разумных значениях по умолчанию: текущие значения по умолчанию никогда не бывают правильными.
То, как это реализовано, заставляет каждого нового пользователя jupyter, говорящего на иврите или арабском языке, испытывать ужасные впечатления, пока они не найдут эту ветку.

Это исправлено в jupyter 6.1.0.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги