2012-01-25 38 views
10

Tôi biết có hỗ trợ trong Android cho 18n một ứng dụng, nhưng tôi có thể cung cấp thông số cho chuỗi đó không? Trong Rails, tôi có thể làm điều gì đó như sau:Android: I18n với thông số

en: 
    hello: "Hello %{name}! You've got %{count} messages." 

t("hello", name: "Klaus", count: 5) 

Có điều gì tương tự trong Android hay tôi phải tự làm điều đó?

Trả lời

12

Để xây dựng trên Câu trả lời của Heiko, và cho thấy ví dụ cụ thể của bạn, nếu bạn muốn có nhiều hơn một chuỗi bạn cần phải đánh số chúng:

<string name="hello">Hello %1$s! You've got %2$d messages.</string> 

Bằng cách này bạn có thể chuyển đổi thứ tự của các chuỗi trong mỗi bản dịch. Sử dụng nó sẽ là:

String hello = getString(R.strings.hello, "Klaus", 5); 
+0

Theo tài liệu bạn chỉ cần số khi bạn cần sắp xếp lại các mục: _Argument index. Thông thường, mỗi định dạng định dạng tiêu thụ đối số tiếp theo để định dạng. Để bản địa hóa thuận tiện, có thể sắp xếp lại các đối số để chúng xuất hiện theo thứ tự khác trong đầu ra so với thứ tự mà chúng được cung cấp. Ví dụ, "% 4 $ s" định dạng đối số thứ tư (4 $) dưới dạng một chuỗi. Cũng có thể sử dụng lại một đối số với <. Ví dụ: định dạng ("% o% neworld

4

Bạn có thể làm tương tự

Trong strings.xml bạn có thể đặt

<string name="xyz">Do you really want to report [%s] as spammer?</string> 

và sau đó trong mã của bạn, bạn đặt

String foo = getString(R.strings.xyz,"Joe Doe"); 

Xem Context.getString()