googletranslate.pp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780
  1. unit googletranslate;
  2. {$MODE objfpc}
  3. {$H+}
  4. interface
  5. uses sysutils, classes, googleservice, restbase, googlebase;
  6. type
  7. //Top-level schema types
  8. TDetectionsListResponse = Class;
  9. TDetectionsResourceItem = Class;
  10. TLanguagesListResponse = Class;
  11. TLanguagesResource = Class;
  12. TTranslationsListResponse = Class;
  13. TTranslationsResource = Class;
  14. TDetectionsListResponseArray = Array of TDetectionsListResponse;
  15. TDetectionsResourceItemArray = Array of TDetectionsResourceItem;
  16. TDetectionsResource = Array of TDetectionsResourceItem;
  17. TLanguagesListResponseArray = Array of TLanguagesListResponse;
  18. TLanguagesResourceArray = Array of TLanguagesResource;
  19. TTranslationsListResponseArray = Array of TTranslationsListResponse;
  20. TTranslationsResourceArray = Array of TTranslationsResource;
  21. //Anonymous types, using auto-generated names
  22. TDetectionsListResponseTypedetectionsArray = Array of TDetectionsResource;
  23. TLanguagesListResponseTypelanguagesArray = Array of TLanguagesResource;
  24. TTranslationsListResponseTypetranslationsArray = Array of TTranslationsResource;
  25. { --------------------------------------------------------------------
  26. TDetectionsListResponse
  27. --------------------------------------------------------------------}
  28. TDetectionsListResponse = Class(TGoogleBaseObject)
  29. Private
  30. Fdetections : TDetectionsListResponseTypedetectionsArray;
  31. Protected
  32. //Property setters
  33. Procedure Setdetections(AIndex : Integer; const AValue : TDetectionsListResponseTypedetectionsArray); virtual;
  34. //2.6.4. bug workaround
  35. {$IFDEF VER2_6}
  36. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  37. {$ENDIF VER2_6}
  38. Public
  39. Published
  40. Property detections : TDetectionsListResponseTypedetectionsArray Index 0 Read Fdetections Write Setdetections;
  41. end;
  42. TDetectionsListResponseClass = Class of TDetectionsListResponse;
  43. { --------------------------------------------------------------------
  44. TDetectionsResourceItem
  45. --------------------------------------------------------------------}
  46. TDetectionsResourceItem = Class(TGoogleBaseObject)
  47. Private
  48. Fconfidence : integer;
  49. FisReliable : boolean;
  50. Flanguage : String;
  51. Protected
  52. //Property setters
  53. Procedure Setconfidence(AIndex : Integer; const AValue : integer); virtual;
  54. Procedure SetisReliable(AIndex : Integer; const AValue : boolean); virtual;
  55. Procedure Setlanguage(AIndex : Integer; const AValue : String); virtual;
  56. Public
  57. Published
  58. Property confidence : integer Index 0 Read Fconfidence Write Setconfidence;
  59. Property isReliable : boolean Index 8 Read FisReliable Write SetisReliable;
  60. Property language : String Index 16 Read Flanguage Write Setlanguage;
  61. end;
  62. TDetectionsResourceItemClass = Class of TDetectionsResourceItem;
  63. { --------------------------------------------------------------------
  64. TLanguagesListResponse
  65. --------------------------------------------------------------------}
  66. TLanguagesListResponse = Class(TGoogleBaseObject)
  67. Private
  68. Flanguages : TLanguagesListResponseTypelanguagesArray;
  69. Protected
  70. //Property setters
  71. Procedure Setlanguages(AIndex : Integer; const AValue : TLanguagesListResponseTypelanguagesArray); virtual;
  72. //2.6.4. bug workaround
  73. {$IFDEF VER2_6}
  74. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  75. {$ENDIF VER2_6}
  76. Public
  77. Published
  78. Property languages : TLanguagesListResponseTypelanguagesArray Index 0 Read Flanguages Write Setlanguages;
  79. end;
  80. TLanguagesListResponseClass = Class of TLanguagesListResponse;
  81. { --------------------------------------------------------------------
  82. TLanguagesResource
  83. --------------------------------------------------------------------}
  84. TLanguagesResource = Class(TGoogleBaseObject)
  85. Private
  86. Flanguage : String;
  87. Fname : String;
  88. Protected
  89. //Property setters
  90. Procedure Setlanguage(AIndex : Integer; const AValue : String); virtual;
  91. Procedure Setname(AIndex : Integer; const AValue : String); virtual;
  92. Public
  93. Published
  94. Property language : String Index 0 Read Flanguage Write Setlanguage;
  95. Property name : String Index 8 Read Fname Write Setname;
  96. end;
  97. TLanguagesResourceClass = Class of TLanguagesResource;
  98. { --------------------------------------------------------------------
  99. TTranslationsListResponse
  100. --------------------------------------------------------------------}
  101. TTranslationsListResponse = Class(TGoogleBaseObject)
  102. Private
  103. Ftranslations : TTranslationsListResponseTypetranslationsArray;
  104. Protected
  105. //Property setters
  106. Procedure Settranslations(AIndex : Integer; const AValue : TTranslationsListResponseTypetranslationsArray); virtual;
  107. //2.6.4. bug workaround
  108. {$IFDEF VER2_6}
  109. Procedure SetArrayLength(Const AName : String; ALength : Longint); override;
  110. {$ENDIF VER2_6}
  111. Public
  112. Published
  113. Property translations : TTranslationsListResponseTypetranslationsArray Index 0 Read Ftranslations Write Settranslations;
  114. end;
  115. TTranslationsListResponseClass = Class of TTranslationsListResponse;
  116. { --------------------------------------------------------------------
  117. TTranslationsResource
  118. --------------------------------------------------------------------}
  119. TTranslationsResource = Class(TGoogleBaseObject)
  120. Private
  121. FdetectedSourceLanguage : String;
  122. FtranslatedText : String;
  123. Protected
  124. //Property setters
  125. Procedure SetdetectedSourceLanguage(AIndex : Integer; const AValue : String); virtual;
  126. Procedure SettranslatedText(AIndex : Integer; const AValue : String); virtual;
  127. Public
  128. Published
  129. Property detectedSourceLanguage : String Index 0 Read FdetectedSourceLanguage Write SetdetectedSourceLanguage;
  130. Property translatedText : String Index 8 Read FtranslatedText Write SettranslatedText;
  131. end;
  132. TTranslationsResourceClass = Class of TTranslationsResource;
  133. { --------------------------------------------------------------------
  134. TDetections_Resource
  135. --------------------------------------------------------------------}
  136. //Optional query Options for TDetections_Resource, method List
  137. TDetectionsListOptions = Record
  138. q : String;
  139. end;
  140. TDetections_Resource = Class(TGoogleResource)
  141. Public
  142. Class Function ResourceName : String; override;
  143. Class Function DefaultAPI : TGoogleAPIClass; override;
  144. Function List(AQuery : string = '') : TDetectionsListResponse;
  145. Function List(AQuery : TDetectionslistOptions) : TDetectionsListResponse;
  146. end;
  147. { --------------------------------------------------------------------
  148. TLanguages_Resource
  149. --------------------------------------------------------------------}
  150. //Optional query Options for TLanguages_Resource, method List
  151. TLanguagesListOptions = Record
  152. target : String;
  153. end;
  154. TLanguages_Resource = Class(TGoogleResource)
  155. Public
  156. Class Function ResourceName : String; override;
  157. Class Function DefaultAPI : TGoogleAPIClass; override;
  158. Function List(AQuery : string = '') : TLanguagesListResponse;
  159. Function List(AQuery : TLanguageslistOptions) : TLanguagesListResponse;
  160. end;
  161. { --------------------------------------------------------------------
  162. TTranslations_Resource
  163. --------------------------------------------------------------------}
  164. //Optional query Options for TTranslations_Resource, method List
  165. TTranslationsListOptions = Record
  166. cid : String;
  167. format : String;
  168. q : String;
  169. source : String;
  170. target : String;
  171. end;
  172. TTranslations_Resource = Class(TGoogleResource)
  173. Public
  174. Class Function ResourceName : String; override;
  175. Class Function DefaultAPI : TGoogleAPIClass; override;
  176. Function List(AQuery : string = '') : TTranslationsListResponse;
  177. Function List(AQuery : TTranslationslistOptions) : TTranslationsListResponse;
  178. end;
  179. { --------------------------------------------------------------------
  180. TTranslateAPI
  181. --------------------------------------------------------------------}
  182. TTranslateAPI = Class(TGoogleAPI)
  183. Private
  184. FDetectionsInstance : TDetections_Resource;
  185. FLanguagesInstance : TLanguages_Resource;
  186. FTranslationsInstance : TTranslations_Resource;
  187. Function GetDetectionsInstance : TDetections_Resource;virtual;
  188. Function GetLanguagesInstance : TLanguages_Resource;virtual;
  189. Function GetTranslationsInstance : TTranslations_Resource;virtual;
  190. Public
  191. //Override class functions with API info
  192. Class Function APIName : String; override;
  193. Class Function APIVersion : String; override;
  194. Class Function APIRevision : String; override;
  195. Class Function APIID : String; override;
  196. Class Function APITitle : String; override;
  197. Class Function APIDescription : String; override;
  198. Class Function APIOwnerDomain : String; override;
  199. Class Function APIOwnerName : String; override;
  200. Class Function APIIcon16 : String; override;
  201. Class Function APIIcon32 : String; override;
  202. Class Function APIdocumentationLink : String; override;
  203. Class Function APIrootUrl : string; override;
  204. Class Function APIbasePath : string;override;
  205. Class Function APIbaseURL : String;override;
  206. Class Function APIProtocol : string;override;
  207. Class Function APIservicePath : string;override;
  208. Class Function APIbatchPath : String;override;
  209. Class Function APIAuthScopes : TScopeInfoArray;override;
  210. Class Function APINeedsAuth : Boolean;override;
  211. Class Procedure RegisterAPIResources; override;
  212. //Add create function for resources
  213. Function CreateDetectionsResource(AOwner : TComponent) : TDetections_Resource;virtual;overload;
  214. Function CreateDetectionsResource : TDetections_Resource;virtual;overload;
  215. Function CreateLanguagesResource(AOwner : TComponent) : TLanguages_Resource;virtual;overload;
  216. Function CreateLanguagesResource : TLanguages_Resource;virtual;overload;
  217. Function CreateTranslationsResource(AOwner : TComponent) : TTranslations_Resource;virtual;overload;
  218. Function CreateTranslationsResource : TTranslations_Resource;virtual;overload;
  219. //Add default on-demand instances for resources
  220. Property DetectionsResource : TDetections_Resource Read GetDetectionsInstance;
  221. Property LanguagesResource : TLanguages_Resource Read GetLanguagesInstance;
  222. Property TranslationsResource : TTranslations_Resource Read GetTranslationsInstance;
  223. end;
  224. implementation
  225. { --------------------------------------------------------------------
  226. TDetectionsListResponse
  227. --------------------------------------------------------------------}
  228. Procedure TDetectionsListResponse.Setdetections(AIndex : Integer; const AValue : TDetectionsListResponseTypedetectionsArray);
  229. begin
  230. If (Fdetections=AValue) then exit;
  231. Fdetections:=AValue;
  232. MarkPropertyChanged(AIndex);
  233. end;
  234. //2.6.4. bug workaround
  235. {$IFDEF VER2_6}
  236. Procedure TDetectionsListResponse.SetArrayLength(Const AName : String; ALength : Longint);
  237. begin
  238. Case AName of
  239. 'detections' : SetLength(Fdetections,ALength);
  240. else
  241. Inherited SetArrayLength(AName,ALength);
  242. end;
  243. end;
  244. {$ENDIF VER2_6}
  245. { --------------------------------------------------------------------
  246. TDetectionsResourceItem
  247. --------------------------------------------------------------------}
  248. Procedure TDetectionsResourceItem.Setconfidence(AIndex : Integer; const AValue : integer);
  249. begin
  250. If (Fconfidence=AValue) then exit;
  251. Fconfidence:=AValue;
  252. MarkPropertyChanged(AIndex);
  253. end;
  254. Procedure TDetectionsResourceItem.SetisReliable(AIndex : Integer; const AValue : boolean);
  255. begin
  256. If (FisReliable=AValue) then exit;
  257. FisReliable:=AValue;
  258. MarkPropertyChanged(AIndex);
  259. end;
  260. Procedure TDetectionsResourceItem.Setlanguage(AIndex : Integer; const AValue : String);
  261. begin
  262. If (Flanguage=AValue) then exit;
  263. Flanguage:=AValue;
  264. MarkPropertyChanged(AIndex);
  265. end;
  266. { --------------------------------------------------------------------
  267. TLanguagesListResponse
  268. --------------------------------------------------------------------}
  269. Procedure TLanguagesListResponse.Setlanguages(AIndex : Integer; const AValue : TLanguagesListResponseTypelanguagesArray);
  270. begin
  271. If (Flanguages=AValue) then exit;
  272. Flanguages:=AValue;
  273. MarkPropertyChanged(AIndex);
  274. end;
  275. //2.6.4. bug workaround
  276. {$IFDEF VER2_6}
  277. Procedure TLanguagesListResponse.SetArrayLength(Const AName : String; ALength : Longint);
  278. begin
  279. Case AName of
  280. 'languages' : SetLength(Flanguages,ALength);
  281. else
  282. Inherited SetArrayLength(AName,ALength);
  283. end;
  284. end;
  285. {$ENDIF VER2_6}
  286. { --------------------------------------------------------------------
  287. TLanguagesResource
  288. --------------------------------------------------------------------}
  289. Procedure TLanguagesResource.Setlanguage(AIndex : Integer; const AValue : String);
  290. begin
  291. If (Flanguage=AValue) then exit;
  292. Flanguage:=AValue;
  293. MarkPropertyChanged(AIndex);
  294. end;
  295. Procedure TLanguagesResource.Setname(AIndex : Integer; const AValue : String);
  296. begin
  297. If (Fname=AValue) then exit;
  298. Fname:=AValue;
  299. MarkPropertyChanged(AIndex);
  300. end;
  301. { --------------------------------------------------------------------
  302. TTranslationsListResponse
  303. --------------------------------------------------------------------}
  304. Procedure TTranslationsListResponse.Settranslations(AIndex : Integer; const AValue : TTranslationsListResponseTypetranslationsArray);
  305. begin
  306. If (Ftranslations=AValue) then exit;
  307. Ftranslations:=AValue;
  308. MarkPropertyChanged(AIndex);
  309. end;
  310. //2.6.4. bug workaround
  311. {$IFDEF VER2_6}
  312. Procedure TTranslationsListResponse.SetArrayLength(Const AName : String; ALength : Longint);
  313. begin
  314. Case AName of
  315. 'translations' : SetLength(Ftranslations,ALength);
  316. else
  317. Inherited SetArrayLength(AName,ALength);
  318. end;
  319. end;
  320. {$ENDIF VER2_6}
  321. { --------------------------------------------------------------------
  322. TTranslationsResource
  323. --------------------------------------------------------------------}
  324. Procedure TTranslationsResource.SetdetectedSourceLanguage(AIndex : Integer; const AValue : String);
  325. begin
  326. If (FdetectedSourceLanguage=AValue) then exit;
  327. FdetectedSourceLanguage:=AValue;
  328. MarkPropertyChanged(AIndex);
  329. end;
  330. Procedure TTranslationsResource.SettranslatedText(AIndex : Integer; const AValue : String);
  331. begin
  332. If (FtranslatedText=AValue) then exit;
  333. FtranslatedText:=AValue;
  334. MarkPropertyChanged(AIndex);
  335. end;
  336. { --------------------------------------------------------------------
  337. TDetections_Resource
  338. --------------------------------------------------------------------}
  339. Class Function TDetections_Resource.ResourceName : String;
  340. begin
  341. Result:='detections';
  342. end;
  343. Class Function TDetections_Resource.DefaultAPI : TGoogleAPIClass;
  344. begin
  345. Result:=TtranslateAPI;
  346. end;
  347. Function TDetections_Resource.List(AQuery : string = '') : TDetectionsListResponse;
  348. Const
  349. _HTTPMethod = 'GET';
  350. _Path = 'v2/detect';
  351. _Methodid = 'language.detections.list';
  352. begin
  353. Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TDetectionsListResponse) as TDetectionsListResponse;
  354. end;
  355. Function TDetections_Resource.List(AQuery : TDetectionslistOptions) : TDetectionsListResponse;
  356. Var
  357. _Q : String;
  358. begin
  359. _Q:='';
  360. AddToQuery(_Q,'q',AQuery.q);
  361. Result:=List(_Q);
  362. end;
  363. { --------------------------------------------------------------------
  364. TLanguages_Resource
  365. --------------------------------------------------------------------}
  366. Class Function TLanguages_Resource.ResourceName : String;
  367. begin
  368. Result:='languages';
  369. end;
  370. Class Function TLanguages_Resource.DefaultAPI : TGoogleAPIClass;
  371. begin
  372. Result:=TtranslateAPI;
  373. end;
  374. Function TLanguages_Resource.List(AQuery : string = '') : TLanguagesListResponse;
  375. Const
  376. _HTTPMethod = 'GET';
  377. _Path = 'v2/languages';
  378. _Methodid = 'language.languages.list';
  379. begin
  380. Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TLanguagesListResponse) as TLanguagesListResponse;
  381. end;
  382. Function TLanguages_Resource.List(AQuery : TLanguageslistOptions) : TLanguagesListResponse;
  383. Var
  384. _Q : String;
  385. begin
  386. _Q:='';
  387. AddToQuery(_Q,'target',AQuery.target);
  388. Result:=List(_Q);
  389. end;
  390. { --------------------------------------------------------------------
  391. TTranslations_Resource
  392. --------------------------------------------------------------------}
  393. Class Function TTranslations_Resource.ResourceName : String;
  394. begin
  395. Result:='translations';
  396. end;
  397. Class Function TTranslations_Resource.DefaultAPI : TGoogleAPIClass;
  398. begin
  399. Result:=TtranslateAPI;
  400. end;
  401. Function TTranslations_Resource.List(AQuery : string = '') : TTranslationsListResponse;
  402. Const
  403. _HTTPMethod = 'GET';
  404. _Path = 'v2';
  405. _Methodid = 'language.translations.list';
  406. begin
  407. Result:=ServiceCall(_HTTPMethod,_Path,AQuery,Nil,TTranslationsListResponse) as TTranslationsListResponse;
  408. end;
  409. Function TTranslations_Resource.List(AQuery : TTranslationslistOptions) : TTranslationsListResponse;
  410. Var
  411. _Q : String;
  412. begin
  413. _Q:='';
  414. AddToQuery(_Q,'cid',AQuery.cid);
  415. AddToQuery(_Q,'format',AQuery.format);
  416. AddToQuery(_Q,'q',AQuery.q);
  417. AddToQuery(_Q,'source',AQuery.source);
  418. AddToQuery(_Q,'target',AQuery.target);
  419. Result:=List(_Q);
  420. end;
  421. { --------------------------------------------------------------------
  422. TTranslateAPI
  423. --------------------------------------------------------------------}
  424. Class Function TTranslateAPI.APIName : String;
  425. begin
  426. Result:='translate';
  427. end;
  428. Class Function TTranslateAPI.APIVersion : String;
  429. begin
  430. Result:='v2';
  431. end;
  432. Class Function TTranslateAPI.APIRevision : String;
  433. begin
  434. Result:='20160217';
  435. end;
  436. Class Function TTranslateAPI.APIID : String;
  437. begin
  438. Result:='translate:v2';
  439. end;
  440. Class Function TTranslateAPI.APITitle : String;
  441. begin
  442. Result:='Translate API';
  443. end;
  444. Class Function TTranslateAPI.APIDescription : String;
  445. begin
  446. Result:='Lets you translate text from one language to another';
  447. end;
  448. Class Function TTranslateAPI.APIOwnerDomain : String;
  449. begin
  450. Result:='google.com';
  451. end;
  452. Class Function TTranslateAPI.APIOwnerName : String;
  453. begin
  454. Result:='Google';
  455. end;
  456. Class Function TTranslateAPI.APIIcon16 : String;
  457. begin
  458. Result:='https://www.google.com/images/icons/product/translate-16.png';
  459. end;
  460. Class Function TTranslateAPI.APIIcon32 : String;
  461. begin
  462. Result:='https://www.google.com/images/icons/product/translate-32.png';
  463. end;
  464. Class Function TTranslateAPI.APIdocumentationLink : String;
  465. begin
  466. Result:='https://developers.google.com/translate/v2/using_rest';
  467. end;
  468. Class Function TTranslateAPI.APIrootUrl : string;
  469. begin
  470. Result:='https://www.googleapis.com/';
  471. end;
  472. Class Function TTranslateAPI.APIbasePath : string;
  473. begin
  474. Result:='/language/translate/';
  475. end;
  476. Class Function TTranslateAPI.APIbaseURL : String;
  477. begin
  478. Result:='https://www.googleapis.com/language/translate/';
  479. end;
  480. Class Function TTranslateAPI.APIProtocol : string;
  481. begin
  482. Result:='rest';
  483. end;
  484. Class Function TTranslateAPI.APIservicePath : string;
  485. begin
  486. Result:='language/translate/';
  487. end;
  488. Class Function TTranslateAPI.APIbatchPath : String;
  489. begin
  490. Result:='batch';
  491. end;
  492. Class Function TTranslateAPI.APIAuthScopes : TScopeInfoArray;
  493. begin
  494. SetLength(Result,0);
  495. end;
  496. Class Function TTranslateAPI.APINeedsAuth : Boolean;
  497. begin
  498. Result:=False;
  499. end;
  500. Class Procedure TTranslateAPI.RegisterAPIResources;
  501. begin
  502. TDetectionsListResponse.RegisterObject;
  503. TDetectionsResourceItem.RegisterObject;
  504. TLanguagesListResponse.RegisterObject;
  505. TLanguagesResource.RegisterObject;
  506. TTranslationsListResponse.RegisterObject;
  507. TTranslationsResource.RegisterObject;
  508. end;
  509. Function TTranslateAPI.GetDetectionsInstance : TDetections_Resource;
  510. begin
  511. if (FDetectionsInstance=Nil) then
  512. FDetectionsInstance:=CreateDetectionsResource;
  513. Result:=FDetectionsInstance;
  514. end;
  515. Function TTranslateAPI.CreateDetectionsResource : TDetections_Resource;
  516. begin
  517. Result:=CreateDetectionsResource(Self);
  518. end;
  519. Function TTranslateAPI.CreateDetectionsResource(AOwner : TComponent) : TDetections_Resource;
  520. begin
  521. Result:=TDetections_Resource.Create(AOwner);
  522. Result.API:=Self.API;
  523. end;
  524. Function TTranslateAPI.GetLanguagesInstance : TLanguages_Resource;
  525. begin
  526. if (FLanguagesInstance=Nil) then
  527. FLanguagesInstance:=CreateLanguagesResource;
  528. Result:=FLanguagesInstance;
  529. end;
  530. Function TTranslateAPI.CreateLanguagesResource : TLanguages_Resource;
  531. begin
  532. Result:=CreateLanguagesResource(Self);
  533. end;
  534. Function TTranslateAPI.CreateLanguagesResource(AOwner : TComponent) : TLanguages_Resource;
  535. begin
  536. Result:=TLanguages_Resource.Create(AOwner);
  537. Result.API:=Self.API;
  538. end;
  539. Function TTranslateAPI.GetTranslationsInstance : TTranslations_Resource;
  540. begin
  541. if (FTranslationsInstance=Nil) then
  542. FTranslationsInstance:=CreateTranslationsResource;
  543. Result:=FTranslationsInstance;
  544. end;
  545. Function TTranslateAPI.CreateTranslationsResource : TTranslations_Resource;
  546. begin
  547. Result:=CreateTranslationsResource(Self);
  548. end;
  549. Function TTranslateAPI.CreateTranslationsResource(AOwner : TComponent) : TTranslations_Resource;
  550. begin
  551. Result:=TTranslations_Resource.Create(AOwner);
  552. Result.API:=Self.API;
  553. end;
  554. initialization
  555. TTranslateAPI.RegisterAPI;
  556. end.