Четверг, 28.03.2024, 11:30
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: vavilov8  
Форум » Delphi » Уроки » Создаем переводчик с помощью Google Api
Создаем переводчик с помощью Google Api
vavilov8Дата: Вторник, 09.08.2011, 23:36 | Сообщение # 1
Титул: Генералиссимус
Сообщений: 10
Репутация: [ 0 ]
1. Свойства компонента

У компонента Translator всего два свойства:

Code
property SourceLang: TLanguageEnum read FSourceLang write FSourceLang;


Язык оригинала.

Code
property DestLang: TLanguageEnum read FDestLang write FDestLang;


Язык на который необходимо перевести отрывок текста. При этом перечислитель TLanguageEnum содержит идентификаторы всех доступных в Переводчике Google языков. Однако следует отметить следующее обстоятельство, которое относися непосредственно к API - не все пармы языков SourceLang/DestLang поддерживаются. Если невозможно перевести текст с SourceLang на DestLang, то API вернет ошибку.
Если Вы не знаете на каком языке написан исходный екст, то в свойстве SourceLang можно указать значение Unknown - в этом случае Google попробует определить язык оригинала автоматически.

[b]2. События компонента[/b]

Code
OnTranslate: TOnTranslate;
type
   TOnTranslate = procedure(const SourceStr, TranslateStr: string; LangDetected: TLanguageEnum) of object;

Возникает после того как получен положительный ответ от сервера (с кодом 200). Возвращает следующие значения:
SourceStr - строка текста для перевода;
TranslateStr - переведенный текст;
LangDetected - язык оригинала. Удобно использовать, когда необходимо опеределить язык оригинала текста.

Code
OnTranslateError: TOnTranslateError;
type
   TOnTranslateError = procedure(const Code: integer; Status: string) of object;

Возникает в случае, если во время перевода произошла какая-либо ошибка (в JSON-документе содержится код ответа отличный от 200). Возвращает следующие значение:
Code - код ошибки
Status - текст ошибки.

3. Методы компонента

Code
function Translate(const SourceStr: string): string;

Основной метод компонента Delphi. Переводит строку SourceStr на язык, определенный в свойстве DestLang.

Code
function GetLanguagesNames: TStringList;

Возвращает список всех доступных языков для перевода. Удобно использовать, когда необходимо заполнить ComboBox доступными языками.

Code
function GetLangByName(const aName: string): TLanguageEnum;

Возвращает идентификатор языка по его названию. Например,

Code
Translator.GetLangByName('Русский')

вернет значение lng_ru, которое можно в дальнейшем использовать в свойствах компонента.

4. Пример использования

Создадим небольшое приложение, как показано на рисунке:



В Edit будем записывать строку, в ComboBox'ах выбирать языки, с которыми нам необходимо работать, а в Memo выведем результат работы компонента. Напишем следующие обработчики событий у компонента Tanslator1:

Code
procedure TForm6.Translator1Translate(const SourceStr, TranslateStr: string;
   LangDetected: TLanguageEnum);
begin
   Memo1.Lines.Clear;
   Memo1.Lines.Add('Исходный текст '+SourceStr);
   Memo1.Lines.Add('Перевод '+TranslateStr);
end;


procedure TForm6.Translator1TranslateError(const Code: Integer; Status: string);
begin
Memo1.Lines.Add('Ошибка '+IntToStr(Code)+' '+Status)
end;
На OnShow формы будем формировать списки ComboBox:

Code
procedure TForm6.FormShow(Sender: TObject);
begin
   ComboBox1.Items.Assign(Translator1.GetLanguagesNames);
   ComboBox2.Items.Assign(Translator1.GetLanguagesNames);
end;


При выборе языка в ComboBox'ах будем сразу передавать эти значения в свойства компонента Translator1:

procedure TForm6.ComboBox1Change(Sender: TObject);
begin
Translator1.SourceLang:=Translator1.GetLangByName(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

procedure TForm6.ComboBox2Change(Sender: TObject);
begin
Translator1.DestLang:=Translator1.GetLangByName(ComboBox2.Items[ComboBox2.ItemIndex]);
end;
И, наконец, по нажатии на кнопку "Перевести" будем переводить текст из Edit:

Code
procedure TForm6.Button1Click(Sender: TObject);
begin
   Translator1.Translate(Edit1.Text)
end;


Теперь запускаем приложение и, для проверки, переведем "Hello World" скажем...на персидский язык. Вот результат работы переводчика:



Скачать комопнент можно здесь
Форум » Delphi » Уроки » Создаем переводчик с помощью Google Api
  • Страница 1 из 1
  • 1
Поиск: