2012-03-13 38 views
5

Tôi đang cố gắng biết liệu có thể thay đổi ngôn ngữ hệ điều hành Android mặc định sang ngôn ngữ khác hay không. Ví dụ: ngôn ngữ không có trong cài đặt: cách đặt ngôn ngữ của thiết bị thành ngôn ngữ lập trình.Android: Có cách nào để thay đổi ngôn ngữ mặc định của android sang ngôn ngữ mới không?

+2

Bạn đang nói về việc này * trong mã *? –

+0

@ John Skeet: vui lòng xem câu hỏi được cập nhật của tôi. Có, tôi cần phải làm điều đó theo chương trình. –

+0

Bạn đang tìm kiếm phát triển ứng dụng android trong các nền tảng khác ngoại trừ java? –

Trả lời

12

Sử dụng này để thay đổi ngôn ngữ bằng cách programmatically--

Locale locale = new Locale("en_US"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
context.getApplicationContext().getResources().updateConfiguration(config, null); 

Viết countrycode của ngôn ngữ thay cho "en_US" bất cứ ngôn ngữ bạn muốn ... như cho tiếng Nhật - "ja_JP" Đối với tiếng Ả Rập - "ar" hoặc kiểm tra liên kết này cho mã quốc gia--

http://code.google.com/apis/igoogle/docs/i18n.html

Và chắc một thư mục trong res/values-ja cho japanese hoặc res/values-ar cho arabic ..

Và chắc string.xml tập tin Và đặt ngôn ngữ bất cứ điều gì bạn muốn trên bố trí của bạn .. Nó sẽ lấy ngôn ngữ mặc định từ thư mục giá trị nếu không bạn muốn nó theo cách thủ công thì nó sẽ lấy từ thư mục bên ngoài của bạn giá trị-ar, v.v ...

Ví dụ về res/values-ar cho arabic - -

<?xml version="1.0" encoding="UTF-8"?> 
    <resources> 
    <string name="spinner_label">تصفية حسب</string> 
    <string name="app_name">2011 فرق</string> 
    <string name="search">بحث :</string> 
</resource> 

Hy vọng Nó sẽ giúp bạn ..

+0

Câu trả lời hay Hulk sir. Tôi đang sử dụng cùng một mã trong projcet của tôi (Diff): P –

+0

Nơi để đặt mã này Local.setDefault? trong MainActivity.java? –

+0

Bạn cần phải đặt điều này trong onCreate() của mọi hoạt động.Nếu không, nó có thể bị hệ thống ghi đè - ví dụ khi bạn xoay thiết bị của mình thành ngang và hoạt động của bạn sẽ được tạo lại với cấu hình mới (do hệ thống cung cấp). –

3

bạn có thể thay đổi ngôn ngữ thành bất kỳ thứ gì bạn muốn và hệ thống cần hỗ trợ nó.

thử điều này:

public static void changeLocale(Locale locale) { 
    try { 
     Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative"); 

     Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative); 

     Object config = am.getClass().getMethod("getConfiguration").invoke(am); 
     config.getClass().getDeclaredField("locale").set(config, locale); 
     config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true); 

     am.getClass().getMethod("updateConfiguration", android.content.res.Configuration.class).invoke(am, config); 
     Log.i(LOG_TAG, "send change locale request"); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "change locale error:", e); 
    } 
} 
+0

Mã này có thay đổi ngôn ngữ mặc định sang ngôn ngữ mới khác không? –

+1

có, miền địa phương có thể giống như 'Locale locale = new Locale (" my ")', nhưng thiết bị của bạn cần hỗ trợ ngôn ngữ này nếu không hệ thống sẽ không thay đổi ngôn ngữ. – idiottiger

+0

+1 cho thông tin hữu ích này. Nhưng điều gì sẽ xảy ra nếu thiết bị không có ngôn ngữ tiếng Anh được xây dựng sẵn và tôi phải làm cho nó hoạt động trong tất cả các thiết bị? –

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