2012-02-20 7 views
6

인터넷에 연결된 응용 프로그램이있어서 다른 언어로 많은 string.xml 개의 파일을 저장하고 싶지 않습니다.런타임에 현지화 리소스를 다운로드 할 수 있습니까?

내가 원하는 것은 :

  1. 응용 프로그램은 하나의 string.xml 영어 문자열이 포함되어 있습니다.
  2. 사용자가 시작할 때 - 사용자의 전화 로켈을보고 내 서버에 필요한 언어 파일을 요청합니다. (리소스 키는 같을 것입니다.)
  3. 새로운 리소스 파일이 오면, 모든 인터페이스는 새로운 파일로 동작해야합니다.

질문은 기존의 파일을 변경하거나 런타임에 새로운 string.xml 파일을 추가하는 방법입니까?

답변

2

당신은 분명히 변경, 다운로드 또는 실행

당신이 위치를 저장할 경우에 strings.xml를 제거 할 수 없습니다, 당신은 저장 번역에 SQLite는 스토리지를 사용해야합니다. 유사한

:
How to modify strings.xml file at runtime
run time modification of strings.xml

+0

이 솔루션의 문제점 - xml 파일에서 데이터베이스를 참조 할 수없고 standart 'Context.getString()'메소드를 사용할 수 없습니다. – Jin35

+0

네, 해결책의 어두운 부분이지만, 제공된 솔루션을 사용하고자하는 한 차이점은 없습니다. 이것은 시스템과는 분명히 구분되어 있으며 구현하기가 더 쉽고 경량입니다. –

+0

그리고 리소스 리소스에'values-de' 폴더를 만들고 거기에 새로운 xml 파일을 넣을 수 있습니까? – Jin35

2

지금 내가 유일한 해결책 볼 수 있습니다

  1. 이 (string.xml 또는 다운로드 한 자원에서) 나에게 필요한 자원을 반환합니다 일부 "현지화 프록시"를 만들기를
  2. 모두 getString()getText()을 자신의 방법으로 바꿉니다. getStringFromLocalization
  3. TextView, Button 및 일부 다른보기를 사용자 정의로 덮어 쓰고 init 및 setText 메소드를 변경하십시오.
+0

'setText (String)'메서드를 제외하고 모두 괜찮습니다. ** final ** 그래서 재정의 할 수 없습니다. –

0

리소스 파일을 사용하여 표준 리소스/언어를 재정의하면 시간이 절약되고 사용자 지정보다 성능이 떨어집니다. 이럴 필요가있을 때만하십시오.

관련 문제