Ipython: Jupyter Notebook wird nach dem Upgrade zu RTL

Erstellt am 14. Jan. 2018  ·  34Kommentare  ·  Quelle: ipython/ipython

Ich habe die Python 3.6-Umgebung in Miniconda erstellt. Jupyter Notebook funktioniert jetzt von rechts nach links .

Es ist unmöglich, Code wie diesen zu schreiben.

Wie kann ich es reparieren "

installierte Pakete sind:
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

Notebook-Metadaten:
{ "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" } }

Hilfreichster Kommentar

Drücken Sie Strg-Umschalt-F, um die Befehlspalette aufzurufen. Suchen Sie nach 'rtl' und wählen Sie 'RTL-Layout umschalten'. Es sollte umschalten.

Wenn die erste in Ihrem Browser ausgewählte Sprache Arabisch oder Hebräisch ist, wird derzeit standardmäßig RTL ausgewählt. CCing @samarsultan für den Fall, dass dies verfeinert werden muss.

Alle 34 Kommentare

Drücken Sie Strg-Umschalt-F, um die Befehlspalette aufzurufen. Suchen Sie nach 'rtl' und wählen Sie 'RTL-Layout umschalten'. Es sollte umschalten.

Wenn die erste in Ihrem Browser ausgewählte Sprache Arabisch oder Hebräisch ist, wird derzeit standardmäßig RTL ausgewählt. CCing @samarsultan für den Fall, dass dies verfeinert werden muss.

Danke @takluyver , das funktioniert jedoch nur für die aktuelle Sitzung. Jedes neue Notebook startet mit der RTL-Option wieder. Außerdem ist die Baumseite (http://localhost:8888/tree) auch in RTL...

Gibt es ein globales Flag, um die RTL-Option vollständig auszuschalten?

BEARBEITEN: OK, ich habe die Standardsprache des Browsers (Chrome) von Hebräisch auf Englisch geändert und jetzt funktioniert alles.

Soweit ich weiß, besteht derzeit die einzige Möglichkeit, dies dauerhaft zu ändern, darin, die Standardsprache des Browsers zu ändern. Wenn es genügend Benutzer mit arabischen/hebräischen Gebietsschemas gibt, die noch LTR-Layout haben, sollten wir es wahrscheinlich separat konfigurierbar machen, vielleicht indem wir den vorhandenen Umschalter dauerhaft machen.

@takluyver hey, mein Chrome-Browser ist auf Englisch eingestellt, aber ich habe immer noch Probleme mit dem RTL-Layout.
Gibt es eine andere mögliche Lösung?

Öffnen Sie die Javascript-Konsole Ihres Browsers und überprüfen Sie navigator.language - das ist es, was unser Code betrachtet, um sich für RTL zu entscheiden.

@takluyver ok toll es zeigt mir "he-IL"
also muss ich es ändern? wie?

Es sollte irgendwo in den Browsereinstellungen stehen. Wenn es eine Liste von Sprachen gibt, wird wahrscheinlich die oberste auf der Liste verwendet.

Ich habe es geändert, jetzt ist Englisch die erste Sprache in den Einstellungen. aber navigator.languages ​​zeigen immer noch "he-IL" an. :(
Haben Sie eine Idee, was zu tun ist?

Hast du den Browser geschlossen und wieder geöffnet? Vielleicht wirken sich die Spracheinstellungen erst beim nächsten Start aus. Wenn das nicht so ist, keine Ahnung...

Sie können es mit chrome://settings versuchen, dann zu den erweiterten Einstellungen gehen, auf Sprachen klicken und dann die arabische Sprache einfach so entfernen
untitled

@ibraheemkhazbak Habe es schon probiert, habe immer noch Probleme :(

Ich habe das gleiche Problem, der Jupyter öffnet sich immer mit dem RTL-Toggle und ich muss es jedes Mal abbrechen.
Meine Standardbrowsersprache ist Englisch, hat jemand eine Idee, was ich noch versuchen kann, um es zu lösen?

Welche Version des Notebook-Pakets haben Sie und was bietet Ihnen navigator.language in der Javascript-Konsole Ihres Browsers?

Ich habe vor kurzem selbst das gleiche Problem gehabt. Schließlich bestand die Lösung darin, Chrome zu deinstallieren (mit iObit Uninstaller - ich habe keine normale Windows-Deinstallation versucht), den Computer neu zu starten (für viel Glück) und dann Chrome neu zu installieren. Funktioniert perfekt.

@takluyver Meine navigator.language ist Hebräisch, obwohl meine Standardsprache auf Englisch eingestellt ist.
Ich verstehe jetzt, dass das Problem vom Browser und nicht vom Jupyter kommt, also werde ich es mit Efrat beheben.
danke für die Hilfe

@Effrat
Ich habe es auf diese Weise versucht und immer noch kein Glück (einschließlich Zurücksetzen).
Andere Empfehlungen? jeder?

Hier gilt das gleiche /:
Gibt es eine Möglichkeit, das Notebook oder die Befehlszeile zu überschreiben?

Das hat bei mir funktioniert:

  1. Hebräisch (oder Arabisch) aus Chrome-Sprachen entfernt (wie bereits erwähnt)
  2. gelöschte Browser-Cache-Dateien

@takluyver , danke! Obwohl ich denke, dass es nicht auf genügend Benutzer ankommt. Der Rest der Benutzeroberfläche des Notebooks ist in Englisch, also kein Grund für RTL-Layouts unabhängig von persönlichen Gewohnheiten.

Für alle, die die @Effrat- Lösung verwenden und es nicht funktioniert:
Stellen Sie sicher, dass Sie die Einstellungen nicht synchronisieren, wenn Sie sich bei Ihrem Google-Konto anmelden.
Durch das Synchronisieren der Einstellungen wird Jupyter wieder rtl

Das hat bei mir funktioniert:

  1. Hebräisch (oder Arabisch) aus Chrome-Sprachen entfernt (wie bereits erwähnt)
  2. gelöschte Browser-Cache-Dateien

Es funktioniert für mich, nachdem ich die Browserdaten von Chrome gelöscht und neu gestartet habe.

Die Antwort von @LiranDan hat für mich funktioniert, aber hat jemand eine Möglichkeit gefunden, das Konto zu synchronisieren, ohne dass Jupyter in Chrome die navigator.language als HE erkennt? Wenn ich es mit einem anderen Browser wie FireFox versucht habe, funktioniert es einfach und die Standardsprache ist En. Es muss eine Möglichkeit geben, die Standardsprache des Google-Kontos zu ändern (ich habe Hebräisch bereits aus den Google-Kontosprachen entfernt und immer noch nicht gut).

EDIT: Nachdem ich etwas mehr mit den Spracheinstellungen in meinem Konto gespielt habe, scheint es gelöst zu sein und he-IL existiert in meinem Chrome-Browser nicht mehr.

Habe es für mein Windows 10 auf folgende Weise gelöst.

Die einzige Sprache in Chrome-Sprachen war Englisch.
Es zeigte das Notizbuch jedoch weiterhin bei RTL, egal was ich tat.
(Sie können die aktuellen Sprachen in den Chrome-Entwicklungstools window.navigator.languages , es wählt die erste aus)

Schließlich öffnete ich den Windows 10-Sprachbildschirm und ordnete die Sprachen neu.
Insbesondere hatte ich zuerst Englisch und dann Hebräisch, also habe ich zuerst Hebräisch und dann Englisch neu bestellt und dann wieder neu bestellt.

Browser schließen und wieder öffnen hat endlich geklappt.

Gibt es Absicht/Unterstützung, das Standardverhalten zu ändern?
RTL für Englisch ist nutzlos, und selbst wenn die Menüs in einer RTL-Sprache sind, werden die Notebook-Inhalte immer noch verstümmelt, wenn sie in Englisch sind, was 99,9 % der Notebooks sind. RTL ist also für fast niemanden nützlich.

Ich glaube, es wäre viel besser, unabhängig von der Lokalisierung standardmäßig auf LTR zu setzen und das Umschalten zuzulassen.

Ich habe schon lange den Verdacht, dass unsere Logik für den Wechsel zu RTL etwas übereifrig ist. Da ich aber keine RTL-Sprache lese, zähle ich meine Gedanken zu dem Thema nicht viel.

Es ist schwierig, die Meinung zu einem Issue-Tracker zu erfassen, da er stark nach Personen selektiert, die ein Problem mit dem aktuellen Verhalten haben. Aber wenn jemand, der sich mit RTL-Sprachen auskennt, eine PR einreichen möchte, um die Schnittstelle LTR standardmäßig zu verlassen, wäre ich geneigt, sie zusammenzuführen.

@m2-farzan hat mehrere PRs gegen das Notebook geöffnet, um die RTL-Unterstützung zu verbessern. Es wäre toll, wenn eine andere Person, die sich mit RTL-Sprachen auskennt, einen Blick darauf werfen und überprüfen könnte, ob sie sinnvoll sind:

Als RTL-Person (Hebräisch) kann ich bestätigen, dass es sehr ärgerlich ist, ein RTL-Layout in einer Entwicklungsumgebung zu haben. Ich würde noch weiter gehen und sagen, dass es _niemals_ nützlich ist, nicht einmal als Nicht-Standardoption.

Der einzige Kontext, in dem RTL nützlich ist, ist, wenn Sie über vollständige Absätze der RTL-Sprache verfügen oder wenn die gesamte Benutzeroberfläche übersetzt wird (was in Entwicklungsumgebungen unmöglich vorkommen kann).

Ich verwende Jupyter derzeit hauptsächlich zur Analyse von hebräischem Text. Ich würde gerne hier und da rechtsbündig ausgerichtete Textbeispiele drucken können, aber das hat nichts mit der gesamten Benutzeroberfläche zu tun.

Hier ist ein Screenshot - hier gibt es nichts Brauchbares auf Hebräisch, aber Sie erhalten den Punkt am falschen Ende des Satzes und der Pfad wird umgekehrt.
image

Auch hier keine nützlichen Informationen auf Hebräisch, die Aufzählungszeichen In [ ] sind auf der falschen Seite, und Sie erhalten RTL _nur_, wenn es nicht hilfreich ist. Wenn überhaupt, würde ich das Wort שלום rechtsbündig wünschen, aber sonst nichts.
image

Einige Editoren bestimmen die Richtung eines Absatzes automatisch anhand der ersten Zeichen. Vielleicht wäre es sinnvoll, für jede Zelle etwas Ähnliches zu tun?

@haggaie Jupyter Notebook verwendet CodeMirror als Texteditorbibliothek. Daher müsste die Funktion zum automatischen Ändern der Richtung jeder Zeile basierend auf ihrem ersten Zeichen in CodeMirror implementiert werden, der derzeit eine offene Funktionsanforderung ist (https://github.com/codemirror/CodeMirror/issues/4006).

Bitte beachten Sie, dass Sie in der Jupyter Notebook-Version >= 6.1 die Befehlspalette (Strg+Shift+P in Chrome) verwenden können, um die Richtung einer Zelle oder des gesamten Notebooks zu ändern. Dort finden Sie zwei nützliche Befehle: toggle current cell ltr/rtl und toggle notebook ltr/rtl . Ich habe festgestellt, dass diese Befehle für den täglichen Gebrauch gerade ausreichen.

PS

Wenn Sie diese Befehle bereits kennen, aber die Richtung jeder Zelle wirklich automatisch ändern müssen, kann eine Erweiterung entwickelt werden, die so etwas wie diesen Kern verwendet , um die Richtung zu erkennen und dann das Metadaten-Tag direction von Zellen dynamisch festzulegen . Eine andere (nicht empfohlene) Problemumgehung besteht darin, die Hacky-Erweiterung auszuprobieren, die ich in der Vergangenheit geschrieben habe ( hier ).

Danke @m2-farzan. Um ehrlich zu sein, bin ich mit der Einstellung toggle rtl layout meisten zufrieden, da ich normalerweise mit Chrome arbeite, die auf RTL-Locale eingestellt ist, während ich an vollwertigen LTR-Notebooks arbeite. Aber ich stimme zu, dass das Ändern jeder Zelle mit den von Ihnen genannten Einstellungen hilfreich sein könnte.

'RTL-Layout umschalten' löst das Problem, aber hier geht es um vernünftige Standardeinstellungen: Die aktuellen Standardeinstellungen sind nie korrekt.
Die Art und Weise, wie dies implementiert ist, zwingt jeden neuen hebräisch oder arabisch sprechenden Jupyter-Benutzer zu einer schrecklichen Erfahrung, bis er diesen Thread findet.

Dies ist ab jupyter 6.1.0 behoben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen