8

TLDataBinding이 활동을 지역화하는 것을 방해 할 수 있습니까?

저는 다양한 언어를 지원하는 앱을 보유하고 있습니다. 하나의 활동은 모든 일반적인 지역화 방법을 사용함에도 불구하고 번역되지 않습니다. DataBinding을 완전히 활용하는 앱의 유일한 활동입니다.

전체 설명

나는 DataBinding를 사용하는 Activity 있습니다. 따라서 기본적으로 해당 활동의 전체 XML 레이아웃은 <layout> 태그 안에 포함됩니다.

... android:text="@string/<name of a string>" ...

우리는 함께 사용자에게 제공 : 텍스트이 방법으로 설정 한 XML에서 TextViews의 숫자가있다

SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity);

: 이것은 내가보기를 팽창하고 바인딩을 얻는 방법이다 사전 정의 된 언어 옵션 및 앱 로케일 설정

Locale.setDefault(new Locale("<language name>"));

영어 로켈에서 모든 것이 완벽하게 작동합니다.

응용 프로그램이 다른 로캘 생각에있을 때 해당 문자열이 적절한 언어로 번역되었지만 해당 활동의 문자열이 영어로 계속 나타나고 나머지 문자열이 같은 문자열 파일에있는 경우에도 응용 프로그램에서 문자열을 잡아. 액티비티가 시작될 때까지 앱이 정상적으로 작동합니다. 액티비티가 시작된 후 액티비티가 종료 된 후 앱이 종료되고 다시 시작될 때까지 영어 로캘로 되돌아갑니다. 해당 액티비티가 열리지 않으면 응용 프로그램이 예상대로 작동합니다.

누군가이 문제를 일으킬 수있는 아이디어가 있습니까? 감사.

+1

제 생각에는 앱이 장치에서 로케일을 검색 할 것이므로 프로그래밍 방식으로이를 방해 할 필요가 없습니다. 내 생각에 Locale.setDefault (...)를 사용하여이 작업을 망칠 것입니다.하지만 잘못된 것일 수 있습니다. – FWeigl

+0

@Ascorbin 잘 장치 로캘에 관계없이 우리는 사용자가 선호하는 언어로 지원할 수있는 옵션을 제공하고 싶습니다. 나머지 앱은 정상적으로 작동합니다. – C0D3LIC1OU5

+0

데이터 바인딩 구문을 사용하지 않을 때는 리소스를 적용하는 일반 규칙이 사용됩니다. SomeActivityBinding을 재사용 하시겠습니까? 아니면 일반적으로 로케일을 변경할 때 다시 활성화합니까? –

답변

-2

무슨 일이 일어나고 있는지 알아 냈습니다. ViewBinding과는 아무런 관련이 없습니다. 해당 활동은 가로 모드에서 시작됩니다. 이는 어떤 이유로 앱 로캘을 재설정합니다. This answer로 해결할 수있었습니다.