android 동적 로드 언어 xml 국제 화 실현

7678 단어 android
현지 화 된 자원 을 사용 하 다
기본 자원 만 드 는 방법
프로그램의 기본 텍스트 를 아래 위치 와 이름 의 파일 에 넣 습 니 다:res/values/strings.xml
res/values/strings.xml 에 있 는 텍스트 문자열 은 기본 언어 를 사용 해 야 합 니 다.이 언어 는 대부분의 프로그램 사용자 가 할 수 있 기 를 바 라 는 언어 입 니 다.
설정 해 야 할 기본 자원 에는 묘사 가능 한 자원 과 레이아웃 자원,애니메이션 자원 도 포함 되 어 있 습 니 다.
res/drawable/(이 디 렉 터 리 에는 최소한 하나의 그래 픽 파일 이 포함 되 어 있어 야 합 니 다.http://www.mianfeiyuanma.com/ ,Android 시작 에 사용 할 아이콘)
res/layout/(이 디 렉 터 리 는 기본 레이아웃 을 정의 하 는 XML 파일 을 저장 합 니 다)
res/anim/(필요 하 다 면 res/anim-폴 더 가 있 을 수 있 습 니 다)
res/xml/(필요 하 다 면 임의의 res/xml-폴 더 가 있 을 수 있 습 니 다)
res/raw/(필요 하 다 면 임의의 res/raw-폴 더 가 있 을 수 있 습 니 다)
알림:코드 에서 인 용 된 모든 Android 자원 을 검사 합 니 다.모든 자원 에 기본 자원 정의 가 있 는 지 확인 하고 기본 문자열 파일 의 완전 성 을 확보 해 야 합 니 다.로 컬 문자열 파일 은 모든 문자열 의 하위 집합 일 수 있 지만 기본 문자열 파일 은 모든 문자열 을 포함해 야 합 니 다.
선택 가능 한 자원 을 만 드 는 방법
현지 화 응용 프로그램의 대부분 작업 은 서로 다른 언어 에 선택 할 수 있 는 텍스트 를 제공 하 는 것 이다.어떤 경우 에는 선택 할 수 있 는 도형,소리,구조 와 다른 특정한 환경의 자원 도 제공 해 야 한다.
응용 프로그램 은 다양한 한정 문자 로 많은 res//디 렉 터 리 를 지정 할 수 있 습 니 다.특정 언어 나 언어 에 지역 의 조합 한정 자 를 사용 하면 서로 다른 언어 환경 에 선택 가능 한 자원 을 만 들 수 있 습 니 다.(자원 디 렉 터 리 의 이름 은'선택 가능 한 자원 제공'문서 에 소 개 된 이름 방안 이 어야 합 니 다.그렇지 않 으 면 컴 파일 되 지 않 습 니 다.)
예 를 들 면:
응용 프로그램의 기본 언어 가 영어 라 고 가정 합 니 다.또한 응용 프로그램의 텍스트 를 프랑스어 로 현지 화하 고 일본어 환경 에 도 적용 하고 싶다 고 가정 합 니 다(응용 프로그램의 제목 을 제외 하고).이 때 대체 가능 한 strings.xml 파일 을 세 개 만들어 야 합 니 다.각 파일 은 지정 한 자원 디 렉 터 리 에 저 장 됩 니 다.
1. res/values/strings.xml:프로그램 이 사용 하 는 모든 영어 텍스트 를 포함 하고 제목 의 이름 텍스트 를 포함 합 니 다.
2. res/values-fr/strings.xml:문자열 을 포함 하 는 모든 프랑스어 텍스트,제목 포함.
3. res/values-ja/strings.xml:제목 을 제외 한 모든 문자열 을 포함 하 는 일본어 텍스트 입 니 다.
자바 코드 에 R.string.title 자원 이 적용 되면 다음 과 같은 상황 이 발생 합 니 다.
1. 장치 가 프랑스어 이외 의 다른 임의의 언어 로 설정 되면 Android 는 res/values/strings.xml 파일 에서 제목 을 불 러 옵 니 다.
2. 장치 가 프랑스어 언어 환경 으로 설정 되면 Android 는 res/values-fr/strings.xml 파일 에서 제목 을 불 러 옵 니 다.
주의해 야 할 것 은 장치 가 일본어 환경 이 라면 Android 는 먼저 res/vaues-ja/strings.xml 파일 에서 제목 을 찾 습 니 다.그러나 이 파일 에는 제목 문자열 이 포함 되 어 있 지 않 기 때문에 Android 는 돌아 올 때 기본 제목,즉 res/values/strings.xml 문서 에서 제목 자원 을 불 러 옵 니 다.
Android 는 어떤 자원 을 우선 선택 합 니까?
장치 설정 과 일치 하 는 자원 파일 이 여러 개 있 으 면 Android 는 다음 규칙 을 사용 하여 어떤 자원 파일 을 사용 할 지 결정 합 니 다.그 중 일 부 는 자원 디 렉 터 리 이름 에 한정 부 를 지정 하고 언어 환경 은 거의 항상 우선적으로 선택해 야 한다.
예 를 들 면:
응용 프로그램 이 기본 적 인 그래 픽 집합 과 두 개의 다른 그래 픽 을 포함 하고 각 그룹 은 서로 다른 장치 에 최적화 되 었 다 고 가정 합 니 다.
1. res/drawable/:기본 그림 을 포함 합 니 다.
2. res/drawable-small-land-stylus/:필기 펜 입력 과 OVGA 저 밀도 가로 화면 장치 에 사용 할 그래 픽 을 포함 합 니 다.
3. res/drawable-ja/:일본어 환경 에 적용 되 는 도형 을 포함 합 니 다.
만약 응용 프로그램 이 일본어 환경 을 설정 한 장치 에서 실행 된다 면,장치 가 펜 을 사용 하 기 를 원 하고,화면 이 QVGA 의 저 밀도 화면 이 더 라 도,Android 는 res/drawable-ja/디 렉 터 리 에서 도형 을 불 러 옵 니 다.
예외:MCC(모 바 일 국가 코드)와 MNC(모 바 일 네트워크 코드)한정 문자 만 언어 환경 보다 우선 순위 가 높다.
예 를 들 면:
다음 장면 을 가정 합 니 다:
1. 응용 프로그램의 코드 호출 R.string.texta
2. 자원 을 이용 할 수 있 는 두 가지 가 있다.
res/values-mcc 404/strings.xml,등록 번호text 를 포함 합 니 다.a.영어 환경 에서 응용 프로그램의 기본 언어.
res/values-hi/strings.xml,text 포함a.인도 어 에 있 는 문자열.
3. 다음 설정 한 장치 에서 프로그램 실행:
SIM 카드 는 인도의 모 바 일 네트워크(MCC 404)에 연결 됐다.
언어 환경 이 인도 어(hi)로 설정 되 었 습 니 다.
장치 가 인도 어로 설정 되 어 있어 도 안 드 로 이 드 시스템 은 res/values-mcc 404/strings.xml(영어 자원)에서 text 를 불 러 옵 니 다.a。자원 을 선택 하 는 과정 에서 MCC 의 우선 순위 가 언어의 우선 순위 보다 높 기 때문이다.
선택 하 는 과정 이 항상 이 예 처럼 단 도 직 입적 이지 않다.자세 한 내용 은'안 드 로 이 드 응용 자원-방문 자원'섹 션 의'최 적 자원 을 어떻게 찾 고 일치 하 는 지'를 읽 으 십시오.모든 한정 부 호 는'Android 응용 자원-자원 제공'섹 션 의 표 2 에서 설명 되 었 습 니 다.
자바 코드 에서 자원 참조
응용 프로그램의 자바 코드 에서 자원 을 인용 하 는 문법 은 R.resource 입 니 다.type.resource_name 또는 android.R.resourcetype.resource_name(Android 시스템 자원).
현지 화 전략
모든 언어 환경 에서 작업 할 수 있 는 프로그램 을 설계 합 니 다.
프로그램 이 실행 중인 장치 의 모든 것 을 가정 할 수 없습니다.장 치 는 원 하지 않 는 하드웨어 가 있 거나 계획 외 에 테스트 되 지 않 은 언어 환경 을 설정 할 수 있 습 니 다.따라서 어떤 장치 에서 든 정상적으로 작 동 하거나 우호 적 인 실 패 를 할 수 있 도록 프로그램 설 계 를 해 야 한다.
중요:응용 프로그램 이 모든 기본 자원 집합 을 포함 하고 있 는 지 확인 합 니 다.
프로그램 에 필요 한 모든 그림 과 텍스트 를 포함 하 는 res/drawable/res/values/폴 더(폴 더 이름 에 다른 수식 이 없 음)를 확보 합 니 다.
프로그램 이 기본 자원 오류 라 도 지원 되 지 않 는 장치 환경 에서 실행 되 지 않 습 니 다.예 를 들 어 res/values/strings.xml 기본 파일 은 프로그램 에 필요 한 문자열 이 부족 할 수 있 습 니 다.프로그램 이 지원 하지 않 는 언어 환경 에서 실행 되 고 res/values/strings.xml 파일 을 불 러 오 려 고 할 때 오류 메시지 와 강제 닫 기 단 추 를 볼 수 있 습 니 다.Eclipse 와 같은 IDE 에 서 는 이러한 오 류 를 발견 하지 못 합 니 다.언어 환경 을 지원 하 는 장치 나 시 뮬 레이 터 에서 테스트 할 때 이 문 제 를 발견 하지 못 합 니 다.
디자인 이 유연 한 배치.
어떤 언어(예 를 들 어 긴 단 어 를 사용 하 는 독일어)에 적응 하기 위해 서 는 레이아웃 을 다시 배열 해 야 한다 면 이 언어 에 선택 할 수 있 는 레이아웃(예 를 들 어 res/layot-de/main.xml)을 만 들 수 있 습 니 다.그러나 이렇게 하면 응용 프로그램 을 더욱 유지 하기 어 려 울 것 이다.더 좋 은 방법 은 더욱 유연 한 단일 구 조 를 만 드 는 것 이다.
또 다른 전형 적 인 상황 은 언어의 차이 로 인해 구조 에 대한 다양한 수요 때문이다.예 를 들 어 프로그램 이 일본어 환경 에서 실 행 될 때 두 개의 이름 필드 를 포함 하 는 통신 록 형식 이 필요 하고 다른 언어 에서 실 행 될 때 세 개의 이름 필드 가 필요 합 니 다.이런 상황 을 처리 할 수 있 는 두 가지 방법 이 있다.
1. 세 필드 가 있 는 레이아웃 을 만 든 다음 언어 환경 을 기반 으로 프로 그래 밍 방법 으로 이름 필드 를 사용 하거나 사용 하지 않 습 니 다.
2. 주 레이아웃 을 만 듭 니 다.주 레이아웃 에는 다른 가 변 필드 를 포함 하 는 하위 레이아웃 이 있 습 니 다.두 번 째 레이아웃 은 서로 다른 언어 에 대해 서로 다른 설정 을 할 수 있 습 니 다.
불필요 한 자원 파일 과 텍스트 문자열 을 만 드 는 것 을 피하 십시오.
응용 프로그램 에서 모든 자원 에 특정한 언어 환경의 선택 가능 한 자원 을 만 들 수 없습니다.예 를 들 어 res/layout/main.xml 파일 에 정 의 된 레이아웃 은 모든 언어 환경 에서 작업 할 수 있 기 때문에 어떠한 언어 환경 에서 도 선택 할 수 있 는 레이아웃 자원 파일 을 만 들 필요 가 없습니다.
그리고 모든 문자열 에 선택 할 텍스트 를 만 들 필요 가 없 을 수도 있 습 니 다.예 를 들 어 다음 과 같은 상황 을 가정 합 니 다.
1. 응용 프로그램의 기본 언어 는 미국식 영어 다.프로그램 에서 사용 하 는 모든 문자열 은 미국식 영어 맞 춤 법 을 사용 합 니 다.res/values/strings.xml 파일 에 저 장 됩 니 다.
2. 일부 중요 한 단어 에 대해 서 는 영국 식 영어 맞 춤 법 을 제공 하고 싶 습 니 다.응용 프로그램 이 영국 장치 에서 실 행 될 때 선택 할 수 있 는 자원 을 사용 할 수 있 도록 합 니 다.
이 일 을 하려 면 res/values-en-RGB/strings.xml 라 는 작은 파일 을 만들어 야 합 니 다.미국 에서 실 행 될 때 와 다른 문자열 만 포함 되 어 있 습 니 다.나머지 모든 문자열 은 res/values/strings.xml 파일 에 정 의 된 기본 문자열 을 사용 합 니 다.
Android 의 Context 대상 을 사용 하여 수 동 으로 장 치 를 찾 는 언어 환경
Android 에서 제공 하 는 Context 대상 을 사용 하여 장치 의 언어 환경 을 찾 을 수 있 습 니 다.
String locale= context.getResources().getConfiguration().locale.getDisplayName();
synchronized static void
setDefault (
Locale  locale)
Overrides the default locale.
REFERENCES: http://hi.baidu.com/oxise3q/blog/item/c1eb290c030285cc08fa939d.html
 
 
REFERENCES; http://zhiwenweb.cn/jszx/bckf/ydkf/android/201110/30548.html
 
http://yueguc.iteye.com/blog/1125444
http://android.tgbus.com/Android/tutorial/201104/347992.shtml
http://hi.baidu.com/hsbd2005/item/ed700cce4cf7803e4494160e
 

좋은 웹페이지 즐겨찾기