09-10-2018, Saat: 22:52
Merhaba ;
Fmx ve Vcl için kullanabileceğiniz, translate fonksiyonunu paylaşmak istiyorum. Yandex mail açarak api key alabilirsiniz.
Fmx ve Vcl için kullanabileceğiniz, translate fonksiyonunu paylaşmak istiyorum. Yandex mail açarak api key alabilirsiniz.
unit TranslateFmx;
{-------------------------------------------
S.B FMX Yandex Translate
--------------------------------------------}
interface
uses SysUtils, FMX.Forms, System.Classes, System.Net.HttpClientComponent, Xml.XMLDoc, StrUtils;
type
TYandexLanguages=
(Afrikaans,Albanian,Arabic,Basque,Belarusian,Bulgarian,Catalan,Chinese,Chinese_Traditional,
Croatian,Czech,Danish,Dutch,English,Estonian,Filipino,Finnish,French,Galician,German,Greek,
Haitian_Creole,Hebrew,Hindi,Hungarian,Icelandic,Indonesian,Irish,Italian,Japanese,Latvian,
Lithuanian,Macedonian,Malay,Maltese,Norwegian,Persian,Polish,Portuguese,Romanian,Russian,
Serbian,Slovak,Slovenian,Spanish,Swahili,Swedish,Thai,Turkish,Ukrainian,Vietnamese,Welsh,Yiddish);
function mobTranslate(fParent:TForm;const Value:String;SourceLanguage,TargetLanguage:TYandexLanguages):String;
var
GlobalValue : String;
const
YandexLanguagesArr : array[TYandexLanguages] of string =
( 'af','sq','ar','eu','be','bg','ca','zh-CN','zh-TW','hr','cs','da','nl','en','et','tl','fi','fr','gl',
'de','el','ht','iw','hi','hu','is','id','ga','it','ja','lv','lt','mk','ms','mt','no','fa','pl','pt',
'ro','ru','sr','sk','sl','es','sw','sv','th','tr','uk','vi','cy','yi');
ApiKey = 'Api Key Yazılacak....';
implementation
function mobTranslate(fParent:TForm;const Value:String;SourceLanguage,TargetLanguage:TYandexLanguages):String;
var
xNetHTTP : TNetHTTPClient;
xMemoryStream : TMemoryStream;
XmlDoc : TXMLDocument;
xOutList : TStringList;
xUrl : String;
xSource,xTarget : String;
begin
Result := '';
xSource := YandexLanguagesArr[SourceLanguage];
xTarget := YandexLanguagesArr[TargetLanguage];
xUrl := '';
xUrl := Concat(xUrl,'https://translate.yandex.net/api/v1.5/tr/translate?key=',ApiKey);
xUrl := Concat(xUrl,'&lang=',xSource,'-',xTarget,'&text=');
xUrl := Concat(xUrl,UTF8Encode(Value));
xNetHTTP := TNetHTTPClient.Create(fParent);
xMemoryStream := TMemoryStream.Create;
xOutList := TStringList.Create;
XmlDoc := TXMLDocument.Create(fParent);
try
xNetHTTP.Get(xUrl,xMemoryStream);
xMemoryStream.Position := 0;
xOutList.LoadFromStream(xMemoryStream);
result := UTF8ToWideString(xOutList.Text);
XmlDoc.XML.Text := Result;
XmlDoc.Active := True;
Result := IfThen(XmlDoc.DocumentElement.ChildNodes.Count = 0 , 'Hata!' + sLineBreak + Result,XmlDoc.DocumentElement.ChildNodes['text'].Text);
finally
FreeAndNil(XmlDoc);
FreeAndNil(xOutList);
FreeAndNil(xMemoryStream);
FreeAndNil(xNetHTTP);
end;
end;
end.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..


