2012-01-10 33 views
12

Mã sau đây là để thay đổi ngôn ngữ ứng dụng sang tiếng Tây Ban Nha đang hoạt động tốt ở một số thiết bị nhưng trong một số thiết bị, nó đang mở rộng (phóng to) chế độ xem trong ứng dụng. Có ai có một giải pháp?Android Localization

Configuration config = getResources().getConfiguration(); 

// change this to a different Locale than your device 
Locale locale = new Locale("es", "es_ES"); 
config.locale = locale; 
Locale.setDefault(locale); 
getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics()); 
Log.i("onSelected..", Locale.getDefault().getCountry()); 
startActivity(new Intent(getApplicationContext(), HomePage.class)); 
finish(); 

Trả lời

3

// bạn đang cập nhật cấu hình bằng cách sử dụng displaymetris

vì vậy nó sẽ làm thay đổi cấu hình của bạn

getBaseContext().getResources().updateConfiguration(config, getResources().getDisplayMetrics()); 
14

tôi sử dụng phương pháp này khi tôi phải sử dụng ngôn ngữ khác nhau:

1) Đặt int cho tất cả các ngôn ngữ được hỗ trợ. 2) Sử dụng chức năng cơ bản để đặt Ngôn ngữ mặc định. 3) Sử dụng chức năng để khởi chạy bằng các ngôn ngữ khác nhau.

Đây là ví dụ:

2)

public static void setDefaultLocale(Context context,String locale) 
{ 
    Locale appLoc = new Locale(locale); 
    Locale.setDefault(appLoc); 

    Configuration appConfig = new Configuration(); 
    appConfig.locale = appLoc; 

    context.getResources().updateConfiguration(appConfig, context.getResources() 
      .getDisplayMetrics()); 
} 

nơi miền địa phương theo các ISO 639-1

1)

private Language myLanguage; 
public enum Language 
{ 
    Null,Spanish,English,Catalan 
} 

3)

private void launchApplication(int language) 
{ 
    // Set Language 
    switch (language) 
    { 
     case 1: 
      // Español 
      setDefaultLocale(getApplicationContext(),"es"); 
      myLanguage = Language.Spanish; 
      break; 
     case 2: 
      // English 
      setDefaultLocale(getApplicationContext(),"en"); 
      myLanguage = Language.English; 
      break; 
     default: 
      // Catalan 
      setDefaultLocale(getApplicationContext(),"ca"); 
      myLanguage = Language.Catalan; 
      break; 
    } 

    Intent intent = new Intent(this, MyActivity.class); 
    startActivityForResult(intent, 2); 
    // Finish the Activity when return from the other Activity 
    finish(); 


} 

Sau đó, gọi launchApplication (int selected); và phải làm việc!

+0

Xin lỗi vì sự chậm trễ, nó hoạt động tốt. Cảm ơn u –

+2

@srinivasa rao ramisetty ... Sau đó đánh dấu câu trả lời là được chấp nhận. Nó sẽ rất hữu ích cho nhiều người. – 66CLSjY

+0

Chấp nhận câu trả lời là đẹp – vgonisanz

6

và bạn phải thêm 'ngôn ngữ' vào các thay đổi cấu hình cho hoạt động của mình trong tệp kê khai. Nếu không có điều này hoạt động của tôi bỏ qua những thay đổi miền địa phương đôi khi.