2010-09-30 17 views
5

Tôi có cài đặt trong ứng dụng cho phép người dùng chọn nội địa hóa khác nhau (ngôn ngữ), tức là Chinese, German, etc.android: phản ánh thay đổi ngôn ngữ giao diện người dùng mà không cần tải lại/khởi động lại ứng dụng

Điều tôi muốn làm là khi người dùng lựa chọn, hãy cập nhật ngay lập tức bố cục bằng các chuỗi bằng ngôn ngữ hiện được chọn. Tất nhiên, tôi muốn thay đổi lang lan truyền cho TẤT CẢ các hoạt động hiện tại, mà không cần tải lại ứng dụng.

Tôi đã tìm thấy điều này (chưa thử), nhưng đã tự hỏi nếu có một cách làm sạch hơn.

http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html

Gracias

+0

Xin chào, Bạn có thấy thực tiễn tốt nhất cho việc này không? thx –

Trả lời

2

Tôi cũng đã issue.I này sử dụng mã dưới đây và sau đó nó đã thay đổi ngôn ngữ mà không làm mới hoạt động

public void setLocale(String lang) { 

    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    onConfigurationChanged(conf); 
    /*Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh);*/ 
} 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // refresh your views here 
    lblLang.setText(R.string.langselection); 
    super.onConfigurationChanged(newConfig); 
} 

Tôi hy vọng nó sẽ giúp bạn .. .....

+1

Được sao chép từ hầu hết các câu trả lời bình chọn trên liên kết sau. Ngay cả mã nhận xét. http://stackoverflow.com/questions/12908289/how-change-language-of-app-on-user-select-language –

0

Có một số bước bạn nên triển khai

Trước tiên, bạn cần phải thay đổi vị trí của cấu hình của bạn

Resources resources = context.getResources(); 

    Configuration configuration = resources.getConfiguration(); 
    configuration.locale = new Locale(language); 

    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 

Thứ hai, nếu bạn muốn thay đổi của bạn để áp dụng trực tiếp đến việc bố trí đó là có thể nhìn thấy, bạn có thể cập nhật các quan điểm trực tiếp hoặc bạn chỉ có thể gọi hoạt động .recreate() để khởi động lại hoạt động hiện tại.

Và bạn cũng phải duy trì các thay đổi của mình vì sau khi người dùng đóng ứng dụng của bạn thì bạn sẽ mất thay đổi ngôn ngữ.

tôi đã giải thích giải pháp chi tiết hơn về bài viết trên blog của tôi Change Language Programmatically in Android

Về cơ bản, bạn chỉ cần gọi LocaleHelper.onCreate() trên lớp ứng dụng của bạn và nếu bạn muốn thay đổi ngôn ngữ một cách nhanh chóng bạn có thể gọi LocaleHelper.setLocale()

Các vấn đề liên quan