Una vez más, sobre la localización de MQL

 

El tema ya se ha tocado de pasada. Me refiero a la posibilidad de escribir expertos completamente en ruso (o en cualquier otro idioma) en MQL. Algo así:

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

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

Sé que esta función es muy útil. Quien dude o crea que no tiene sentido (porque cualquier programador competente debería saber inglés), sólo responderé a una objeción: ¿Por qué entonces el terminal tiene un montón de archivos de idioma de configuración de la interfaz y por qué la ayuda está traducida a diferentes idiomas? ;)

Por lo que entiendo el mecanismo de un analizador sintáctico, debería tener "listas" de cadenas de palabras reservadas como for, long, ..... Para "traducir" completamente el compilador para que pueda compilar textos en ruso, basta con sustituir la cadena de texto "for" por "loop", etc., en el código del compilador y después todo debería funcionar como antes. La lista de correspondencia de las palabras originales en inglés y las variantes localizadas puede extraerse de los archivos, como ahora se hace para los elementos del menú del terminal.

Aquí están las posibles trampas: en un texto ruso localizado por el incluudom inserta el texto del sistema con palabras en inglés. Sólo puede evitarlos si el compilador reconoce ambas variantes. Es decir, junto a la tabla con las palabras en inglés debe colocarse otra versión localizada de la cadena, para que el compilador pueda manejar ambas "ortografías".

Hay un segundo escollo posible: cuando se necesita compilar el texto de los fragmentos en varios idiomas. Pero también pueden resolverse. Por regla general, todo se localiza en un único idioma que utiliza el programador. Por lo tanto, cualquier mezcla de idiomas puede ser convertida primero (probablemente con una herramienta separada o un elemento del menú ME) en inglés. Y luego todo este embutido se convierte en tu lengua materna.

En el caso más extremo, puede hacer otra directiva al compilador #sustituir fuente dest que simplemente reemplazará la cadena fuente por dest antes de la compilación y compilará el resultado. A continuación, la localización se puede hacer como sugiere TheXpert.


Sé que el problema tiene solución. Espero que esta mejora no suponga una reescritura radical del código del compilador. Estoy casi seguro de que los desarrolladores combatirán esta idea con todas sus fuerzas y entiendo muy bien sus motivos. Pero tengo una débil esperanza de que ahora, mientras MQL5 está todavía en fase beta, se pueda implementar esta función, así que he decidido plantear esta cuestión una vez más: ¿Será posible ofrecer la posibilidad de escribir programas en una lengua materna, en el idioma en el que se piensa y en el que se comunica con los comerciantes y los clientes?

 
Estoy de acuerdo, en 1C, por ejemplo, originalmente era posible programar en ruso.
 

La falta de localización contribuye a la comprensión del código por parte de los programadores que no conocen su idioma. Por lo tanto, en contra.

 
lea >> :

La falta de localización contribuye a la comprensión del código por parte de los programadores que no conocen su idioma. Por lo tanto, en contra.

Las cosas son mucho más interesantes.


¿Qué le impide nombrar todo, incluidas las variables, con la misma directiva?

Entonces, utilizando el comodín podemos obtener fácilmente una versión básica en inglés.

Y ampliando la funcionalidad de la directiva, es posible incluso hacer un soporte para la selección de localizaciones a partir de las existentes.

 
lea >> :

La falta de localización contribuye a la comprensión del código por parte de los programadores que no conocen su idioma. Por eso estoy en contra.

Sí. Y luego, cuando la gente publique el código, todo estará sin iluminar,

y todos preguntarán ingenuamente:

- "¿No lo sabes? Necesitas descargar un extra en línea... vasya_localización_v2

Y cada uno tendrá una localización diferente con distintas versiones.

 
TheXpert писал(а) >>

¿Qué le impide nombrar todo, incluidas las variables, con la misma directiva?

Entonces, utilizando el comodín podemos obtener fácilmente la versión básica en inglés.

Y ampliando la funcionalidad de la directiva podemos incluso hacer un soporte para elegir entre las localizaciones existentes.

No hay nada más que hacer que traducir los nombres de las variables. Voy a programar, no a sentarme con el diccionario para publicar la fuente.

 
IlyaA >> :
Apoyo, en 1C, por ejemplo, inicialmente era posible programar en ruso.

Te mataría - ¡de verdad! Odio estas "localizaciones".

Hoy mismo se ha publicado un artículo en ithappens.ru:


#1497: Pornografía patriótica

26 de noviembre de 2009, 09:00

puntuación: 628

A finales de 1980 sólo había ordenadores personales D3-28 (entrada de cassette de la grabadora), Electronica-60 (entrada de cinta perforada), DVK-2 (entrada de disquete de 5" con 360 Kb). Y uno de nuestros departamentos compró 3 PCs "Iskra" (no recuerdo el número de modificación). Todo esto tuvo lugar en período de lucha del partido y del pueblo contra el extranjero.

Así que estos Iskra ya tenían un BASIC en ruso. La traducción fue increíble. INPUT es "enter". ¿Adivina qué es END? Así es, FIN.

Así es como apodamos a estos "Sparks": "INPUT". Sin embargo, nos funcionaron durante unos tres meses y luego murieron (¿fallecieron?) Junto con este porno-basura, los enviamos al fabricante y nunca volvieron a nosotros.

 

Durante mucho tiempo he estado escribiendo código en cirílico y nunca pensé en el hecho de que las palabras reservadas también necesitan ser traducidas (hábito de segunda naturaleza).

Leyendo el código de una vez veo el significado de "si", pero cuando escribo borradores y pongo "si" el significado empieza a perderse (hábito de segunda naturaleza).

Además, las palabras reservadas no tienen un significado directo como lo entienden los angloparlantes, por lo que los no angloparlantes tienen la ventaja de entender que "si" no es un "if", "if" es un operador.

 
Azzx >> :

Te mataría - ¡de verdad! Odio estas "localizaciones".


Colega, vamos. No tienes que matar. Si los matas a todos, estás por tu cuenta. :)
 
IlyaA >> :


Colega, vamos. No tienes que matar. Si los matas a todos, estás por tu cuenta. :)

Tendrán un descuento en el infierno por eso, por el martirio. Así que sólo por mi humanidad... :)

 

Urain писал(а) >>

Además, las palabras reservadas no tienen un significado directo como lo entienden los angloparlantes, por lo que los no angloparlantes tienen la ventaja de entender que "si" no es un "if", "if" es un operador.

Los angloparlantes no tienen la ventaja, sino la desventaja. Porque cuando recorro un programa en mi cabeza, no hay ningún "si", sino el concepto más abstracto.