2013-09-05 39 views
5

Đối với ví dụ như có ứng dụng mà cung cấp hỗ trợ đa ngôn ngữ, trong hoạt động của tôi/UI, tôi gọi getResources().getString(R.string.hello) mà tồn tại trong strings.xml, chẳng hạn rằngLàm thế nào getResources(). GetString() hoạt động android

values\strings.xml 
values-ru\strings.xml 

Bây giờ, khi gọi số getResources().getString(R.string.hello) và cần truy cập chuỗi dựa trên ngôn ngữ hệ thống, vậy một chuỗi sẽ nhận được chuỗi từ values\strings.xml HOẶC values-ru\strings.xml?

HOẶC

sao người ta cần phải thay đổi ngôn ngữ ứng dụng của tôi dựa trên hệ thống locale (giữ ứng dụng miền địa phương tương tự như hệ thống locale) và sau đó lấy giá trị từ getString(), một cái gì đó gợi ý ở bên dưới liên kết

  1. get-string-from-default-locale-using-string-in-specific-locale

  2. how-to-get-string-from-different-locales-in-android

Tôi đã tìm kiếm các liên kết khác nhau, nhưng không thể tìm thấy giải pháp

+0

dựa trên ngôn ngữ hệ thống, bạn sẽ nhận được từ các giá trị \ strings.xml tệp –

Trả lời

8
MyProject/ 
    res/ 
     values/ 
      strings.xml 
     values-es/ 
      strings.xml 
     values-fr/ 
      strings.xml 

Thêm các giá trị chuỗi cho mỗi miền địa phương vào các tập tin thích hợp.

Khi chạy, hệ thống Android sử dụng bộ tài nguyên chuỗi thích hợp dựa trên ngôn ngữ hiện được đặt cho thiết bị của người dùng.

Đối với thông tin về Phối với Tài

http://developer.android.com/guide/topics/resources/localization.html

More info @

http://developer.android.com/training/basics/supporting-devices/languages.html

Ngoài ra kiểm tra các liên kết dưới đây

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/android/content/ContextWrapper.java/

86  @Override 
87  public Resources getResources() 
88  { 
89   return mBase.getResources(); 
90  } 

Trả về phiên bản Tài nguyên cho gói ứng dụng của bạn.

332 
333  public final String getString(int resId) { 
334   return getResources().getString(resId); 
335  } 

Trả về chuỗi được bản địa hóa từ bảng chuỗi mặc định của gói ứng dụng. Tham số: resId Id tài nguyên cho chuỗi

+0

cảm ơn, cho mô tả dài, thực sự tôi đã xem xét nhưng không thể hiểu được. –

+0

@AkhilJain vui mừng nếu tôi có thể giúp đỡ. Tôi nghĩ doc có tất cả thông tin bạn cần. http://developer.android.com/guide/topics/resources/localization.html. Phần nào bạn không hiểu? – Raghunandan

+0

tôi đã mở mã grep cho lớp Tài nguyên, nhưng không thể hiểu được vì mã dường như nằm rải rác ngay từ cái nhìn đầu tiên, dành nhiều thời gian hơn dường như đào hố sâu hơn –

1

Nó được thực hiện tự động. Theo tiêu chuẩn, ngôn ngữ đang bật nằm trong số values\strings.xml nhưng nếu thiết bị của người dùng có ngôn ngữ được đặt thành hủy tự động, thì ngôn ngữ đó sẽ là một trên values-ru\strings.xml và cứ như vậy cho tất cả các ngôn ngữ bạn đã đặt vào tài nguyên của mình.

Bạn có thể đọc thêm về chủ đề này trong here.

Khi chạy, hệ thống Android sử dụng bộ tài nguyên chuỗi thích hợp dựa trên ngôn ngữ hiện được đặt cho thiết bị của người dùng.

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