Noch einmal zur MMS-Lokalisierung

 

Das Thema wurde bereits am Rande angesprochen. Ich spreche von der Möglichkeit, Experten in MQL komplett auf Russisch (oder einer anderen Sprache) zu schreiben. Etwa so:

Логический Четный;

Цикл ( целое НомерПозиции = 1; НомерПозиции <= ДлиннаБуфера; НомерПозиции++ )
{
  Если ( Остаток(НомерПозиции, 2) = 0 ) тогда Четный = Инстина; иначе Четный = Ложь;
  ....   
}

Ich weiß, dass diese Funktion sehr nützlich ist. Wer daran zweifelt oder glaubt, dass es keinen Sinn macht (denn jeder kompetente Programmierer sollte Englisch können), dem will ich nur einen Einwand beantworten: Warum hat das Terminal dann einen Haufen Sprachdateien für die Schnittstelleneinstellungen und warum ist die Hilfe in verschiedene Sprachen übersetzt? ;)

Soweit ich den Mechanismus eines Parsers verstehe, sollte er "Listen" von Zeichenketten mit reservierten Wörtern wie for, long, ..... haben. Um den Compiler vollständig zu "übersetzen", damit er Texte in russischer Sprache kompilieren kann, ersetzen Sie einfach die Zeichenfolge "for" durch "loop" usw. im Code des Compilers, und danach sollte alles wie zuvor funktionieren. Die Liste der Entsprechungen zwischen den englischen Originalwörtern und den lokalisierten Varianten kann aus den Dateien extrahiert werden, so wie es jetzt für die Menüpunkte des Terminals gemacht wird.

Hier gibt es mögliche Fallstricke: in einen solchen lokalisierten russischen Text wird durch das incluudom System Text mit englischen Wörtern eingefügt. Sie können sie nur vermeiden, wenn der Compiler beide Varianten erkennt. Das heißt, neben der Tabelle mit den englischen Wörtern muss eine weitere lokalisierte Version von string platziert werden, damit der Compiler beide "Schreibweisen" verarbeiten kann.

Es gibt einen zweiten möglichen Fallstrick: wenn Sie den Text der Fragmente in mehreren Sprachen kompilieren müssen. Aber auch sie können gelöst werden. In der Regel wird alles in einer einzigen Sprache lokalisiert, die vom Programmierer verwendet wird. Daher kann jede beliebige Sprachmischung zunächst (wahrscheinlich mit einem separaten Tool oder ME-Menüpunkt) ins Englische konvertiert werden. Und dann wird diese ganze Wurst in Ihre Muttersprache umgewandelt.

Im extremsten Fall können Sie dem Compiler eine weitere Anweisung #substitute source dest geben, die einfach die Zeichenkette source vor der Kompilierung durch dest ersetzt und das Ergebnis kompiliert. Dann kann die Lokalisierung wie von TheXpert vorgeschlagen durchgeführt werden.


Ich weiß, dass das Problem lösbar ist. Ich hoffe, dass diese Verbesserung nicht zu einer radikalen Umschreibung des Compiler-Codes führen wird. Ich bin mir fast sicher, dass die Entwickler diese Idee mit aller Macht bekämpfen werden, und ich verstehe ihre Beweggründe sehr gut. Aber ich habe die leise Hoffnung, dass jetzt, wo MQL5 noch in der Beta-Phase ist, diese Funktion implementiert werden könnte. Deshalb habe ich beschlossen, diese Frage noch einmal zu stellen: Könnte es möglich sein, eine Möglichkeit zu schaffen, Programme in einer Muttersprache zu schreiben, in der Sprache, an die Sie denken und in der Sie mit Händlern und Kunden kommunizieren?

 
Ich stimme zu, in 1C war es zum Beispiel ursprünglich möglich, auf Russisch zu programmieren.
 

Mangelnde Lokalisierung trägt zum Verständnis des Codes durch Programmierer bei, die Ihre Sprache nicht kennen. Deshalb dagegen.

 
lea >> :

Mangelnde Lokalisierung trägt zum Verständnis des Codes durch Programmierer bei, die Ihre Sprache nicht kennen. Deshalb dagegen.

Die Dinge sind viel interessanter.


Was hindert Sie daran, alles, einschließlich der Variablen, mit der gleichen Direktive zu benennen?

Mit Hilfe des Platzhalters können wir dann leicht eine englische Grundversion erhalten.

Und durch die Erweiterung der Funktionalität der Richtlinie ist es sogar möglich, die Auswahl von Lokalisierungen aus bestehenden zu unterstützen.

 
lea >> :

Mangelnde Lokalisierung trägt zum Verständnis des Codes durch Programmierer bei, die Ihre Sprache nicht kennen. Deshalb bin ich dagegen.

Ja, und wenn die Leute dann den Code posten, wird alles unbeleuchtet sein,

und jeder wird naiv fragen:

- "Wissen Sie das nicht? Sie müssen ein zusätzliches Inline-Programm herunterladen... vasya_lokalisierung_v2

Und jeder wird eine andere Lokalisierung haben und mit verschiedenen Versionen.

 
TheXpert писал(а) >>

Was hindert Sie daran, alles, einschließlich der Variablen, mit der gleichen Direktive zu benennen?

Mit Hilfe des Platzhalters können wir dann leicht die englische Grundversion erhalten.

Und durch die Erweiterung der Funktionalität der Richtlinie können wir sogar eine Unterstützung für die Auswahl zwischen den vorhandenen Lokalisierungen schaffen.

Es bleibt nichts anderes zu tun, als die Variablennamen zu übersetzen! Ich werde programmieren und nicht mit einem Wörterbuch arbeiten, um Quellen zu veröffentlichen.

 
IlyaA >> :
Ich unterstütze, in 1C war es zum Beispiel zunächst möglich, auf Russisch zu programmieren.

Ich würde dich umbringen - ganz ehrlich! Ich hasse diese "Lokalisierungen".

Auf ithappens.ru wurde gerade heute ein Bericht veröffentlicht:


#1497: Patriotisches Pornogeschwätz

November 26, 2009, 09:00

Bewertung: 628

Ende der 1980-er Jahre gab es die Personalcomputer D3-28 (Eingang vom Kassettenrekorder), Electronica-60 (Eingang vom Lochstreifen), DVK-2 (Eingang von 5"-Diskette mit 360 Kb). Und eine unserer Abteilungen kaufte 3 PCs "Iskra" (ich erinnere mich nicht an die Modifikationsnummer). All dies geschah in einer Zeit des Kampfes der Partei und des Volkes gegen das Ausland.

Diese Iskra's hatten also bereits ein BASIC in Russisch. Die Übersetzung war erstaunlich. INPUT ist "enter", und was ist wohl END? Das ist richtig, ENDE.

So haben wir diesen "Sparks" den Spitznamen "INPUT" gegeben. Sie arbeiteten jedoch etwa drei Monate lang für uns und starben dann (verstarben?). Zusammen mit dieser Pornobasis schickten wir sie an die Produktionsstätte und sie kamen nie wieder zu uns zurück.

 

Ich habe lange Zeit Code in Kyrillisch geschrieben und nie darüber nachgedacht, dass reservierte Wörter auch übersetzt werden müssen (zweite Naturgewohnheit).

Wenn ich den Code sofort lese, erkenne ich den Sinn von "if", aber wenn ich Entwürfe schreibe und "if" einfüge, geht der Sinn verloren (zweite Natur).

Und dann haben die reservierten Wörter keine direkte Bedeutung, wie sie von Englischsprechern verstanden wird, so dass Nicht-Englischsprecher den Vorteil haben zu verstehen, dass "if" kein "if" ist, "if" ist ein Operator.

 
Azzx >> :

Ich würde dich umbringen - ganz ehrlich! Ich hasse diese Lokalisierungen.


Kollege, kommen Sie. Ihr müsst nicht töten. Wenn du sie alle tötest, bist du auf dich allein gestellt. :)
 
IlyaA >> :


Kollege, kommen Sie. Ihr müsst nicht töten. Wenn du sie alle tötest, bist du auf dich allein gestellt. :)

Dafür bekommen sie in der Hölle einen Preisnachlass - für ihr Martyrium! Es liegt also nur an meiner Menschlichkeit... :)

 

Urain писал(а) >>

Außerdem haben reservierte Wörter keine direkte Bedeutung, wie sie von Englischsprechern verstanden wird, so dass Nicht-Englischsprecher den Vorteil haben, zu verstehen, dass "if" nicht ein "if" ist, sondern ein Operator.

Englischsprachige Menschen sind nicht im Vorteil, sie haben einen Nachteil. Denn wenn ich in meinem Kopf durch ein Programm blättere, gibt es kein "wenn", sondern das abstrakteste Konzept.