네이버 클라우드 플랫폼에 로그인하고, Papago NMT API의 사용을 신청하여 Client ID와 Client Secret을 발급.
dart dependencies: http: ^0.13.3
Papago API를 호출하는 함수를 생성. 아래는 translateText라는 함수의 예시:
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<String> translateText(String text, String sourceLang, String targetLang) async {
final String clientId = "YOUR_NAVER_CLIENT_ID"; // 발급받은 Client ID
final String clientSecret = "YOUR_NAVER_CLIENT_SECRET"; // 발급받은 Client Secret
final response = await http.post(
Uri.parse("https://openapi.naver.com/v1/papago/n2mt"),
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Naver-Client-Id": clientId,
"X-Naver-Client-Secret": clientSecret,
},
body: {
"source": sourceLang,
"target": targetLang,
"text": text,
},
);
if (response.statusCode == 200) {
final jsonResponse = json.decode(response.body);
return jsonResponse['message']['result']['translatedText'];
} else {
throw Exception('Failed to load translation');
}
}
이 함수는 원본 텍스트와 원본 언어 코드(sourceLang, 예: 'ko'), 목표 언어 코드(targetLang, 예: 'en')를 받아 번역된 텍스트를 반환.
UI에서 번역 함수를 호출하여 결과를 화면에 표시.
예를 들어, 버튼을 눌렀을 때 텍스트를 번역하고 결과를 SnackBar로 보여주는 방법:
ElevatedButton(
onPressed: () async {
try {
final translatedText = await translateText("안녕하세요", "ko", "en");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(translatedText)),
);
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("번역 실패: $e")),
);
}
},
child: Text('Translate'),
)
참고 : https://guide.ncloud-docs.com/docs/ko/papagotranslation-api
안녕하세요, 네이버 클라우드 플랫폼입니다.
네이버클라우드의 기술 콘텐츠 리워드 프로그램 '이달의 Nclouder(1월)' 도전자로 초대합니다 :)
네이버 클라우드 플랫폼 서비스와 관련된 모든 주제로 2/1(목) 23시까지 신청 가능합니다. (*1월 작성 콘텐츠 한정 신청 가능)
Ncloud 크레딧을 포함한 다양한 리워드가 준비되어 있으니 많은 관심 부탁드립니다!
자세한 내용은 아래 링크에서 확인부탁드립니다.
https://blog.naver.com/n_cloudplatform/223315900468
신청 링크
https://navercloud.typeform.com/to/lF8NUaCF