Angenommen, Ihre Muttersprache ist Hebräisch, und Sie arbeiten in einer Programmiersprache wie Python 3, mit der Sie Hebräisch in den Quellcode einfügen können. Schön für dich! Du hast ein dict
:
d = {'a': 1}
und Sie möchten das a
durch etwas Hebräisch ersetzen . Sie ersetzen also dieses einzelne Zeichen:
d = {'א': 1}
Oh oh. Nur durch Ersetzen eines Zeichens, ohne weitere Änderungen vorzunehmen , wurde Ihre Anzeige verrückt. Alles vom Hebräischen bis zum Hebräischen 1
ist rückwärts und es ist äußerst nicht offensichtlich, dass dies sogar eine gültige Syntax ist ( es ist ), geschweige denn, was es bedeutet.
Hebräisch ist an sich von rechts nach links, und selbst ohne unsichtbare Steuerzeichen wird hebräischer Text von rechts nach links angezeigt. Dies gilt auch für bestimmte "reguläre" Zeichen in Positionen in der Nähe von Hebräisch sowie für Zeichen aus einigen anderen Skripten. Die Details sind kompliziert.
Wie gehst du damit um? Sie können keine Steuerzeichen in Ihren Quellcode einfügen, um die Anzeige zu reparieren, ohne den Code zu beschädigen. Wenn Sie alles in hexadezimaler Schreibweise schreiben, wird eine Art von Unlesbarkeit gegen eine andere ausgetauscht. Selbst wenn Sie sich damit abfinden, alles mit Zeichen aus dem Basic Latin-Block zu benennen und alle hebräischen Zeichenfolgen in Lokalisierungsdateien einzufügen, ist es schwer zu vermeiden, Text von rechts nach links mit Text von links nach rechts zu mischen.
JSON oder CSV mit Hebräisch werden verstümmelt. Wenn diese Lokalisierungsdateien, in die Sie Ihre Zeichenfolgen verschoben haben, für Menschen lesbar sein sollten, sind sie dies wahrscheinlich nicht. Wie geht's?
quelle
'.dlrow olleH'
. Wenn es von rechts nach links ist, macht Ihr Visual Studio etwas Seltsames, das weder von links nach rechts erzwungen wird, noch den richtigen bidirektionalen Unicode-Algorithmus. Jeder Fall hat seine eigenen Verwirrungsquellen.Antworten:
AFAIK, dies ist meistens relevant, wenn Sie Nicht-ASCII-Buchstaben in Bezeichnern (und möglicherweise Kommentaren) in Ihrem Code verwenden.
Wenn Sie sich disziplinieren, um dies zu vermeiden, z. B. wenn Ihr Code "Englisch" aussehende Bezeichner sowie Schlüsselwörter und Kommentare verwendet, ist dies weitaus weniger ein Problem (und jeder Softwareentwickler sollte in der Lage sein, englische Dokumentation und Code zu lesen). Die Internationalisierung und Lokalisierung Ihrer Anwendung erfolgt dann nur in Nachrichten , insbesondere in wörtlichen Zeichenfolgen .
Sie könnten dann einen Nachrichtenkatalog verwenden. In C und POSIX verwenden Sie beispielsweise gettext (3) und friends. Der lokalisierte Nachrichtenkatalog enthält alle lokalisierten / internationalisierten Varianten der Nachricht. Wenn Ihre Anwendung nur für hebräische Benutzer ist (und das ist kein großer Markt), haben Sie Hebräisch nur in wörtlichen Zeichenfolgen.
Genauer gesagt würde die Hallo-Welt-Anwendung enthalten
und Ihre Anwendung würde sich zu Beginn der Ausführung anpassen, indem sie setlocale (3) mit entsprechenden Argumenten aufruft .
Siehe Gebietsschema (7) . Passen Sie dies alles an Ihr Python und Betriebssystem an. Viele plattformübergreifende Frameworks (z. B. Qt ) bieten umfassende Unterstützung für Internationalisierung und Lokalisierung.
Natürlich gibt es das heikle Problem, Unicode-Zeichenfolgen anzuzeigen. Die meisten seriösen Anzeige- und GUI-Bibliotheken und Toolkits (Qt, GTk, ...) können mit Zeichenfolgen in verschiedenen Sprachen umgehen (z. B. Anzeigen von Inhalten, die Hebräisch und Englisch sowie Russisch und Chinesisch enthalten).
Lesen Sie für eine breitere Ansicht die Wikipage zur Internationalisierung und Lokalisierung von Software.
Eine JSON-Datei ist gültig, wenn sie nur ASCII-Zeichen enthält, wobei andere Zeichen (die nur in JSON-Zeichenfolgen vorkommen würden) mit
\u05d0
(anstelle vonא
) in der Zeichenfolge codiert sind .Vielleicht könnten Sie einen ausreichend guten Editor finden und ihn an Ihre Bedürfnisse anpassen. Ich bin mir sicher, dass Sie einen Emacs- Submodus finden (oder einen anpassen) können, um das spezielle Problem der Verwendung hebräischer Literalzeichenfolgen in Python zu behandeln (aber immer noch englisch aussehende Bezeichner und Kommentare).
Übrigens weiß ich nicht, wie eine hebräische Tastatur aussieht, aber in den meisten Tastaturlayouts können Sie sie so konfigurieren, dass die Eingabe von ASCII-Buchstaben (dh lateinischen Buchstaben) schneller ist als die Eingabe von Nicht-ASCII-Buchstaben. Selbst für Sie könnte es besser sein, englisch aussehenden Code einzugeben.
In Bezug auf JSON-Daten sollten Sie Ihren Editor so konfigurieren können, dass er sieht,
א
wann eine Zeichenfolge enthält\u05d0
(andernfalls verwenden Sie einen JSON-Konverter à la jq ).Daher glaube ich, dass Ihr eigentliches Problem darin bestehen sollte, einen guten Editor gut genug auszuwählen und zu konfigurieren (während Hebräisch nur in wörtlichen Zeichenfolgen enthalten ist; in dem seltenen Fall, in dem eine wörtliche Zeichenfolge sowohl Hebräisch als auch Englisch enthalten muss, teilen Sie sie in mehrere Teile auf). Ich denke, dass sowohl Emacs als auch Vim so konfiguriert werden könnten, dass sie Ihren Anforderungen entsprechen.
quelle