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>"));
영어 로켈에서 모든 것이 완벽하게 작동합니다.
응용 프로그램이 다른 로캘 생각에있을 때 해당 문자열이 적절한 언어로 번역되었지만 해당 활동의 문자열이 영어로 계속 나타나고 나머지 문자열이 같은 문자열 파일에있는 경우에도 응용 프로그램에서 문자열을 잡아. 액티비티가 시작될 때까지 앱이 정상적으로 작동합니다. 액티비티가 시작된 후 액티비티가 종료 된 후 앱이 종료되고 다시 시작될 때까지 영어 로캘로 되돌아갑니다. 해당 액티비티가 열리지 않으면 응용 프로그램이 예상대로 작동합니다.
누군가이 문제를 일으킬 수있는 아이디어가 있습니까? 감사.
제 생각에는 앱이 장치에서 로케일을 검색 할 것이므로 프로그래밍 방식으로이를 방해 할 필요가 없습니다. 내 생각에 Locale.setDefault (...)를 사용하여이 작업을 망칠 것입니다.하지만 잘못된 것일 수 있습니다. – FWeigl
@Ascorbin 잘 장치 로캘에 관계없이 우리는 사용자가 선호하는 언어로 지원할 수있는 옵션을 제공하고 싶습니다. 나머지 앱은 정상적으로 작동합니다. – C0D3LIC1OU5
데이터 바인딩 구문을 사용하지 않을 때는 리소스를 적용하는 일반 규칙이 사용됩니다. SomeActivityBinding을 재사용 하시겠습니까? 아니면 일반적으로 로케일을 변경할 때 다시 활성화합니까? –