네이버 파파고 API - 앱에서 번역 기능 구현하기

반응형

 

 

API 호출을 위한 인터넷 연결 설정 (Volley 라이브러리 사용)

  • build.gradle (Module)
dependencies {
    implementation 'com.android.volley:volley:1.2.1'
}

  • AndroidManifests.xml
<uses-permission android:name="android.permission.INTERNET" />

네이버 파파고 API

  • 번역을 해주는 오픈 소스 API
  • json 형태로 api를 호출
    • POST URL : https://openapi.naver.com/v1/papago/n2mt
  • 필요한 데이터 키 값 (json)
    • source : 원본 언어
    • target : 목적 언어
    • text : 번역할 텍스트
    • translatedText : 번역된 텍스트

앱에서 파파고 API를 이용하여 번역 기능 구현하기 (Android Studio)

기능 설계

  • 번역할 문장을 입력하고 버튼을 누르면 번역된 문장 출력

레이아웃 UI 설계


소스 코드

  • MainActivity.java
    • ApiKey.java 파일에 API 키와 시크릿 키를 따로 저장
public class MainActivity extends AppCompatActivity {

    EditText editTrans;
    Button btnTrans;
    TextView txtResult;

    String ApiUrl = "https://openapi.naver.com/v1/papago/n2mt"; // API 요청 URL
    String source = "ko"; // 원본 언어
    String target = "en"; // 목적 언어
    String text; // 번역할 텍스트

    ArrayList<String> papagoList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editTrans = findViewById(R.id.editText);
        btnTrans = findViewById(R.id.button);
        txtResult = findViewById(R.id.textView);

        btnTrans.setOnClickListener(view -> {
            // 에디트텍스트의 값 저장
            text = editTrans.getText().toString().trim();
            if (text.isEmpty()) {
                Toast.makeText(getApplicationContext(), "번역할 문장을 입력하세요", Toast.LENGTH_LONG).show();
                return;
            }

            // 네이버 API 호출
            RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
            StringRequest request = new StringRequest( Request.Method.POST, ApiUrl,
                    response -> {
                        // API 호출 결과 저장
                        try {
                            JSONObject result = new JSONObject(response);
                            String translatedText = result.getJSONObject("message").getJSONObject("result").getString("translatedText");
                            txtResult.setText(translatedText);
                        } catch (JSONException e) { e.printStackTrace(); }

                    }, error -> { })
            {// request 바로 뒤에 헤더 추가
                @Override
                public Map<String, String> getHeaders() {
                    Map<String, String> params = new HashMap<>();
                    params.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");  // 키와 밸류
                    params.put("X-Naver-Client-Id", ApiKey.NAVER_API_KEY); // 자신의 API 키 입력
                    params.put("X-Naver-Client-Secret", ApiKey.NAVER_SECRET_KEY); // 자신의 API 시크릿 키 입력
                    return params;
                }

                protected Map<String, String> getParams() {
                    Map<String, String> params = new HashMap<>();
                    params.put("source", source); // 원본 언어
                    params.put("target", target); // 목적 언어
                    params.put("text", text); // 번역할 텍스트
                    return params;
                }
            };
            queue.add(request);
        });
    }
}

 

  • ApiKey.java
public class ApiKey {
    public final static String NAVER_API_KEY = "자신의API키입력";
    public final static String NAVER_SECRET_KEY = "자신의시크릿키입력";
}

실행 화면

  • 앱 처음 실행시의 화면

 

  • 번역할 문장을 입력하고 버튼 클릭


네이버 파파고 API 레퍼런스

https://developers.naver.com/docs/papago/papago-nmt-api-reference.md

 

반응형