본문 바로가기
C# 기술

[C#] winForm 에서 deepL api 호출하기

by bryan.oh 2023. 10. 29.
반응형

 

프로젝트에서 우클릭 -> Nuget 패키지 관리

 

DeepL.net 찾아서 설치

 

using DeepL;

// api key
Translator translator = new Translator("your deepL api key here");

api key 를 받아야되는데, 

아래 DeepL 사이트에 가입하면 확인 가능합니다.

https://www.deepl.com/

 

DeepL 번역: 세계에서 가장 정확한 번역기

텍스트 및 전체 문서 파일을 즉시 번역하세요. 개인과 팀을 위한 정확한 AI 번역. 매일 수백만 명이 DeepL 번역기로 작업합니다.

www.deepl.com

  • 무료 가입 가능
  • 카드 정보 입력 필수 ( 결제되지 않음 )
  • 계정 -> 계정 탭 -> 페이지 최하단에 key 확인

 

기본적인 코드

var translatedText = await translator.TranslateTextAsync(
      "Hello, world!",
      LanguageCode.English,
      LanguageCode.Korean);
Console.WriteLine(translatedText); // "안녕하세요, 세상 여러분!"

 

await !!

사용 예제는 [여기]에 더 자세히 나와있지만 async만으로 호출이 가능합니다.

async 가 아닌 함수에서 호출하고 동기식으로 결과를 받아오려면,

동기식으로 사용하는 방법

using DeepL;
using System.Threading.Tasks;

public void test(){
    task = Task.Run(async () => await runTranslator("Hello, World!!", LanguageCode.English, LanguageCode.Korean));
    task.Wait();  // 기다림. 이거 없으면 코드 계속 실행
    Console.WriteLine(task.Result);  // "안녕하세요, 세상 여러분!"
}

async public Task<string> runTranslator(string text, string from, string to)
{
    try
    {
        DeepL.Model.TextResult textResult = await translator.TranslateTextAsync(text, from, to);
        return textResult.Text;
    }
    catch (Exception ex)
    {
    	// 오류처리는 self
        throw new Exception($"deepL error : {ex.Message}");
    }
}

deepL 의 translateTextAsync 를 호출 할 함수를 하나 만들고 (runTranslator)

test() 함수와 같이 비동기 함수가 아닌곳에서 Task 를 사용하여 호출하는 방법입니다.

 

다른 방법도 많이 있습니다.

상황에 맞게 쓰세요~

728x90
반응형

댓글