-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathDataModules.Translation.pas
More file actions
74 lines (62 loc) · 1.83 KB
/
Copy pathDataModules.Translation.pas
File metadata and controls
74 lines (62 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
unit DataModules.Translation;
interface
uses
System.SysUtils, System.Classes,
AWS.Translate;
type
TTranslationDM = class(TDataModule)
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
FClient: ITranslateClient;
FDetectedLanguageCode: string;
FSourceLanguageCode: string;
FTargetLanguageCode: string;
FTranslatedText: string;
property Client: ITranslateClient read FClient;
public
function TranslateText(const AText: string): Boolean;
property DetectedLanguageCode: string read FDetectedLanguageCode;
property SourceLanguageCode: string read FSourceLanguageCode write FSourceLanguageCode;
property TargetLanguageCode: string read FTargetLanguageCode write FTargetLanguageCode;
property TranslatedText: string read FTranslatedText;
end;
var
TranslationDM: TTranslationDM;
implementation
{%CLASSGROUP 'FMX.Controls.TControl'}
{$R *.dfm}
procedure TTranslationDM.DataModuleCreate(Sender: TObject);
begin
FSourceLanguageCode := 'auto';
FTargetLanguageCode := 'en';
FClient := TTranslateClient.Create;
end;
procedure TTranslationDM.DataModuleDestroy(Sender: TObject);
begin
FClient := nil;
end;
function TTranslationDM.TranslateText(const AText: string): Boolean;
var
LRequest: ITranslateTranslateTextRequest;
LResponse: ITranslateTranslateTextResponse;
begin
FDetectedLanguageCode := '';
FTranslatedText := '';
LRequest := TTranslateTranslateTextRequest.Create(
SourceLanguageCode,
TargetLanguageCode,
AText
);
LResponse := Client.TranslateText(LRequest);
if LResponse.IsSuccessful then
begin
if SourceLanguageCode.Equals('auto') then
FDetectedLanguageCode := LResponse.SourceLanguageCode;
FTranslatedText := LResponse.TranslatedText;
Result := True;
end
else
Result := False;
end;
end.