안 드 로 이 드 언어 전환 - 가로 세로 화면 전환 시 이상
일반 용 언어지역 의 형식 은 하나의 언어 를 나타 낸다. zh_CN, zh_TW.
각국 언어 약어:http://www.loc.gov/standards/iso639-2/php/code_list.php
국가 와 지역 약자:http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
eclipse 도구 로 다 중 언어 폴 더 만 들 기: http://www.cnblogs.com/wuyunan/archive/2009/09/16/1567960.html
전환 언어 는 주로 두 가지 로 나 뉜 다.
1. 시스템 의 현재 언어 환경 에 따라 자동 으로 프로그램 으로 언어 를 불 러 옵 니 다. 언어 에 대응 하 는 strings 파일 이 존재 하지 않 으 면 기본 언어 파일 을 불 러 옵 니 다.
이 방법 은 다른 코드 설정 이 필요 없습니다.
2. 프로그램 내부 에서 프로그램 을 선택 하여 언어 를 사용 하려 면 코드 에 의 해 제어 되 어야 한다.
프로그램 내 에서 언어 전환 을 실현 하 는 데 도 몇 가지 다른 실현 방식 이 있 습 니 다. 여기 서 제 가 사용 하 는 것 을 소개 하 겠 습 니 다.
직접 언어 전환 도구 클래스
public class LanguageSettingUtil {
//
private static LanguageSettingUtil instance;
private Context context;
// language
private String defaultLanguage;
// Locale
private Locale defaultLocale;
public final static String ENGLISH = "en";
public final static String CHINESE = "zh";
private LanguageSettingUtil(Context paramContext) {
//
Locale localLocale = Locale.getDefault();
this.defaultLocale = localLocale;
// defaultLanguage
String str = this.defaultLocale.getLanguage();
this.defaultLanguage = str;
this.context = paramContext;
}
//
public static LanguageSettingUtil get() {
if (instance == null)
throw new IllegalStateException(
"language setting not initialized yet");
return instance;
}
//
public static void init(Context paramContext) {
if (instance == null){
instance = new LanguageSettingUtil(paramContext);
}
}
// Configuration
private Configuration getUpdatedLocaleConfig(String paramString) {
Configuration localConfiguration = context.getResources().getConfiguration();
Locale localLocale = getLocale(paramString);
localConfiguration.locale = localLocale;
return localConfiguration;
}
// APP
public String getLanguage() {
SharedPreferences localSharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this.context);
// language , , ,
return localSharedPreferences.getString("language", this.defaultLanguage);
}
//
public Locale getLocale() {
String str = getLanguage();
return getLocale(str);
}
// Locale Locale
public Locale getLocale(String paramString) {
Locale localLocale = new Locale(paramString);
Locale.setDefault(localLocale);
return localLocale;
}
//
public void refreshLanguage()
{
String str = getLanguage();
Resources localResources = this.context.getResources();
if (!localResources.getConfiguration().locale.getLanguage().equals(str)) {
Configuration localConfiguration = getUpdatedLocaleConfig(str);
//A structure describing general information about a display, such as its size, density, and font scaling.
DisplayMetrics localDisplayMetrics = localResources
.getDisplayMetrics();
localResources.updateConfiguration(localConfiguration,
localDisplayMetrics);
}
}
//
public void saveLanguage(String paramString) {
PreferenceManager.getDefaultSharedPreferences(this.context).edit()
.putString("language", paramString).commit();
}
// SharedPreferences
public void saveSystemLanguage(){
PreferenceManager.getDefaultSharedPreferences(this.context).edit()
.putString("PreSysLanguage", this.defaultLanguage).commit();
}
public void checkSysChanged(String cuerSysLanguage){
//
if(!cuerSysLanguage.equals(PreferenceManager
.getDefaultSharedPreferences(this.context)
.getString("PreSysLanguage", "zh"))){
// this , defaultLanguage �? �?uerSysLanguage
this.defaultLanguage = cuerSysLanguage;
saveLanguage(cuerSysLanguage);
saveSystemLanguage();
}
}
}
응용 언어 초기 화, 응용 프로그램의 oncreat 에서 호출
LanguageSettingUtil.init(this);
languageSetting = LanguageSettingUtil.get();
//
curSysLanguage = Locale.getDefault().getLanguage();
languageSetting.checkSysChanged(curSysLanguage);
languageSetting.refreshLanguage();
응용 언어 설정, 코드 설정
//
String curSysLanguage = Locale.getDefault().getLanguage();
mOmApp.languageSetting.checkSysChanged(curSysLanguage);
if (arg1)
{
//
mOmApp.languageSetting.saveLanguage("en");
} else
{
//
mOmApp.languageSetting.saveLanguage("zh");
}
//
mOmApp.languageSetting.refreshLanguage();
당연히 대응 하 는 string 파일 을 설정 해 야 합 니 다.
권한 추가 잊 지 마 세 요.
지금까지 언어 설정 은 실 현 될 수 있 고 응용 프로그램 에 만 언어 를 설정 할 수 있 습 니 다. 그러나 디 버 깅 과정 에서 문제 가 발생 했 습 니 다. 가로 세로 화면 이 전환 되면 기본 언어 로 복 원 됩 니 다.나중에 필요 하 더 라 고요.
AndroidManifest.xml
모든 Activity 에 다음 을 추가 합 니 다. android:configChanges="locale"。(각각 검출 되 지 않 음)
애플 리 케 이 션 에 추가 하거나
@Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); languageSetting.refreshLanguage(); }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.