Ancora una volta, sulla localizzazione MQL

 

L'argomento è già stato toccato di sfuggita. Sto parlando della possibilità di scrivere esperti completamente in russo (o in qualsiasi altra lingua) in MQL. Qualcosa del genere:

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

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

So che questa funzione è molto utile. Chi dubita o crede che non abbia senso (perché ogni programmatore competente dovrebbe conoscere l'inglese), risponderò solo a un'obiezione: perché allora il terminale ha un mucchio di file di lingua delle impostazioni dell'interfaccia e perché l'aiuto è tradotto in diverse lingue? ;)

Per quanto capisco il meccanismo di un parser, dovrebbe avere "liste" di stringhe di parole riservate come for, long, ..... Per "tradurre" completamente il compilatore per essere in grado di compilare testi in russo, basta sostituire la stringa di testo "for" con "loop" ecc. nel codice del compilatore e dopo di che tutto dovrebbe funzionare come prima. La lista di corrispondenza delle parole inglesi originali e delle varianti localizzate può essere estratta dai file, come ora si fa per le voci di menu del terminale.

Qui ci sono possibili insidie: in un testo russo così localizzato l'incluudom inserisce un testo di sistema con parole inglesi. Puoi evitarli solo se il compilatore riconosce entrambe le varianti. Cioè, accanto alla tabella con le parole inglesi deve essere messa un'altra versione localizzata delle stringhe, in modo che il compilatore possa gestire entrambe le "grafie".

C'è una seconda possibile insidia: quando è necessario compilare il testo dei frammenti in più lingue. Ma anche questi possono essere risolti. Di regola, tutto viene localizzato in una sola lingua che viene utilizzata dal programmatore. Quindi qualsiasi miscela di lingue può essere prima (probabilmente con uno strumento separato o una voce di menu ME) convertita in inglese. E poi tutta questa salsiccia viene convertita nella tua lingua madre.

Nel caso più estremo, potete fare un'altra direttiva al compilatore #substitute source dest che semplicemente sostituirà la stringa source con dest prima della compilazione e compilerà il risultato. Poi la localizzazione può essere fatta come suggerito da TheXpert.


So che il problema è risolvibile. Spero che questo miglioramento non porti a una riscrittura radicale del codice del compilatore. Sono quasi sicuro che gli sviluppatori combatteranno questa idea con tutte le loro forze e capisco molto bene le loro motivazioni. Ma ho una flebile speranza che ora, mentre MQL5 è ancora in beta, questa caratteristica possa essere implementata, quindi ho deciso di sollevare questa domanda ancora una volta: Può essere possibile fornire un'opportunità di scrivere programmi in una lingua madre, nella lingua che si pensa e nella quale si comunica con i commercianti e i clienti?

 
Sono d'accordo, nella 1C, per esempio, all'inizio era possibile programmare in russo.
 

La mancanza di localizzazione contribuisce alla comprensione del codice da parte di programmatori che non conoscono la vostra lingua. Quindi contro.

 
lea >> :

La mancanza di localizzazione contribuisce alla comprensione del codice da parte di programmatori che non conoscono la vostra lingua. Quindi contro.

Le cose sono molto più interessanti.


Cosa vi impedisce di nominare tutto, comprese le variabili, con la stessa direttiva?

Poi, usando il carattere jolly possiamo facilmente ottenere una versione inglese di base.

Ed estendendo la funzionalità della direttiva, è anche possibile fare un supporto per selezionare le localizzazioni da quelle esistenti.

 
lea >> :

La mancanza di localizzazione contribuisce alla comprensione del codice da parte di programmatori che non conoscono la vostra lingua. Ecco perché sono contrario.

Sì. E poi, quando la gente pubblicherà il codice, sarà tutto spento,

e tutti chiederanno ingenuamente:

- "Non lo sai? Devi scaricare un extra in linea... vasya_localizzazione_v2

E ognuno avrà una localizzazione diversa e con versioni diverse.

 
TheXpert писал(а) >>

Cosa vi impedisce di nominare tutto, comprese le variabili, con la stessa direttiva?

Poi, usando il carattere jolly possiamo facilmente ottenere la versione inglese di base.

Ed estendendo la funzionalità della direttiva possiamo anche fare un supporto per scegliere tra le localizzazioni esistenti.

Non c'è altro da fare che tradurre i nomi delle variabili! Vado a programmare, non a sedermi con il dizionario per pubblicare la fonte.

 
IlyaA >> :
In 1C, per esempio, inizialmente era possibile programmare in russo.

Ti ucciderei - onestamente! Odio queste "localizzazioni".

C'era una storia su ithappens.ru proprio oggi:


#1497: Pornobambole patriottiche

26 novembre 2009, 09:00

valutazione: 628

Alla fine del 1980 appena avuto personal computer D3-28 (ingresso da cassetta registratore), Electronica-60 (ingresso da nastro perforato), DVK-2 (ingresso da 5 "dischetto con 360 Kb). E uno dei nostri dipartimenti ha comprato 3 PC "Iskra" (non ricordo il numero di modifica). Tutto questo ha avuto luogo in un periodo di lotta del partito e del popolo contro lo straniero.

Quindi questi Iskra avevano già un BASIC in russo. La traduzione è stata incredibile. INPUT è "enter", indovina cos'è END? Esatto, FINE.

È così che abbiamo soprannominato queste "Scintille": "INPUT". Tuttavia, hanno lavorato per noi per circa tre mesi e poi sono morti (morti?) Insieme a questo porno-base, li abbiamo mandati alla fabbrica e non sono più tornati da noi.

 

Per molto tempo ho scritto codice in cirillico e non ho mai pensato al fatto che anche le parole riservate devono essere tradotte (seconda abitudine).

Leggendo il codice subito vedo il significato di "if", ma quando scrivo bozze e metto "if" il significato comincia a perdersi (seconda abitudine naturale).

E poi le parole riservate non hanno un significato diretto come inteso dagli anglofoni, quindi i non anglofoni hanno il vantaggio di capire che "if" non è un "se", "if" è un operatore.

 
Azzx >> :

Ti ucciderei - onestamente! Odio queste "localizzazioni".


Collega, andiamo. Non devi uccidere. Se li uccidi tutti, sei da solo. :)
 
IlyaA >> :


Collega, andiamo. Non devi uccidere. Se li uccidi tutti, sei da solo. :)

Avranno uno sconto all'inferno per questo - per il martirio! Quindi è solo grazie alla mia umanità... :)

 

Urain писал(а) >>

Inoltre, le parole riservate non hanno un significato diretto come inteso dagli anglofoni, quindi i non anglofoni hanno il vantaggio di capire che "if" non è un "se", "if" è un operatore.

Gli anglofoni non hanno il vantaggio, hanno lo svantaggio. Perché quando scorro un programma nella mia testa, non c'è nessun "se", è la nozione più astratta.