Android Plural Strings with multiple Parameters
Previous answer uses string concatenation which is incorrect from an i18n point of view. For the original string "%1$d hours and %2$d minutes remaining." using string concatenation would force the translation of "remaining" to the end which mightn't be appropriate for some languages.
My solution would be:
<resources> <string name="remaining">Time remaining: Hours:%1$d Minutes:%2$d.</string></resources>
Or perhaps with "Time remaining" as the heading.
This solution is mentioned in http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
It's often possible to avoid quantity strings by using quantity-neutral formulations such as "Books: 1"
getQuantityString has an overloaded version that takes a String id, the quantity and a varargs
of object that you could use to format your string. Even though seems possible to use plural, it sounds strange to me for time. You could use the helper methods contained in DateUtil, which are already localized and take care of singular/plural and then complete your string with the results of these helper methods. E.g. getRelativeTimeSpanString
<plurals name="number_of_emails"> <item quantity="one">%d email</item> <item quantity="other">%d emails</item></plurals><plurals name="number_of_messages"> <item quantity="one">%d message</item> <item quantity="other">%d messages</item></plurals>
and then you can use getQuantityString
to retrieve the two pieces and combine it in one.
strings.xml
<plurals name="lbl_items_selected"> <item quantity="one">%d item out of %d items Selected</item> <item quantity="other">%d items out of %d items Selected</item></plurals>
Kotlin File
resources.getQuantityString( R.plurals.lbl_items_selected, //plural from strings.xml file size, //quantity size, //var arg - first parameter allItemCount //var arg - second parameter)
this will return :
if size = 1 : 1 item out of 10(allItemCount) items selected
if size = 2 (or more) : 2(given size) items out of 10(allItemCount) items selected