Translations Editor로 UI 현지화

Translations Editor를 통해 기본 및 번역 문자열 리소스 전체가 통합적으로 표시된 편집 화면을 볼 수 있습니다.

앱을 다양한 언어로 번역하는 작업에 관한 소개는 다양한 언어 및 문화 지원을 참조하세요.

그림 1. 번역 전 앱 텍스트를 보여주는 Translations Editor

문자열 리소스

프로젝트의 문자열 리소스는 strings.xml 파일에 포함되어 있습니다. 프로젝트에는 앱의 기본 언어로 된 문자열 리소스가 포함된 기본 strings.xml 파일이 있습니다. 기본 언어란 대부분의 앱 사용자가 사용할 것으로 예상되는 언어입니다. 앱에서 수용하기 원하는 다른 언어의 문자열 리소스가 포함되어 있는 번역된 strings.xml 파일을 만들 수도 있습니다.

기본 strings.xml 파일을 완료한 후에는 번역을 직접 추가하거나 유료 전문 서비스를 통해 번역을 진행할 수 있습니다. 둘 중 어느 방법이든 현지화 가능한 텍스트를 관리하고 테스트하는 데 도움이 되는 Android 스튜디오 기능을 활용해야 합니다. 전문 번역 서비스에 관한 자세한 내용은 번역 서비스 주문을 참조하세요.

Translations Editor 열기

Android 스튜디오의 다음 위치에서 Translations Editor에 액세스할 수 있습니다.

Android 뷰에서 열기

  1. 왼쪽의 Project > Android 패널에서 ModuleName > res > values를 선택합니다.
  2. strings.xml 파일을 마우스 오른쪽 버튼으로 클릭하고 Open Translations Editor를 선택합니다.

    Translations Editor에 strings.xml 파일의 키 및 값 쌍이 표시됩니다.

    참고: 번역된 strings.xml 파일이 있는 경우 프로젝트에는 언어를 나타내는 접미사(예: 스페인어의 경우 values-es)가 포함된 여러 개의 상응하는 values 폴더가 있습니다. 기본 strings.xml 파일은 항상 values(접미사 없음) 폴더에 있습니다.

그림 1에서는 번역 작업이 완료되기 전에 간단한 앱용 Translations Editor의 기본 앱 텍스트(이 경우 영어)를 보여줍니다. 번역된 strings.xml 파일의 콘텐츠는 그림 2와 같이 Untranslatable 열 오른쪽에 언어당 하나의 열로 표시됩니다.

strings.xml 내부에서 열기

모든 strings.xml 파일에서 Translations Editor에 액세스할 수 있습니다.

  1. 왼쪽의 Project > Android 패널에서 ModuleName > res > values를 선택합니다.
  2. 더블클릭으로 strings.xml을 열어 편집합니다.
  3. strings.xml의 오른쪽 상단에 있는 Open editor 링크를 클릭합니다.

참고: Hide notification 링크를 클릭하면 Open editor 링크가 사라집니다. 다시 표시하려면 프로젝트를 닫았다가 다시 엽니다.

Design Editor에서 열기

Layout Editor의 Design Editor에서 Translations Editor를 열어 기본 및 번역된 텍스트를 레이아웃에 더 적합하게 편집할 수 있습니다. Design Editor에서 언어를 전환하는 방법에 관한 자세한 내용은 Design Editor에서 번역된 텍스트 표시를 참조하세요.

  1. 왼쪽의 Project > Android 패널에서 ModuleName > res > layout을 선택합니다.
  2. 더블클릭으로 content_main.xml을 열어 편집합니다.
  3. 왼쪽 하단에 있는 Design 탭을 클릭하여 Design Editor를 표시합니다.
  4. Design Editor에서 Language 드롭다운 목록을 선택합니다.
  5. Edit Translations 를 선택합니다.

번역할 수 없는 행 구성

Translations Editor에서 Unstranslatable을 선택하여 이 행의 텍스트는 번역하지 않을 것임을 나타낼 수 있습니다. 번역하지 않으려는 텍스트는 상호, 상표와 같은 제품 관련 텍스트이거나 상응하는 번역어가 없는 기술 용어일 수 있습니다.

Untranslatable을 선택하면 기본 strings.xml 파일의 상응하는 줄에 translatable="false"가 추가됩니다. 다음 예에서 맨 위 줄의 EasyApp은 제품 이름이므로 번역되지 않습니다.

<resources>
    <string name="app_name" translatable="false">EasyApp</string>
    <string name="action_settings">Settings</string>
    <string name="easy_app">I am a Simple App!</string>
    <string name="next_page">Next Page</string>
    <string name="second_page_message">I am the Second Page!</string>
    <string name="title_activity_second">SecondActivity</string>
</resources>

언어 추가 및 삭제

Translations Editor에서는 BCP 47을 지원하며 타겟팅된 현지화를 위해 언어 및 지역(국가) 코드를 단일 선택으로 결합합니다. 로캘은 언어를 정의하는 데 그치지 않습니다. 로캘에는 날짜와 시간, 통화, 소수와 같은 국가별 서식이 포함됩니다.

언어를 추가하려면 다음 단계를 따르세요.

  1. Translations Editor에서 지구 아이콘 을 클릭합니다.
  2. 드롭다운 목록에서 추가하려는 언어를 선택합니다.

    Translations Editor에 새 언어가 표시되고 strings.xml 파일이 있는 values-* 폴더가 프로젝트에 추가됩니다. 예를 들어 스페인어의 경우 value-es입니다.

언어를 삭제하려면 다음 단계를 따르세요.

열의 모든 값을 삭제하여 Translations Editor에서 언어를 삭제하거나(텍스트 편집, 추가 또는 삭제 참조) 다음과 같이 특정 언어의 프로젝트 폴더를 삭제할 수 있습니다.

  1. 왼쪽의 Project > Android 패널에서 ModuleName > res를 선택합니다.
  2. 삭제하려는 언어의 values- * 폴더를 마우스 오른쪽 버튼으로 클릭합니다. 예를 들어 힌디어의 경우 values-hi입니다.
  3. 드롭다운 목록에서 Delete를 선택하여 폴더와 strings.xml 파일을 삭제합니다.

텍스트 편집, 추가 및 삭제

strings.xml 파일에서 직접 또는 Translations Editor를 통해 텍스트 설정 관련 작업을 할 수 있습니다. 이 섹션에서는 Translations Editor 접근 방식을 설명합니다. Translations Editor에서 목록 보기를 통해 또는 Translations Editor 하단의 Translation 필드를 통해 텍스트를 수정, 추가 또는 삭제할 수 있습니다.

그림 2. 상단의 목록 보기와 하단의 Translation 필드

목록 보기

텍스트를 편집 또는 추가하려면 다음 단계를 따르세요.

  1. 텍스트를 편집하거나 추가하려는 셀을 더블클릭합니다.
  2. 키보드 복사-붙여넣기를 하거나 발음 구별 부호를 지원하는 키보드가 있는 경우 목록 보기에 직접 입력합니다.
  3. Tab 키를 누르거나 커서를 필드 밖으로 움직입니다.

텍스트를 삭제하려면 다음 단계를 따르세요.

  1. 삭제하려는 셀을 더블클릭합니다.
  2. 목록 보기에서 텍스트를 선택하고 Delete를 누릅니다.
  3. Tab 키를 누르거나 커서를 필드 밖으로 움직입니다.

번역 필드

텍스트를 편집 또는 추가하려면 다음 단계를 따르세요.

  1. 목록 보기에서 텍스트를 편집하거나 추가하려는 셀을 한 번 클릭합니다.
  2. Translation 필드에서 키보드 복사-붙여넣기를 하거나 발음 구별 부호를 지원하는 키보드가 있는 경우 Translation 필드에 직접 입력합니다.
  3. Tab 키를 누르거나 커서를 필드 밖으로 움직입니다.

텍스트를 삭제하려면 다음 단계를 따르세요.

  1. 삭제하려는 셀을 한 번 클릭합니다.
  2. Translation 필드에서 텍스트를 선택하고 Delete를 누릅니다.

키 추가 및 삭제

Translations Editor의 Key 열에는 strings.xml 파일에 있는 각 데이터 항목의 고유 식별자가 나열됩니다. Translations Editor를 통해 키를 추가하고 삭제할 수 있습니다. 키를 삭제하면 Translations Editor에서 키와 관련 번역을 모두 삭제합니다. Translations Editor에서는 안전 삭제 리팩터링을 사용하여 키를 삭제하므로 키 텍스트가 다른 곳에서 사용되는지 알 수 있고 키를 삭제하기 전에 필요한 조정 작업을 할 수 있습니다. 안전 삭제 리팩터링 기능이 있어 키를 삭제한 후에도 코드가 계속 컴파일됩니다.

키를 추가하려면 다음 단계를 따르세요.

  1. Translations Editor에서 Add Key 를 클릭합니다.
  2. 대화상자에서 키 이름, 기본값 및 기본 strings.xml 파일의 위치를 입력합니다.

    그림 3. 키 추가

키를 삭제하려면 다음 단계를 따르세요.

  1. Translations Editor에서 삭제하려는 키를 선택합니다.
  2. Remove Keys 를 클릭합니다.
  3. Delete 대화상자에서 안전 삭제 사용 여부와 댓글 및 문자열 검색 여부를 확인하고 OK를 클릭합니다.

    그림 4. Delete 대화상자

    삭제된 키의 참조(사용)가 없거나 모든 참조가 안전하게 접히는 경우 키가 삭제됩니다. 그러지 않은 경우 Translations Editor에 감지된 문제에 관한 정보가 포함된 Usages Detected 대화상자가 표시됩니다.

    그림 5. Delete 대화상자

  4. View Usages를 선택하여 삭제할 내용을 검토합니다. Find Safe Delete Conflicts 대화상자에는 삭제하기에 안전하지 않은 사용이 모두 표시되므로 상응하는 코드를 편집할 수 있습니다.

    그림 6. 안전하지 않은 사용

  5. 사용을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 표시하고 Jump to Source를 선택하여 필요한 변경 작업을 합니다.
  6. Find Safe Delete Conflicts 패널에서 Rerun Safe Delete를 선택하여 주의가 필요한 다른 사용이 없는지 확인합니다.
  7. 사용이 제거되었으면 Do Refactor를 클릭하여 키를 삭제합니다.

오류 수정

그림 7에서는 영어, 스페인어 및 프랑스어로 된 strings.xml 파일의 콘텐츠가 표시된 Translations Editor를 보여줍니다. 빨간색 텍스트는 오류가 있는 줄을 나타냅니다.

그림 7. 빨간색 텍스트는 수정해야 하는 오류 상태를 나타냅니다.

오류를 수정하려면 문제 설명과 해결 방법이 표시되도록 빨간색 텍스트 위로 마우스를 가져갑니다.

Translations Editor에서 변경하면 기본 strings.xml 파일이 변경사항으로 업데이트됩니다. strings.xml 파일을 변경하면 Translations Editor의 상응하는 열이 변경사항으로 업데이트됩니다.

Translations Editor 수정 예시:

  • 그림 7에서는 app_name 행에서 Untranslatable을 선택했지만 스페인어 번역이 제공된 경우를 보여줍니다. 스페인어 번역을 삭제하여 오류를 수정합니다.
  • 그림 7에서는 next_page 행에 프랑스어 번역이 없는 경우를 보여줍니다. 키보드를 사용해 Page Suivante를 셀에 복사하여 오류를 수정합니다. 키보드 복사-붙여넣기 작업을 통해 발음 구별 부호가 있는 텍스트를 셀에 복사합니다.

번역된 텍스트를 Design Editor에 표시

번역된 텍스트가 앱 레이아웃에 어떻게 표시되는지 보려면 Design Editor에서 다음과 같이 기본 버전과 번역된 버전 간에 텍스트를 전환합니다.

  1. 왼쪽의 Project > Android 패널에서 ModuleName > res > layout을 선택합니다.
  2. 더블클릭으로 content_main.xml을 열어 편집합니다.
  3. 왼쪽 하단에 있는 Design 탭을 클릭하여 Design Editor를 표시합니다.
  4. Design Editor에서 Language 드롭다운 목록을 선택합니다.
  5. Edit Translations 를 선택합니다.
  6. 앱을 볼 때 사용할 언어를 선택합니다.

    그림 8. 스페인어가 선택된 언어 드롭다운 목록

Design Editor에서는 선택한 언어(이 경우 스페인어)로 앱 레이아웃을 표시합니다.

그림 9. 스페인어로 번역된 텍스트를 표시하는 Design Editor

Design Editor를 기본 언어로 설정

언어를 다시 기본값으로 설정하려면 es > Language 를 선택합니다.

그림 10. 기본 언어로 설정

현지화 가능한 텍스트 관리 및 테스트

Android 플랫폼 및 Android 스튜디오에서는 현지화 가능한 앱 텍스트를 관리하고 테스트하는 데 도움이 되는 기능을 제공합니다. 이러한 기능에는 아랍어나 히브리어와 같이 오른쪽에서 왼쪽(RTL) 방향의 스크립트와 관련된 문제를 타겟팅하는 데 도움이 되는 옵션이 있습니다. 현지화 가능한 텍스트를 테스트하면 나중에 번역을 위해 보낼 메시지를 소스 저장소에 커밋하기 전에 UI 텍스트와 레이아웃을 조정할 수 있습니다.

RTL 지원을 위한 프로젝트 리팩터링

Android 스튜디오에는 TextView, ConstraintLayout, LinearLayout 요소에서 양방향 텍스트 지원을 사용 설정하는 리팩터링 명령어가 있으므로 앱에서 표시할 수 있고 사용자는 왼쪽에서 오른쪽(LTR) 및 오른쪽에서 왼쪽(RTL) 방향의 스크립트로 된 텍스트를 편집할 수 있습니다. 또한 이 명령어를 통해 앱 UI 레이아웃과 모든 뷰 위젯을 자동 미러링할 수 있습니다. 텍스트 방향 변경 및 레이아웃 미러링을 보려면 Layout Editor에서 텍스트 및 레이아웃 방향 속성도 설정해야 합니다.

다음 절차에서는 RTL 지원을 위해 프로젝트를 리팩터링하는 방법을 보여줍니다.

  1. Refactor > Add RTL support where possible을 선택하여 그림 11과 같은 대화상자를 표시합니다.

    그림 11. RTL 지원 추가

    • AndroidManifest.xml 파일의 <application> 요소에 android:supportsRTL="true" 속성이 없는 경우 Update AndroidManifest.xml 체크박스를 선택합니다.
    • 앱의 targetSdkVersion이 17 이상이라면 Replace Left/Right Properties with Start/End Properties를 선택합니다. 이 경우 속성에서는 'left' 및 'right' 대신 'start' 및 'end'를 사용해야 합니다. 예를 들어 android:paddingLeftandroid:paddingStart가 됩니다.
    • 앱의 targetSdkVersion이 16 이하라면 Generate -v17 Versions를 선택합니다. 이 경우 XML에서는 두 가지 속성 집합을 모두 사용해야 합니다. 예를 들어 XML에서는 android:paddingLeftandroid:paddingStart를 모두 사용해야 합니다.
  2. Find Refactoring Preview 창을 표시하려면 Run을 클릭합니다.

    그림 12. 미리보기 확인

  3. Do Refactor를 클릭합니다.

RTL 지원을 위한 프로젝트 리팩터링에 관한 자세한 내용은 Android 4.2의 기본 RTL 지원을 참조하세요.

텍스트 및 레이아웃 방향 속성

오른쪽의 Properties 창에서는 텍스트 및 레이아웃 구성 요소의 방향을 변경할 수 있도록 textDirection 속성(텍스트 위젯에서 사용)과 layoutDirection 속성(레이아웃 위젯에서 사용)을 제공합니다. 방향 속성은 오른쪽의 Properties 창에 나열되며 API 수준 17 이상에서 작동합니다.

텍스트 방향 변경 및 레이아웃 미러링을 보려면 RTL 지원을 위한 프로젝트 리팩터링 작업도 해야 합니다. 영어의 경우 텍스트 방향을 변경하면 구두점만 텍스트 오른쪽에서 왼쪽으로 이동합니다. 예를 들어 'Hello World!'는 '!Hello World'가 됩니다. LTR 텍스트가 RTL로 전환되는 것을 보려면 앱에서 RTL 언어를 사용해야 합니다. 영어를 사용하고 테스트 목적으로 텍스트를 RTL로 전환하려면 의사 로캘을 사용하세요. 의사 로캘은 리팩터링 명령어 및 방향 속성과는 별도입니다.

방향 속성에 액세스하여 사용하려면 다음 단계를 따르세요.

  1. Layout Editor에서 텍스트 위젯을 선택합니다.
  2. Properties 창을 열고 사용하려는 RTL 속성을 검색합니다.

    속성 값을 설정하려면 다음 중 하나를 선택합니다.

    • firstStrong: 루트 뷰의 기본값입니다. 짙게 표시된 첫 번째 방향 문자로 단락 방향을 결정합니다. 짙게 표시된 방향 문자가 없는 경우 단락 방향은 뷰의 확인된 레이아웃 방향입니다.
    • anyRtl: 단락 방향에 짙게 표시된 RTL 문자가 포함된 경우 단락 방향은 RTL이고 짙게 표시된 LTR 문자가 포함된 경우에는 LTR입니다. 둘 다 없으면 단락 방향은 뷰의 확인된 레이아웃 방향입니다.
    • ltr: 단락 방향은 LTR입니다.
    • rtl: 단락 방향은 RTL입니다.
    • locale: 단락 방향이 시스템 로캘에 따라 지정됩니다.
    • inherit: 기본값입니다. 상위 요소에 설정된 방향을 사용합니다.
  3. 반전된 텍스트 및 레이아웃을 검토하려면 앱을 실행합니다.

의사 로캘

의사 로캘은 앱을 번역할 때 UI, 레이아웃, RTL 및 기타 번역 문제를 일으키는 언어의 특성을 띠도록 설계된 시뮬레이션 로캘입니다. 의사 로캘에서는 현지화 가능한 모든 메시지를 읽고 이해할 수 있도록 영어로 즉시 자동 번역합니다. 이를 통해 소스 코드에서 번역할 수 없는 메시지를 찾아낼 수 있습니다.

의사 로캘 사용법에 관한 자세한 내용은 유사 언어(pseudolocale)로 앱 테스트를 참고하세요.