Encore une fois, à propos de la localisation du MQL

 

Le sujet a déjà été abordé en passant. Je parle de la possibilité d'écrire des experts en russe (ou toute autre langue) dans MQL. Quelque chose comme ça :

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

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

Je sais que cette fonctionnalité est très utile. Pour ceux qui doutent ou pensent que cela n'a aucun sens (car tout programmeur compétent devrait connaître l'anglais), je répondrai à une seule objection : pourquoi le terminal possède-t-il un tas de fichiers de langue pour les paramètres de l'interface et pourquoi l'aide est-elle traduite en différentes langues ? ;)

D'après ce que je comprends du mécanisme d'un analyseur syntaxique, il devrait avoir des "listes" de chaînes de mots réservés comme for, long, ...... Pour "traduire" complètement le compilateur afin de pouvoir compiler des textes en russe, il suffit de remplacer la chaîne de texte "for" par "loop", etc. dans le code du compilateur et après cela, tout devrait fonctionner comme avant. La liste de correspondance des mots anglais originaux et des variantes localisées peut être extraite des fichiers, comme cela se fait maintenant pour les éléments de menu du terminal.

Voici les pièges possibles : dans un tel texte russe localisé par l'incluudom insère un texte système avec des mots anglais. Vous ne pouvez les éviter que si le compilateur reconnaît les deux variantes. C'est-à-dire qu'à côté de la table contenant les mots anglais, il faut placer une autre version localisée des chaînes de caractères, afin que le compilateur puisse gérer les deux "orthographes".

Il existe un deuxième écueil possible : lorsque vous devez compiler le texte des fragments dans plusieurs langues. Mais elles aussi peuvent être résolues. En règle générale, tout est localisé dans une seule langue qui est utilisée par le programmeur. Par conséquent, tout mélange de langues peut être d'abord (probablement avec un outil séparé ou un élément de menu ME) converti en anglais. Et ensuite toute cette saucisse est convertie dans votre langue maternelle.

Dans le cas le plus extrême, vous pouvez faire une autre directive au compilateur #substitute source dest qui remplacera simplement la chaîne de caractères source par dest avant la compilation et compilera le résultat. Ensuite, la localisation peut être faite comme suggéré par TheXpert.


Je sais que le problème peut être résolu. J'espère que cette amélioration ne conduira pas à une réécriture radicale du code du compilateur. Je suis presque sûr que les développeurs vont combattre cette idée de toutes leurs forces et je comprends très bien leurs motivations. Mais j'ai un faible espoir qu'aujourd'hui, alors que MQL5 est encore en version bêta, cette fonctionnalité puisse être implémentée. J'ai donc décidé de soulever cette question une fois de plus : serait-il possible de donner la possibilité d'écrire des programmes dans une langue maternelle, dans la langue à laquelle vous pensez et dans laquelle vous communiquez avec les traders et les clients ?

 
Je suis d'accord, en 1C, par exemple, il était initialement possible de programmer en russe.
 

L'absence de localisation contribue à la compréhension du code par des programmeurs qui ne connaissent pas votre langue. Donc contre.

 
lea >> :

L'absence de localisation contribue à la compréhension du code par des programmeurs qui ne connaissent pas votre langue. Donc contre.

Les choses sont beaucoup plus intéressantes.


Qu'est-ce qui vous empêche de tout nommer, y compris les variables, avec la même directive ?

Ensuite, en utilisant le caractère générique, nous pouvons facilement obtenir une version anglaise de base.

Et en étendant la fonctionnalité de la directive, il est même possible de prendre en charge la sélection de localisations parmi celles qui existent déjà.

 
lea >> :

L'absence de localisation contribue à la compréhension du code par des programmeurs qui ne connaissent pas votre langue. C'est pourquoi je suis contre.

Oui. Et ensuite, quand les gens afficheront le code, tout sera éteint,

et tout le monde demandera naïvement :

- "Vous ne savez pas ? Vous devez télécharger une ligne supplémentaire... vasya_localization_v2

Et chacun aura une localisation différente et des versions différentes.

 
TheXpert писал(а) >>

Qu'est-ce qui vous empêche de tout nommer, y compris les variables, avec la même directive ?

Ensuite, en utilisant le caractère générique, nous pouvons facilement obtenir la version anglaise de base.

Et en étendant la fonctionnalité de la directive, nous pouvons même créer un support permettant de choisir parmi les localisations existantes.

Rien d'autre à faire que de traduire les noms des variables ! Je vais programmer, pas m'asseoir avec le dictionnaire pour publier la source.

 
IlyaA >> :
Je soutiens, en 1C, par exemple, initialement il était possible de programmer en russe.

Je te tuerais - honnêtement ! Je déteste ces "localisations".

Il y avait une histoire sur itappens.ru juste aujourd'hui :


#1497 : Porno-babillage patriotique

26 novembre 2009, 09:00

note : 628

A la fin des années 1980, il n'y avait que des ordinateurs personnels D3-28 (entrée à partir d'un magnétophone à cassette), Electronica-60 (entrée à partir d'une bande perforée), DVK-2 (entrée à partir d'une disquette de 5" avec 360 Kb). Et l'un de nos départements a acheté 3 PC "Iskra" (je ne me souviens pas du numéro de modification). Tout cela a eu lieu pendant la période de lutte du parti et du peuple contre les étrangers.

Donc ces Iskra avaient déjà un BASIC en russe. La traduction était incroyable. INPUT est "entrée". Devinez ce qu'est END ? C'est vrai, FIN.

C'est ainsi que nous avons surnommé ces "Sparks" : "INPUT". Cependant, ils ont travaillé pour nous pendant environ trois mois, puis sont morts (décédés ?). Avec ce porno-basique, nous les avons envoyés à l'usine de fabrication et ils ne nous sont jamais revenus.

 

Pendant longtemps, j'ai écrit du code en cyrillique et je n'ai jamais pensé au fait que les mots réservés devaient aussi être traduits (habitude de seconde nature).

Enlisant le code tout de suite, je vois le sens de "si", mais lorsque j'écris des brouillons et que je mets "si", le sens commence à se perdre (habitude de seconde nature).

Et puis les mots réservés n'ont pas un sens direct tel que compris par les anglophones, donc les non-anglophones ont l'avantage de comprendre que "si" n'est pas un "si", "si" est un opérateur.

 
Azzx >> :

Je te tuerais - honnêtement ! Je déteste ces localisations.


Collègue, allez. Tu n'as pas besoin de tuer. Si tu les tues tous, tu te débrouilles tout seul. :)
 
IlyaA >> :


Collègue, allez. Tu n'as pas besoin de tuer. Si tu les tues tous, tu te débrouilles tout seul. :)

Ils auront une réduction en enfer pour ça - pour le martyre ! Donc c'est seulement à cause de mon humanité... :)

 

Urain писал(а) >>

De plus, les mots réservés n'ont pas un sens direct tel qu'il est compris par les anglophones. Les non-anglophones ont donc l'avantage de comprendre que "si" n'est pas un "si", "si" est un opérateur.

Les anglophones n'ont pas l'avantage, ils ont le désavantage. Parce que lorsque je fais défiler un programme dans ma tête, il n'y a pas de "si", c'est un concept très abstrait.