Skip to content

Commit be4a896

Browse files
authored
Merge pull request #17184 from wordpress-mobile/fix/prompts-answers-localization
Fix prompts answers string localization
2 parents 7b60953 + 2db91b4 commit be4a896

File tree

7 files changed

+35
-14
lines changed

7 files changed

+35
-14
lines changed

WordPress/src/main/java/org/wordpress/android/ui/bloggingprompts/onboarding/BloggingPromptsOnboardingUiStateMapper.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ class BloggingPromptsOnboardingUiStateMapper @Inject constructor() {
2727
)
2828

2929
val trailingLabel = UiStringPluralRes(
30-
R.plurals.my_site_blogging_prompt_card_number_of_answers,
30+
0,
31+
R.string.my_site_blogging_prompt_card_number_of_answers_one,
32+
R.string.my_site_blogging_prompt_card_number_of_answers_other,
3133
dummyRespondents.size
3234
)
3335

WordPress/src/main/java/org/wordpress/android/ui/mysite/cards/dashboard/bloggingprompts/BloggingPromptCardBuilder.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import javax.inject.Inject
1313
class BloggingPromptCardBuilder @Inject constructor() {
1414
fun build(params: BloggingPromptCardBuilderParams) = params.bloggingPrompt?.let {
1515
val trailingLabel = UiStringPluralRes(
16-
R.plurals.my_site_blogging_prompt_card_number_of_answers,
16+
0,
17+
R.string.my_site_blogging_prompt_card_number_of_answers_one,
18+
R.string.my_site_blogging_prompt_card_number_of_answers_other,
1719
params.bloggingPrompt.respondentsCount
1820
)
1921

WordPress/src/main/java/org/wordpress/android/ui/utils/UiHelpers.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import org.wordpress.android.ui.utils.UiString.UiStringText
1919
import org.wordpress.android.util.AniUtils
2020
import org.wordpress.android.util.AniUtils.Duration
2121
import org.wordpress.android.util.DisplayUtils
22+
import org.wordpress.android.util.StringUtils
2223
import javax.inject.Inject
2324

2425
class UiHelpers @Inject constructor() {
@@ -41,9 +42,14 @@ class UiHelpers @Inject constructor() {
4142
)
4243
}.toTypedArray()
4344
)
44-
is UiStringPluralRes -> context.resources.getQuantityString(
45-
uiString.pluralsRes,
46-
uiString.count,
45+
// Current localization process does not support <plurals> resource strings,
46+
// so we need to use multiple string resources. Switch to @PluralRes in UiStringPluralRes and
47+
// use context.resources.getQuantityString here when <plurals> is supported by localization process.
48+
is UiStringPluralRes -> StringUtils.getQuantityString(
49+
context,
50+
uiString.zeroRes,
51+
uiString.oneRes,
52+
uiString.otherRes,
4753
uiString.count
4854
)
4955
}

WordPress/src/main/java/org/wordpress/android/ui/utils/UiString.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.wordpress.android.ui.utils
22

3-
import androidx.annotation.PluralsRes
43
import androidx.annotation.StringRes
54

65
/**
@@ -11,5 +10,12 @@ sealed class UiString {
1110
data class UiStringText(val text: CharSequence) : UiString()
1211
data class UiStringRes(@StringRes val stringRes: Int) : UiString()
1312
data class UiStringResWithParams(@StringRes val stringRes: Int, val params: List<UiString>) : UiString()
14-
data class UiStringPluralRes(@PluralsRes val pluralsRes: Int, val count: Int) : UiString()
13+
// Current localization process does not support <plurals> resource strings,
14+
// so we need to use multiple string resources. Switch to @PluralsRes when it is supported by localization process.
15+
data class UiStringPluralRes(
16+
@StringRes val zeroRes: Int,
17+
@StringRes val oneRes: Int,
18+
@StringRes val otherRes: Int,
19+
val count: Int
20+
) : UiString()
1521
}

WordPress/src/main/res/values/strings.xml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2324,10 +2324,8 @@
23242324
<string name="my_site_blogging_prompt_card_attribution_dayone">From <b>DayOne</b></string>
23252325
<string name="my_site_blogging_prompt_card_menu_learn_more">Learn more</string>
23262326
<string name="my_site_blogging_prompt_card_skipped_snackbar">Skipped today\'s blogging prompt</string>
2327-
<plurals name="my_site_blogging_prompt_card_number_of_answers">
2328-
<item quantity="one">%d answer</item>
2329-
<item quantity="other">%d answers</item>
2330-
</plurals>
2327+
<string name="my_site_blogging_prompt_card_number_of_answers_one">1 answer</string>
2328+
<string name="my_site_blogging_prompt_card_number_of_answers_other">%d answers</string>
23312329

23322330
<!-- site picker -->
23332331
<string name="site_picker_title">Choose site</string>

WordPress/src/test/java/org/wordpress/android/ui/bloggingprompts/onboarding/BloggingPromptsOnboardingUiStateMapperTest.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ class BloggingPromptsOnboardingUiStateMapperTest {
1919
AvatarItem(""),
2020
AvatarItem(""),
2121
TrailingLabelTextItem(
22-
UiStringPluralRes(R.plurals.my_site_blogging_prompt_card_number_of_answers, 3),
22+
UiStringPluralRes(
23+
0,
24+
R.string.my_site_blogging_prompt_card_number_of_answers_one,
25+
R.string.my_site_blogging_prompt_card_number_of_answers_other,
26+
3
27+
),
2328
R.attr.colorOnSurface
2429
)
2530
)

WordPress/src/test/java/org/wordpress/android/ui/mysite/cards/dashboard/bloggingprompts/BloggingPromptCardBuilderTest.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import org.junit.Test
66
import org.junit.runner.RunWith
77
import org.mockito.junit.MockitoJUnitRunner
88
import org.wordpress.android.BaseUnitTest
9+
import org.wordpress.android.R
910
import org.wordpress.android.R.attr
10-
import org.wordpress.android.R.plurals
1111
import org.wordpress.android.fluxc.model.bloggingprompts.BloggingPromptModel
1212
import org.wordpress.android.ui.avatars.TrainOfAvatarsItem.AvatarItem
1313
import org.wordpress.android.ui.avatars.TrainOfAvatarsItem.TrailingLabelTextItem
@@ -26,7 +26,9 @@ private val RESPONDENTS_IN_CARD = listOf(
2626
AvatarItem("http://avatar3.url"),
2727
TrailingLabelTextItem(
2828
UiStringPluralRes(
29-
plurals.my_site_blogging_prompt_card_number_of_answers,
29+
0,
30+
R.string.my_site_blogging_prompt_card_number_of_answers_one,
31+
R.string.my_site_blogging_prompt_card_number_of_answers_other,
3032
NUMBER_OF_RESPONDENTS
3133
), attr.colorOnSurface
3234
)

0 commit comments

Comments
 (0)