2013-07-03 16 views
39

Tôi đang sử dụng Plurals để đơn giản hóa mã của mình. ví dụ, I sử dụng để cóLấy một chuỗi từ số nhiều để sử dụng trong XML?

<string name="cat">Cat</string> 
<string name="cats">Cats</string> 

Sử dụng Số nhiều thay vì nhiều dây, bây giờ tôi có

<plurals name="cats"> 
    <item quantity="one">Cat</item> 
    <item quantity="other">Cats</item> 
</plurals> 

Tuy nhiên, tôi sử dụng để lấy dây để sử dụng như tiêu đề hoặc tóm tắt trong XML của tôi. ví dụ:

android:title="@string/cats" 

Đã xóa chuỗi đó có lợi cho số nhiều, bây giờ tôi không chắc chắn cách lấy chuỗi của tôi từ XML. Tôi đã thực hiện một nỗ lực ngây thơ với

android:title="@plurals/cats" 

nhưng điều này chỉ mang lại cho tôi @1234567890 thay vì Cats (hoặc Cat).

Bất cứ ai cũng biết nếu có thể truy xuất chuỗi từ số nhiều từ XML?

+0

https://developer.android.com/guide/topics/resources/string-resource.html#Plurals –

+1

Fucntion số nhiều không phải là để mô phỏng số nhiều Engish; nhưng để hỗ trợ bất kỳ quy tắc thần kinh nào của ngôn ngữ. Tiếng Pháp sẽ là "0 con mèo" và "con mèo 21" của Nga. Đừng quên bao gồm% d để số có thể được dịch trong bản dịch; Nếu cần thiết. – Liggliluff

Trả lời

47

Bạn phải thiết lập nó theo mã:

...setText(yourContext.getResources().getQuantityString(R.plurals.cats, catsCountVar)); 
+0

Tôi hy vọng đây không phải là lựa chọn duy nhất, kể từ đó tôi sẽ cần phải tìm nhiều quan điểm tại thời gian chạy mà tôi nếu không sẽ không dành thời gian CPU trên. Nếu không có ai khác trả lời trong vòng một vài ngày thì tôi sẽ chấp nhận câu trả lời này về cơ bản là "không thể từ XML" – Duke

+2

Tại đây, tài liệu: http://developer.android.com/guide/topics/resources/string-resource.html# Plurals – gwa

+0

Tôi không thực sự quan tâm đến (hiển thị) một số - Tôi chỉ muốn có một dạng số ít và số nhiều của từ, trong khi hỗ trợ nhiều ngôn ngữ. Bởi vì việc tìm kiếm các view (theo id) là đắt tiền, tôi không muốn thực hiện một (giây) qua mỗi khung nhìn trong danh sách/menu/etc trong mã để thiết lập chuỗi hiển thị, mặc định Android đã làm cho tôi khi (các) lượt xem được tăng/tạo đầu tiên.Với 2 chuỗi thay vì một nguồn tài nguyên số nhiều, tôi không cần phải làm bất cứ điều gì trong mã của tôi trên các quan điểm này. (Vì vậy, từ những gì tôi thấy, Plurals sẽ làm hại hiệu suất của tôi để đạt được bảo trì tối thiểu.) – Duke

2

Bạn có thể có những lợi ích thời gian chạy của số nhiều và lợi ích tĩnh của nguồn chuỗi bằng cách để lại nguồn chuỗi của bạn mà họ đang có và đề cập đến chúng trong bạn tài nguyên số nhiều.

Từ https://developer.android.com/guide/topics/resources/string-resource.html#Plurals (được thêm vào).

<item>

Một chuỗi số nhiều hoặc số ít. Giá trị có thể là tham chiếu đến một tài nguyên chuỗi khác. Phải là con của một phần tử. Cẩn thận rằng bạn phải thoát khỏi dấu nháy đơn và dấu ngoặc kép. Xem Định dạng và Kiểu dáng bên dưới để biết thông tin về cách định dạng và định dạng đúng chuỗi của bạn. Ví dụ:

<string name="cat">Cat</string> 
<string name="cats">Cats</string> 

<plurals name="cats"> 
    <item quantity="one">@string/cat</item> 
    <item quantity="other">@string/cats</item> 
</plurals> 

Bây giờ bạn có thể sử dụng android:title="@string/cats" trong các tập tin XML và cũng sử dụng

getQuantityString(R.plurals.cats, numberOfCats) 

khi chạy.

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