"델파이: 완전한 중국어" 최종판 ("가정용 컴퓨터" 37호에 게재되었습니다. 새 병을 용서해 주세요!)
시안 리앙 밍
------------------------------------- ----------------------------------
이 글을 쓰기 전에는 이런 더러운 생각을 했습니다. '이 트릭을 다른 사람에게 '누설'해서는 안 됩니다! 그러나 내 양심은 그런 생각을 하면 안 된다고 즉시 말했습니다. 지난 글 "델파이: 완전한 중국어"에 대한 보충자료로, 제 양심에 대한 보상이라고 볼 수 있겠네요!
이제 요점을 살펴보겠습니다. 여러분 모두 아시다시피, 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. 델파이에서 정의한 문자열 상수를 우리의 모국어인 중국어로 "번역"합니다.
3. "번역" 작업이 완료된 후 원본 파일명으로 저장합니다.
4. 이제 결과를 시험해보고, 새 프로젝트를 생성하고, 시스템 프롬프트를 발생시키는 일부 코드를 의도적으로 작성하고, 컴파일하기 전에 Delphi 프로젝트 옵션 대화 상자의 디렉터리/조건 페이지에 있는 검색 경로 옵션으로 이동하여 검색을 추가해 보겠습니다. 경로(즉, 방금 상수 단위를 수정한 디렉터리)를 확인하고 종료합니다.
5. 당신의 영어 번역 수준을 지켜보세요!
알아채다:
① 귀하의 버전이 Delphi 3인 경우 위 경로를 그에 맞게 변경하고 프로젝트 옵션 대화 상자의 디렉터리/조건은 디렉터리입니다.
② 이 컴파일 조건 변경은 이 프로젝트에만 유효합니다. 새 프로젝트를 만든 후 재설정해야 합니다. 이 문제를 완전히 수정하려면 다음을 따르세요.
Windows 레지스트리 편집 프로그램 Regedit.exe를 실행하고, HKEY_CURRENT_USER->Software->Borland->Delphi->4.0->Library를 열고 "$(DELPHI)SourceVCL".Ok를 문자열 값 중 하나에 추가하세요. "검색 경로" , 목적이 달성되었습니다!
다음은 작성자가 Consts.pas 유닛 파일에서 MessageDlg 함수의 상수를 수정한 후 함수에서 보낸 메시지입니다. 이번에는 영어 반, 양 반 메시지 상자가 표시되지 않습니다. , 꽤요?
...
시작하다
MessageDlg('기분이 어때요?'+#13#10#13#10+
'여기에서는 "SMsgDlgInformation"을 '메시지'로 번역합니다.'+#13#10+
'"SOKButton"을 'OK'로 번역한 결과!',
mt정보,[mbok],0);
끝;
...
****여기에 그림 4를 삽입하세요****
위의 작업이 너무 정직한가요?! 사실 우리는 Inprise가 동의하는 한 이러한 상수를 사용자 정의하여 특별한 효과를 얻을 수 있습니다. 예를 들어 "SMsgDlgInformation"을 소프트웨어 제목으로 번역할 수 있습니다. 자신의 스튜디오 이름 등을 통해 당신의 남다른 개성이 마음껏 드러날 것입니다!
이것이 제가 델파이의 "완전한 중국어"에 대해 소개하려고 하는 모든 경험과 기술입니다. (이 모든 세트는 제가 가지고 있는 두 가지 프로그램을 설명한 후 제 개인 홈페이지에 올릴 테니 그때 거기로 가세요.) 물론, 부르세요. "완전히 중국스럽다"는 말에 부끄러워지지만, 인프라이즈가 VB 프로그래머들을 "부러워하는" 시대를 하루빨리 종식시켰으면 좋겠습니다!
여전히 몇 가지 문제가 있습니다. 예를 들어 Delphi 환경은 영어이고 보고서 미리보기 프롬프트와 버튼도 영어입니다. 첫 번째 질문에 대해서는 개인적으로 프로그래머가 메뉴를 이해조차 할 수 없기 때문에 필요하지 않다고 생각합니다. . 이해가 되지 않는다면, 우리 노력의 목표는 사용자입니다. 두 번째 문제에 대한 해결책도 있습니다. 이 주제는 여기서 다룰 수 없지만 인터넷에서 많은 사람들이 이 질문을 하는 것을 보았으므로 간단히 설명하겠습니다. 여기서 논의해 보겠습니다.
① 필요에 따라 QuickRep 콘텐츠를 개발합니다.
②QuickRep의 미리보기 모드를 모방하거나 QRPreview를 직접 사용자 정의하세요.
③QuickRep의 OnPreview 이벤트에서 QuickRep의 QRPrinter를 QRPreview의 QRPrinter에 할당합니다.
(예: QRPreview1.QRPrinter:=Quickrep1.QRPrinter;) QRPreview는 QuickRep을 대체할 수 있습니다.
미리보기 모드.
진행자: Liang Ming
날짜: 1999-03-01