改めて、MQLのローカライズについて

 

この話題は、すでに一通り 触れています。MQLで完全にロシア語(または他の言語)でエキスパートを書くことができるようになったという話です。こんな感じ。

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

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

この機能はとても便利なものだと思います。なぜ、端末にインターフェース設定の言語ファイルがたくさんあるのか、なぜ、ヘルプがいろいろな言語に翻訳されているのか。;)

私がパーサーの仕組みを理解する限り、for, long, ...といった予約語の文字列の「リスト」が存在するはずです。ロシア語のテキストをコンパイルできるようにコンパイラを完全に「翻訳」するには、コンパイラのコード中の「for」という文字列を「loop」などに置き換えるだけで、あとはすべてが以前と同じように動くはずです。現在、端末のメニュー項目で行っているように、元の英単語とローカライズされた異形語の対応表をファイルから抽出することができます。

ここで考えられる落とし穴は、incluudomによってそのようなローカライズされたロシア語のテキストでは、英語の単語でシステムのテキストを挿入します。コンパイラが両方の変種を認識する場合にのみ、これらを回避することができます。つまり、英単語のテーブルの隣に、ローカライズした別の文字列を置き、コンパイラが両方の「綴り」を扱えるようにしなければならない。

2つ目の落とし穴は、フラグメントのテキストを多言語でコンパイルする必要がある場合です。しかし、それらも解決することができます。原則として、プログラマーが使用する単一言語へのローカライズを行います。したがって、どのような言語が混在していても、まず(おそらく別のツールかMEメニュー項目で)英語に変換することができます。そして、このソーセージをすべて母国語に変換するのです。

最も極端なケースでは、コンパイラに別の指令 #substitute source dest を作ると、コンパイルの前に文字列 source を dest に置き換えるだけで、その結果をコンパイルすることができます。そうすれば、TheXpertが 提案するよう なローカライズが可能になります。


解決可能な問題であることは分かっています。この改善によって、コンパイラのコードを根本的に書き換えることにならなければいいのですが......。開発者はこの案に全力で対抗してくることはほぼ確実で、その動機もよくわかります。しかし、MQL5がまだベータ版である今、この機能が実装されるかもしれないという淡い期待を持っているので、もう一度この質問を投げかけることにしました:あなたが考えている、トレーダーや顧客とコミュニケーションをとる母国語でプログラムを書く機会を提供できないでしょうか?

 
そうですね、例えば1Cでは、もともとロシア語でプログラミングすることが可能でした。
 

ローカライゼーションの欠如は、あなたの言語を知らないプログラマーがコードを理解することに貢献します。したがって、反対。

 
lea >> :

ローカライゼーションの欠如は、あなたの言語を知らないプログラマーがコードを理解することに貢献します。したがって、反対。

もっと面白いことがあるんです。


変数を含むすべてのものに、同じディレクティブで名前を付けることを妨げるものは何ですか?

そして、ワイルドカードを使えば、簡単に基本的な英語版を手に入れることができます。

また、ディレクティブの機能を拡張することで、既存のローカライズの中から選択するようなサポートまで可能になります。

 
lea >> :

ローカライゼーションの欠如は、あなたの言語を知らないプログラマーがコードを理解することに貢献します。だから、私は反対なんです。

そして、みんながコードを投稿すると、すべて無点灯になる。

と誰もが素朴に思うことでしょう。

- "知らないの?" "インラインの追加ダウンロードが必要です...バシアローカライズ_v2

また、バージョンによってローカライズが皆違うでしょう。

 
TheXpert писал(а)>>

変数を含むすべてのものに、同じディレクティブで名前を付けることを妨げるものは何ですか?

そして、ワイルドカードを使えば、簡単に基本的な英語版を取得することができます。

また、ディレクティブの機能を拡張することで、既存のローカライズの中から選択することもできるようになります。

変数名を翻訳する以外にはない!私はプログラミングをするのであって、辞書を引いてソースを公開するために座っているのではありません。

 
IlyaA >> :
例えば、1Cでは、当初はロシア語でプログラミングができたんです。

殺すぞー、正直言ってー。私はこういう「ローカライズ」が大嫌いです。

ちょうど今日、ithappens.ruに記事が載っていました。


#第1497回:愛国ポルノバブリー

2009年11月26日 09:00

評価:628

1980年末には、D3-28(テープレコーダーカセットからの入力)、Electronica-60(パンチテープからの入力)、DVK-2(360Kbの5インチディスケットからの入力)のパーソナルコンピュータがあった。そして、ある部署では「イスクラ」(改造番号は失念)を3台購入しました。これらはすべて、党と人民の対外闘争の時期に起こったことである。

このイスクラは、すでにロシア語のBASICを持っていたわけです。翻訳がすごかった。INPUTは「入力」、ENDは何だと思う?そうです、ENDです。

そこで、この「Sparks」に「INPUT」という愛称をつけました。しかし、このポルノベーシックと一緒に製造工場に送ったところ、二度と戻ってきてくれませんでした。

 

私は長い間、キリル文字でコードを書いてきましたが、予約語も翻訳する必要があるなんて考えたこともありませんでした(第二の天性癖)。

コードを一気に読むと「if」の意味がわかるのですが、下書きを書いて「if」をつけると意味がわからなくなり始めます(第二の性癖)。

それから、予約語は英語圏の人が理解するような直接的な意味を持たないので、英語圏以外の人は「もし」は「if」ではなく「if」は「operator」だと理解できる利点があるんです。

 
Azzx >> :

殺すぞー、正直言ってー。こういうローカライズは嫌いだ。


仲間よ、来いよ。殺す必要はない。全員殺したら一人前だ。:)
 
IlyaA >> :


仲間よ、来いよ。殺す必要はない。全員殺したら一人前だ。:)

殉教者として、地獄で割引を受けることができるのです。だから、私の人間性だけが原因なのか・・・。:)

 

Urain писал(а) >>

また、予約語は英語圏の人が理解するような直接的な意味を持たないので、英語圏以外の人は「もし」は「if」ではなく「if」は「operator」だと理解できる利点があります。

英語圏の人は有利なのではなく、不利なのです。なぜなら、頭の中でプログラムをスクロールするとき、「もし」はなく、非常に抽象的な概念だからです。

理由: