Среда, 14.11.2018, 21:15
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Программирование » Программирование в Delphi » Создаем переводчик с помощью Google Api
Создаем переводчик с помощью Google Api
Vavilov8Дата: Среда, 12.09.2012, 21:20 | Сообщение # 1
VIP
Группа: Администраторы
Сообщений: 42
Репутация: 0
Статус: Offline
Внимание. Для изучения урока потребуется компонент которого нету в Delphi. Скачать Компонент можно здесь

1. Свойства компонента

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

property SourceLang: TLanguageEnum read FSourceLang write FSourceLang;

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

property DestLang: TLanguageEnum read FDestLang write FDestLang;

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

2. События компонента

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;


Code

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:

Code
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
Поиск: