나는 어떤 언어를 다른 언어로 번역 할 수있는 코드를 찾고 있었지만 작동하지 않는 코드는 발견하지 못했습니다.
Google에 좋은 번역 API가 있다는 것을 알고 있지만 누구에게도 델파이 코드를 사용할 수 없습니다.
항상 오류가 있습니다. 도움이된다면 최종 학교 프로젝트의 최대한 빨리 번역 할 수있는 프로그램이 필요합니다.번역 언어 델파이
답변
아마 당신은 마르코 칸 투의 작품을 찾지 못했습니까? Works with REST/AJAX/Delphi
하지만 RRUZ에 따르면 Google 번역 API는 유료 서비스로만 제공됩니다.
감사합니다,이 코드는 구글 번역보다 더 유망 해 보입니다. exe는 주어진 PC에서 100 % 작동하지만 코드를 열고 컴파일하려고 할 때 오류가 발생합니다. 제가 실종 된 것 같습니다. 그것은 "TIdUri.ParamsEncode (strIn)"에서 ParamsEncode가 선언되지 않은 식별자라는 것을 알려줍니다. 그리고 그것은 나중에 나오는 PosEx에 대해서도 마찬가지입니다. –
감사합니다. 방금 델파이 7을 설치했고이 코드는 완벽하게 작동합니다. 어쨌든 Google의 API보다 쉽습니다. –
@MichaelMcQuirk, marco cantu 페이지에 나열된 프로젝트는 사용되지 않는 Google Language API 제품군의 이전 버전을 사용하므로주의하십시오. – RRUZ
Google Translate API은 좋은 옵션이지만 유료 서비스로만 제공됩니다. 대신 Microsoft Translator V2 API를 사용해보십시오. Using the Microsoft Translator V2 API from delphi
에서 델파이에서이 API를 사용하는 방법에 대해 자세히 알아보십시오.
업데이트 이것은 귀하의 델파이 버전과 호환되도록 수정 된 기사의 동일한 데모 프로젝트입니다.
program MicrosoftTranslatorApi;
{$APPTYPE CONSOLE}
uses
ShellApi,
ActiveX,
Classes,
ComObj,
Variants,
Windows,
WinInet,
SysUtils;
const
MicrosoftTranslatorTranslateUri = 'http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=%s&text=%s&from=%s&to=%s';
MicrosoftTranslatorDetectUri = 'http://api.microsofttranslator.com/v2/Http.svc/Detect?appId=%s&text=%s';
MicrosoftTranslatorGetLngUri = 'http://api.microsofttranslator.com/v2/Http.svc/GetLanguagesForTranslate?appId=%s';
MicrosoftTranslatorGetSpkUri = 'http://api.microsofttranslator.com/v2/Http.svc/GetLanguagesForSpeak?appId=%s';
MicrosoftTranslatorSpeakUri = 'http://api.microsofttranslator.com/v2/Http.svc/Speak?appId=%s&text=%s&language=%s';
//this AppId if for demo only please be nice and use your own , it's easy get one from here http://msdn.microsoft.com/en-us/library/ff512386.aspx
BingAppId = '73C8F474CA4D1202AD60747126813B731199ECEA';
Msxml2_DOMDocument = 'Msxml2.DOMDocument.6.0';
procedure WinInet_HttpGet(const Url: string;Stream:TStream);overload;
const
BuffSize = 1024*1024;
var
hInter : HINTERNET;
UrlHandle: HINTERNET;
BytesRead: DWORD;
Buffer : Pointer;
begin
hInter := InternetOpen('', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(hInter) then
try
Stream.Seek(0,0);
GetMem(Buffer,BuffSize);
try
UrlHandle := InternetOpenUrl(hInter, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
if Assigned(UrlHandle) then
begin
repeat
InternetReadFile(UrlHandle, Buffer, BuffSize, BytesRead);
if BytesRead>0 then
Stream.WriteBuffer(Buffer^,BytesRead);
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
end;
finally
FreeMem(Buffer);
end;
finally
InternetCloseHandle(hInter);
end;
end;
function WinInet_HttpGet(const Url: string): string;overload;
Var
StringStream : TStringStream;
begin
Result:='';
StringStream:=TStringStream.Create('');
try
WinInet_HttpGet(Url,StringStream);
if StringStream.Size>0 then
begin
StringStream.Seek(0,0);
Result:=StringStream.ReadString(StringStream.Size);
end;
finally
StringStream.Free;
end;
end;
function TranslateText(const AText,SourceLng,DestLng:string):string;
var
XmlDoc : OleVariant;
Node : OleVariant;
begin
Result:=WinInet_HttpGet(Format(MicrosoftTranslatorTranslateUri,[BingAppId,AText,SourceLng,DestLng]));
XmlDoc:= CreateOleObject(Msxml2_DOMDocument);
try
XmlDoc.Async := False;
XmlDoc.LoadXML(Result);
if (XmlDoc.parseError.errorCode <> 0) then
raise Exception.CreateFmt('Error in Xml Data %s',[XmlDoc.parseError]);
Node:= XmlDoc.documentElement;
if not VarIsClear(Node) then
Result:=XmlDoc.Text;
finally
XmlDoc:=Unassigned;
end;
end;
function DetectLanguage(const AText:string):string;
var
XmlDoc : OleVariant;
Node : OleVariant;
begin
Result:=WinInet_HttpGet(Format(MicrosoftTranslatorDetectUri,[BingAppId,AText]));
XmlDoc:= CreateOleObject(Msxml2_DOMDocument);
try
XmlDoc.Async := False;
XmlDoc.LoadXML(Result);
if (XmlDoc.parseError.errorCode <> 0) then
raise Exception.CreateFmt('Error in Xml Data %s',[XmlDoc.parseError]);
Node:= XmlDoc.documentElement;
if not VarIsClear(Node) then
Result:=XmlDoc.Text;
finally
XmlDoc:=Unassigned;
end;
end;
function GetLanguagesForTranslate: TStringList;
var
XmlDoc : OleVariant;
Node : OleVariant;
Nodes : OleVariant;
lNodes : Integer;
i : Integer;
sValue : string;
begin
Result:=TStringList.Create;
sValue:=WinInet_HttpGet(Format(MicrosoftTranslatorGetLngUri,[BingAppId]));
XmlDoc:= CreateOleObject(Msxml2_DOMDocument);
try
XmlDoc.Async := False;
XmlDoc.LoadXML(sValue);
if (XmlDoc.parseError.errorCode <> 0) then
raise Exception.CreateFmt('Error in Xml Data %s',[XmlDoc.parseError]);
Node:= XmlDoc.documentElement;
if not VarIsClear(Node) then
begin
Nodes := Node.childNodes;
if not VarIsClear(Nodes) then
begin
lNodes:= Nodes.Length;
for i:=0 to lNodes-1 do
Result.Add(Nodes.Item(i).Text);
end;
end;
finally
XmlDoc:=Unassigned;
end;
end;
function GetLanguagesForSpeak: TStringList;
var
XmlDoc : OleVariant;
Node : OleVariant;
Nodes : OleVariant;
lNodes : Integer;
i : Integer;
sValue : string;
begin
Result:=TStringList.Create;
sValue:=WinInet_HttpGet(Format(MicrosoftTranslatorGetSpkUri,[BingAppId]));
XmlDoc:= CreateOleObject(Msxml2_DOMDocument);
try
XmlDoc.Async := False;
XmlDoc.LoadXML(sValue);
if (XmlDoc.parseError.errorCode <> 0) then
raise Exception.CreateFmt('Error in Xml Data %s',[XmlDoc.parseError]);
Node:= XmlDoc.documentElement;
if not VarIsClear(Node) then
begin
Nodes := Node.childNodes;
if not VarIsClear(Nodes) then
begin
lNodes:= Nodes.Length;
for i:=0 to lNodes-1 do
Result.Add(Nodes.Item(i).Text);
end;
end;
finally
XmlDoc:=Unassigned;
end;
end;
procedure Speak(const FileName,AText,Lng:string);
var
Stream : TFileStream;
begin
Stream:=TFileStream.Create(FileName,fmCreate);
try
WinInet_HttpGet(Format(MicrosoftTranslatorSpeakUri,[BingAppId,AText,Lng]),Stream);
finally
Stream.Free;
end;
end;
var
lng : TStringList;
i : Integer;
FileName : string;
begin
try
CoInitialize(nil);
try
Writeln(TranslateText('Hello World','en','es'));
Writeln(DetectLanguage('Hello World'));
Writeln('Languages for translate supported');
lng:=GetLanguagesForTranslate;
try
for i:=0 to lng.Count-1 do
Writeln(lng[i]);
finally
lng.free;
end;
Writeln('Languages for speak supported');
lng:=GetLanguagesForSpeak;
try
for i:=0 to lng.Count-1 do
Writeln(lng[i]);
finally
lng.free;
end;
FileName:=ExtractFilePath(ParamStr(0))+'Demo.wav';
Speak(FileName,'This is a demo using the Microsoft Translator Api from delphi, enjoy','en');
ShellExecute(0, 'open', PChar(FileName),nil,nil, SW_SHOWNORMAL) ;
finally
CoUninitialize;
end;
except
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
Writeln('Press Enter to exit');
Readln;
end.
귀하의 기사에 대한 +1 – RBA
좋아, 내가받은 오류의 예를 원하는 모든 사람들을 위해, 여기에 내가 2 오류있어. (나는 http://theroadtodelphi.wordpress.com/2011/05/30/using-the-microsoft-translator-v2-from-delphi/를 언급하고있다.)이 코드를 시도 할 때 내 첫 번째 오류가 발생한다. 클래스 파일 "Generics.Collections"가 존재하지 않습니다. 나는 당신이 .pas 파일을 다운로드 할 수있는 사이트를 찾고 있지만 어떤 것도 찾을 수 없다. 두 번째 오류는 내가, 나는 첫 번째 오류 때문에 그것을 얻을 줄 알았는데 64 행 (페이지의 하단에 전체 코드) 나는 많은 실제 매개 변수가 있다는 오류가 발생합니다. –
(계속) 컴파일러는 분명히 TEncoding.UTF8이 무엇인지 알지 못합니다. 내가 누락 된 "Generics.Collections"파일에 있어야합니다. –
우선 언어를 다른 언어로 번역 할 수있는 100 % 도구를 찾을 수 없습니다. 당신은 당신을 위해 약간의 (다소간) 일을하는 도구를 가질 수 있지만, 나머지는 '연마'해야합니다. RRUZ이 말했듯이 Microsoft의 번역기를 사용할 수는 있지만이 경우에도 제가 말한 내용이 적용됩니다. 이 유형의 도구는 비용이들 것입니다. Google의 번역은 상당히 훌륭하지만 비용을 지불해야합니다.
추신 : 나는 학교에서 어떤 언어에서 어떤 언어로 번역하는 도구를 만들 것을 요구하지 않는다고 생각합니다. 어쩌면 그 개념을 증명할 수있는 작은 도구 일 것입니다. 그냥 내 2 센트 ...
글쎄요, 실제로 제가 가진 프로젝트는 사용자에게 새로운 언어를 가르쳐 줄 수있는 프로그램을 만들어야한다는 것입니다. Google 번역의 API를 사용하는 것은 프로그램의 작지만 중요한 요소 중 하나 일뿐입니다. 대부분의 프로젝트가 완료되었으므로 텍스트를 번역 할 방법이 필요합니다. –
- 1. 언어 번역
- 2. PHP에서 언어 번역
- 3. 변수를 사용하여 언어 번역
- 4. 오스트로 네시아 언어 번역
- 5. Google 언어 API로 일괄 번역
- 6. 오픈 소스 언어 번역 엔진
- 7. Google Ajax 언어 번역 질문
- 8. 델파이 SAPI 텍스트 음성 언어
- 9. 큰 데이터베이스에서 대량 언어 번역 수행
- 10. 언어 번역 사전 기술 관련 내용
- 11. Android : 클릭하면 전체 앱의 언어 번역
- 12. Java에서 구문 언어 번역 엔진을 만드는 방법
- 13. 검색 및 교체 내부 파일은 델파이 언어
- 14. 구글에서 중국어 로마자는 구글 언어 API가 중국어로 번역 정상적으로 작동 번역 API
- 15. Joomla, Joomfish 전체 페이지 번역뿐만 아니라 언어 번역!
- 16. 도메인 특정 언어 (DSL)를 현지화 (번역) 할 수 있습니까?
- 17. SSAS Reporting Services - 데이터웨어 하우스에 특정 언어/번역
- 18. Django : 언어 세션/쿠키를 사용하지 않고 문자열 번역
- 19. 어떻게 언어 번역 모듈을 PHP로 구현할 수 있습니까
- 20. 컴퓨터 언어 처리 도구를 사용하여 문맥을 고려한 단일 단어 번역
- 21. 프로그래밍 언어 사양에서 왜 어휘 분석은 번역 할 수 없습니까?
- 22. Drupal : 내용이 번역 될 때만 언어 전환기 표시
- 23. 번역 알고리즘
- 24. 셀러리 작업 번역
- 25. 델파이 2009와 델파이 2010
- 26. 델파이 2010 : 델파이
- 27. 드루팔 (Drupal의 문자열 번역
- 28. 델파이 : 데이터 유형을 정의
- 29. PHP에서 JavaScript 번역 또는 번역
- 30. 구글 번역 아이폰을위한 API를 번역
지금까지 가지고있는 것을 보여 주시겠습니까? 문제 해결에 도움을 줄 수 있습니까? 우리는 당신을 위해 학교 프로젝트를하고 싶지 않습니다. –
질문을 분명히해야한다고 생각합니다. IMO, 번역을 수행 할 웹 서비스, DLL 또는 기타 API를 호출하여 변환을 수행하는 코드를 찾고 있습니다. "다른 언어로 번역 할 수있는 코드"는 고급 CS 기술 이외에 언어학 박사 학위를 요구할 수 있습니다. –