『Delphi: Complete Chinese』の最終版(『ホームコンピュータ』第37号に掲載。ボトルが新しいのはご容赦ください!)
西安梁明
-------------------------------------------------- ----------------------------------
この記事を書く前に、私はこのトリックを他人に「漏らしてはいけない!」という非常に汚い考えを持っていましたが、すぐに私の良心が私にそのような考えを持ってはいけないと告げたので、すぐにそれを書き留めました。前回の記事「Delphi: Complete Chinese」の補足として、これは私自身の良心へのご褒美と言えるでしょう。
さて、本題に入りましょう: 皆さんご存知のとおり、Delphi 自体のメッセージ (ここでは、Delphi システム ダイアログ ボックス、例外プロンプトなどを含む Delphi 自体からのすべてのメッセージを指します) を扱うとき、私たちがとる一般的なアプローチは次のとおりです。ユーザーに純粋な中国語を提供するために、「Delphi に先んじる」か、システムの機能をブロックし、独自の方法で対処します。ただし、環境の目的は、プログラマの既存の経験に基づいて主観的に予測することしかできません。システムの複雑さと私たち自身のレベルの制限により、この結果は必然的に次のような問題になります。いつでも発生する可能性があり、解決されない可能性があります。完全に処理されていない、またはまったく処理されていない場合、ユーザーの使用中に英語のプロンプトが表示された場合、プログラムの「グレード」は大幅に低下します。
したがって、少なくとも、プログラムにバグが発生したときに、一般のユーザーがプロンプトを理解できる、より理想的で徹底的な方法も模索する必要があります (幸いなことに、作者が繰り返したように、それは何をしてもよいという意味ではありません)。別の確実な戦略を見つけてください。以下の説明を聞いてください (Delphi のバージョンに VCL のソース コードがある場合、つまりプロフェッショナル バージョンまたはエンタープライズ バージョンの場合のみ)。
0. Delphi の VCL ソース コードをバックアップします (ディレクトリは通常 "X:PROgram FilesBorlandDelphi4SourceVcl" です)。もちろん、必要に応じて、変更する必要があるいくつかのファイルのみをバックアップすることもできます。
1. Delphi 環境の VCL ディレクトリにある BdeConst.pas、Consts.pas、BdeConst.pas、DbConsts.pas、midconst.pas、mxConsts.pas、OleConst.pas、WebConst.pas およびその他のユニット ファイルを開きます。ファイルが定義されている
Delphi で使用される定数を定義します。
2. Delphi によって定義された文字列定数を私たちの偉大な母国語である中国語に「翻訳」します。
3. 「翻訳」作業が完了したら、元のファイル名に従って保存します。
4. 次に、結果を試してみましょう。新しいプロジェクトを作成し、システム プロンプトを表示するコードを意図的に記述します。コンパイルする前に、Delphi プロジェクト オプション ダイアログ ボックスのディレクトリ/条件ページの検索パス オプションに移動して、検索を追加します。パス (つまり、定数ユニットを変更したばかりのディレクトリ)、確認して終了します。
5. 英語の翻訳レベルに注意してください!
知らせ:
① バージョンが Delphi 3 の場合は、上記のパスを適宜変更し、[プロジェクト オプション] ダイアログ ボックスの [ディレクトリ/条件] を [ディレクトリ] にします。
② このコンパイル条件の変更は、このプロジェクトにのみ有効です。新しいプロジェクトを作成した後にリセットする必要があります。これを完全に修正したい場合は、次の手順に従ってください。
Windows レジストリ編集プログラム Regedit.exe を実行し、HKEY_CURRENT_USER->Software->Borland->Delphi->4.0->Library を開き、文字列値の 1 つに「$(DELPHI)SourceVCL」.Ok を追加します。 「探索経路」、目的は達成されました!
以下は、作成者が Consts.pas ユニット ファイル内の関数 MessageDlg の定数を変更した後に関数によって送信されたメッセージです。今回は、半分英語と半分陽のメッセージ ボックスが表示されています。 、十分きれいですか?
...
始める
MessageDlg('気分はどうですか?'+#13#10#13#10+
'ここでは、「SMsgDlgInformation」を「メッセージ」として翻訳します;'+#13#10+
'「SOKButton」を「OK」として翻訳した結果!',
mtInformation,[mbok],0);
終わり;
...
****ここに図 4 を挿入****
上記のアクションは少し正直すぎるでしょうか?! 実際、(Inprise が同意する限り) これらの定数をカスタマイズして、特別な効果を実現することができます。たとえば、「SMsgDlgInformation」をソフトウェアのタイトルに翻訳することができます。自分のスタジオ名など、あなたの個性が存分に発揮されます!
これが、著者が Delphi の「完全中国語」について紹介する予定のすべての経験とスキルです (私が所有する 2 つのプログラムについて説明した後、このセット全体を私の個人ホームページに掲載します。そのときはそこにアクセスしてください) もちろん、電話します)。 「完全に中国語」だと私は赤面してしまいますが、Inprise が私たち VB プログラマーを「羨ましい」と思う時代をできるだけ早く終わらせてほしいと心から願っています。
問題はまだいくつかあります。たとえば、Delphi 環境が英語であること、レポートのプレビュー プロンプトとボタンも英語であることなどです。最初の質問については、メニューを理解できるプログラマーはいないため、個人的には必要ないと思います。理解できない場合は、私たちの取り組みの目標はユーザーです。このトピックについてはここで取り上げるべきではありませんが、インターネット上で多くの人がこの質問をしているのを見かけたので、簡単に説明します。ここでそれについて話し合います。このトピックは次のように終わります。
①必要に応じてQuickRepのコンテンツを開発します。
②QuickRep のプレビュー モードを模倣するか、QRPreview を自分でカスタマイズします。
③QuickRepのOnPreviewイベントでQuickRepのQRPrinterをQRPreviewのQRPrinterに代入する
(例: QRPreview1.QRPrinter:=Quickrep1.QRPrinter;) QRPreview は QuickRep を置き換えることができます
プレビューモード。
モデレータ: 梁明
日付: 1999-03-01
電子メール:[email protected]