반응형

최근 다국어로된 프로젝트를 맡은적이 있는데 검색을 해봐도 언어 파일을 추가하는 법이 잘 안나와서 작성해본다.

 

1. xml 파일 생성

 

실제 디렉토리 수준에서 보면 이런식이로 생성된다.

-저는 strings라는 이름으로 처음 생성했기때문에 다른 언어도 통일해서 사용중입니다.

-strings폴더안에 묶여있는데 같은 이름으로 생성하면 자동으로 android studio가 묶어줍니다.

2.Available qualifiers -> Locale 클릭후 원하는 국가의 국기를 클릭(화면엔 눌러서 없음)

- 국기 뒤쪽에 es , et 등 약자들이 있는데 추후에 언어설정의 키값이 되니 잘봐두도록 하자.

 

language.xml (ko-rKR)

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="menu1">메뉴1</string>
    <string name="menu2">메뉴2</string>
    <string name="menu3">메뉴3</string>
    <string name="menu4">메뉴4</string>
    <string name="menu5">메뉴5</string>
</resources>

 

language.xml (en-rUS)

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="menu1">menu1</string>
    <string name="menu2">menu2</string>
    <string name="menu3">menu3</string>
    <string name="menu4">menu4</string>
    <string name="menu5">menu5</string>
</resources>

 

- 파일명, name 명을 일치 시켜줘야된다.

- 괄호에 ko-rKR,en-rUS에서 각각 ko,en이 키값이 되서 언어를 변경할수있도록 해준다.

 

 

    private void changeLocale(String localeLang){

        Locale locale = null;

        switch (localeLang){
            case "ko":
                locale = new Locale("ko");
                break;

            case "en":
                locale = new Locale("en");
                break;
        }
        Configuration config = context.getResources().getConfiguration();

        if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 ) {
            config.setLocale(locale);
        }
        else {
            config.locale = locale;
        }

        getResources().updateConfiguration(config, getResources().getDisplayMetrics());

        list.clear();
        list.add(getString(R.string.menu1));
        list.add(getString(R.string.menu2));
        list.add(getString(R.string.menu3));
        list.add(getString(R.string.menu4));
        list.add(getString(R.string.menu5));
        pa.notifyDataSetChanged();
    }

 

 

-localeLang 파라미터로 ko,en이 들어오면 각각 한국어 영어로 변경해준다.

반응형

+ Recent posts